首页 > 解决方案 > 路线 laravel 翻译

问题描述

经过大量测试和搜索,我找不到解决方案。

我的问题是我有,例如西班牙语中的路由'/services','/servicios'。

如果我的网站是英文的,所有文本都以英文正确显示,西班牙文也一样。但问题在于文本链接,仅出现在默认语言环境中。

在路线/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 在选择语言之前会执行路由映射。所以我所做的是在此之前设置语言,但在此之后加载会话和 cookies 变量。但我终于发现缓存的变量满足了我的需求。

在 RouteServiceProvider.php 的函数 map() 顶部:

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

要存储选定的语言环境:

Cache::put('locale', $locale, $minutes);

标签: laraveltranslationlaravel-5.6

解决方案


推荐阅读