Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mstdmstd's avatar

Why livewire 3.5 app lost locale redirecting to other page with wire:navigate attribute?

In laravel 11 / livewire 3.5 app in navbar I have several links with wire:navigate attribute

<ul class="flex flex-col font-medium p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:space-x-8 rtl:space-x-reverse md:flex-row md:mt-0 md:border-0 md:bg-white dark:bg-gray-800 md:dark:bg-gray-900 dark:border-gray-700  capitalize-text">
    <li>
        <a href="{{  route('home') }}" wire:navigate
           class="block py-2 px-3 text-white bg-blue-700 rounded md:bg-transparent md:text-blue-700 md:p-0 md:dark:text-blue-500  capitalize-text"
           aria-current="page"> {{ __('home.home') }}</a>
    </li>
    <li>
        <a href="{{  route('partnership_order.index') }}" wire:navigate
           class="block py-2 px-3 text-gray-900 rounded hover:bg-gray-100 md:hover:bg-transparent md:hover:text-blue-700 md:p-0 dark:text-white md:dark:hover:text-blue-500 dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700  capitalize-text">{{ __('home.partnership_order') }} </a>
    </li>


</ul>

both these page are multilanguage with locale switcher, but navigating from one to other current locale is lost, if it is not default "en".

In config/app.php I have :

'locale' => env('APP_LOCALE', 'en'),

'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),

'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),

in .env file there is no any of these parameters defined. So 'en' is default.

In routes/web.php :

Route::get('/', [HomeController::Class, 'index'])->name('home');
...
Route::get('/partnership-order', [PartnershipOrderController::class, 'index'])->name('partnership_order.index');

blade file of PartnershipOrderController controller has :

@extends('layouts.frontend')
@section('content')

resources/views/partnership/index.blade.php
<livewire:counter />

<livewire:partnership-order-dialog />

@stop

and in app/Livewire/PartnershipOrderDialog.php:

class PartnershipOrderDialog extends Component
{
    use WireUiActions;
    use AppCommonTrait;

    #[Session]
    public ?string $currentLocale;

    public ?string $interestTypeContent;

    public function boot() {
        $this->currentLocale = app()->getLocale();
        \Log::info(varDump($this->currentLocale, ' -1 localeChanged $this->currentLocale::'));
        // THIS IS ALWAYS "en" - so current locale is lost.
    }

How to pass this locale to other controller with livewire component ?

0 likes
2 replies
mstdmstd's avatar

Still search for a decison. How do you use multi locale in laravel 11 / livewire 3.5 app? Dop you use some plugins for this ?

mstdmstd's avatar

I tried to clear default values in config/app.php I :

'locale' => env('APP_LOCALE', ''),
'fallback_locale' => env('APP_FALLBACK_LOCALE', ''),
'faker_locale' => env('APP_FAKER_LOCALE', ''),

But then in boot method checking current locale I see empty value:

public function boot() {
    $this->currentLocale = app()->getLocale();

so locale was lost white redirecting with wire:navigatedirective. Why so ?

Can it be that I need to pass current locale as GET parameter In routes/web.php :

Route::get('/', [HomeController::Class, 'index'])->name('home');
...
Route::get('/partnership-order', [PartnershipOrderController::class, 'index'])->name('partnership_order.index');

Please or to participate in this conversation.