经过大量测试和搜索后,我找不到解决方案。
我的问题是,我有西班牙语的路线'/ services','/ servicios'。
如果我的网站是英文的,所有文本都用英文正确显示,同样用西班牙语显示。但问题出在文本链接上,只出现在默认语言环境中。
在routes / web.php中:
Route::get(trans('rutas.servicios'), 'ServiceController@index')->name('servicios')
文件lang / es / rutas.php:
return [
'servicios' => '/servicios',
];
文件lang / en / rutas.php:
return [
'servicios' => '/services',
];
并链接html:
<a href="{{ route('servicios') }}">@lang('menus.servicios')</a>
我的目标是在不使用laravel前缀的情况下使用已翻译的网址。也就是说:
https://www.myweb.com/services ~ english
https://www.myweb.com/servicios ~ spanish
共享相同的路径控制器。
有任何帮助吗?非常感谢你的时间!
使用解决方案进行编辑:
我发现laravel在选择语言之前执行路线映射。所以我做的是在此之前设置语言,但会话和cookie变量在此之后加载。但我终于发现缓存变量满足了我的需求。
在RouteServiceProvider.php的函数map()顶部:
App::setLocale(Cache::get('locale'));
存储所选的区域设置:
Cache::put('locale', $locale, $minutes);