2

After much testing and searching, I can not find the solution.

My problem is that I have, for example the route '/services', '/servicios' in spanish.

If my website is in english, all texts are correctly shown in english, same in spanish. But the problem is with the text links, only appear in default locale.

In routes/web.php:

Route::get(trans('rutas.servicios'), 'ServiceController@index')->name('servicios')

File lang/es/rutas.php:

return [
   'servicios' => '/servicios',
];

File lang/en/rutas.php:

return [
   'servicios' => '/services',
];

and link html:

<a href="{‌{ route('servicios') }}">@lang('menus.servicios')</a> 

My goal is to use translated urls without using laravel prefix. That is to say:

https://www.myweb.com/services  ~ english
https://www.myweb.com/servicios ~ spanish

share the same Route controller.

Any help? Lot of thanks for your time!

EDIT WITH SOLUTION:

I discovered that laravel performs route mapping before selecting the language. So what I did was to set the language before this, but the session and cookies variables load after this. But I finally discovered that the cached variables satisfied my needs.

At the top of function map() of RouteServiceProvider.php:

App::setLocale(Cache::get('locale'));

To store the selected locale:

Cache::put('locale', $locale, $minutes);
Alvaro_SE
  • 125
  • 2
  • 13

0 Answers0