laravel - 路线 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);
解决方案
推荐阅读
- regex - 正则表达式的最大长度是多少?
- python - 使用项目管道抓取到 SQLite - 由于列表中的 None 值而丢弃了整个记录
- python - pyqt4 textedit 插入数据非常慢
- python - 合并多个文件夹的数据
- visual-studio-2019 - 适用于 Visual Studio 2019 的 IntelliJ IDEA 键盘映射
- javascript - Svelte 遍历键数组并从对象中获取键
- amazon-web-services - Hashicorp/aws / 错误:无效的版本约束(aws 需要字符串值。)
- reactjs - 反应 setstate 不更新对象数组
- python - 生成部分已知的张量 Tensorflow
- javascript - Python中有一个函数来查找变量的类型吗?