You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
after research i found out how it works, but logic is incorrect.
when having an active session, the language of that session is beeing used.
the guest url is clearly from guest and always should be displayed in connected client's language.
not userlanguage from the running session
when having an active session, the language of that session is beeing used.
the guest url is clearly from guest and always should be displayed in connected client's language
Do you have an indication on where to look for the solution?
What is your setting for match ip in your ipconfig.php?
Is it same problem in incognito browser window?
Bug story: As a client receiving an invoice via the guest URL, I want the guest view to be displayed in my language (as configured on my client record), so that I see field labels like "BTW" (Dutch for VAT) instead of the English "VAT".
v2 context: v2 uses Laravel's App::setLocale() for translations. The guest invoice/quote URL is an unauthenticated Livewire page served from the company panel. The client's locale should be read from Relation::locale (or Contact::locale) and set for the duration of that request.
Acceptance Criteria:
The Relation (client) model has a locale field (e.g. nl, de, fr; falls back to the company's default locale).
When the guest invoice URL is loaded, the middleware (or the Livewire page's mount()) calls App::setLocale($invoice->customer->locale ?? $company->locale).
All trans('ip.*') calls in the guest blade render in the client's locale.
If the client has no locale set, falls back to the company locale, then config('app.locale').
Implementation:
Add locale column (nullable, 5-char) to relations table.
Add locale field to the client edit form.
In the guest invoice Livewire page mount(): App::setLocale($this->invoice->customer->locale ?? $this->company->locale ?? config('app.locale')).
Ensure translation files for target locales exist under Modules/Core/Resources/lang/{locale}/.
Added to support future implementation of this request. The issue body is unchanged.
There is no guest-facing invoice/quote URL in v2 today: Modules/Invoices/routes/web.php and Modules/Quotes/routes/web.php are both empty (just <?php), so there's no route to reproduce the reported bug against yet. The only related code is a dormant legacy class, Modules\Core\Support\HTML (HTML::invoice() / HTML::quote()), which does call app()->setLocale($invoice->customer->language) / app()->setLocale($quote->customer->language) — so locale-switching intent exists — but it's unused anywhere (no controller calls it) and references relations/properties that don't match the current models ($invoice->companyProfile — Invoice only has company(), not companyProfile() — and invoice_templates.*/templates.invoices.default Blade views that don't exist in Modules/Invoices/resources/views, which only has .gitkeep). Modules\Clients\Models\Relation does have a language column, so the data this needs is present on the client. This issue can't be reproduced against current code; it describes the desired behaviour for guest routes that need to be built first.
Edge cases worth covering: the guest quote view has the same gap as the guest invoice view and should be fixed together (both routes are currently unbuilt); and restoring the app locale after the guest request finishes, so a subsequent authenticated request in the same process/queue worker isn't left on the client's language.
Activity
wendelinux commentedon Jan 29, 2024
after research i found out how it works, but logic is incorrect.
when having an active session, the language of that session is beeing used.
the guest url is clearly from guest and always should be displayed in connected client's language.
not userlanguage from the running session
nielsdrost7 commentedon Jan 29, 2024
Do you have an indication on where to look for the solution?
What is your setting for
match ipin your ipconfig.php?Is it same problem in incognito browser window?
So admin in main browser and guest in incognito?
nielsdrost7 commentedon Aug 7, 2025
I'm moving this to the List of issues to take on for version 2.x
nielsdrost7 commentedon Jun 13, 2026
Planning Note — v2 Implementation
Bug story: As a client receiving an invoice via the guest URL, I want the guest view to be displayed in my language (as configured on my client record), so that I see field labels like "BTW" (Dutch for VAT) instead of the English "VAT".
v2 context: v2 uses Laravel's
App::setLocale()for translations. The guest invoice/quote URL is an unauthenticated Livewire page served from the company panel. The client's locale should be read fromRelation::locale(orContact::locale) and set for the duration of that request.Acceptance Criteria:
Relation(client) model has alocalefield (e.g.nl,de,fr; falls back to the company's default locale).mount()) callsApp::setLocale($invoice->customer->locale ?? $company->locale).trans('ip.*')calls in the guest blade render in the client's locale.config('app.locale').Implementation:
localecolumn (nullable, 5-char) torelationstable.localefield to the client edit form.mount():App::setLocale($this->invoice->customer->locale ?? $this->company->locale ?? config('app.locale')).Modules/Core/Resources/lang/{locale}/.Test Scenarios (PHPUnit + Livewire):
Generated by Claude Code
[-]translations in guest url[/-][+][Core]: Guest URL — translation support[/+]nielsdrost7 commentedon Jul 16, 2026
Test Suggestions
Added to support future implementation of this request. The issue body is unchanged.
There is no guest-facing invoice/quote URL in v2 today:
Modules/Invoices/routes/web.phpandModules/Quotes/routes/web.phpare both empty (just<?php), so there's no route to reproduce the reported bug against yet. The only related code is a dormant legacy class,Modules\Core\Support\HTML(HTML::invoice()/HTML::quote()), which does callapp()->setLocale($invoice->customer->language)/app()->setLocale($quote->customer->language)— so locale-switching intent exists — but it's unused anywhere (no controller calls it) and references relations/properties that don't match the current models ($invoice->companyProfile—Invoiceonly hascompany(), notcompanyProfile()— andinvoice_templates.*/templates.invoices.defaultBlade views that don't exist inModules/Invoices/resources/views, which only has.gitkeep).Modules\Clients\Models\Relationdoes have alanguagecolumn, so the data this needs is present on the client. This issue can't be reproduced against current code; it describes the desired behaviour for guest routes that need to be built first.it_sets_the_app_locale_from_the_clients_language_when_rendering_a_guest_invoice()it_translates_vat_id_short_using_the_clients_language_not_the_app_default()it_falls_back_to_the_company_default_language_when_the_client_has_none_set()Edge cases worth covering: the guest quote view has the same gap as the guest invoice view and should be fixed together (both routes are currently unbuilt); and restoring the app locale after the guest request finishes, so a subsequent authenticated request in the same process/queue worker isn't left on the client's language.