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 ?
Aug 28, 2024
2
Level 8
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 ?
Please or to participate in this conversation.