laravel - Laravel 5.5 路线本地化
问题描述
我们正在尝试路由到不同的语言,但目前效果不佳。我们使用语言文件夹。
我们目前有:(
example.com/hotelA
如果有人访问它,它会根据 IP 自动更改语言)。
现在我们想要所有语言的直接链接:
example.com/**en**/hotelA/
example.com/**tr**/hotelA/
我们解决了页面按钮中的切换器,如下所示:
Route::get('language/{locale}', function ($locale)
{
App::setLocale($locale);
Session::put('locale',$locale);
Session::put('custlocale',$locale);
return back();
});
但这仅在某些触发按钮时才有效。所以我们尝试了:
Route::get('/{locale}/{slug}/', 'frontEnd\HotelController@showHotel'), function ($locale)
{
App::setLocale($locale);
Session::put('locale',$locale);
Session::put('custlocale',$locale);
return back();
});
真的不行 所以我们尝试了很多其他的事情,但我们无法正确解决它。知道如何正确解决这个问题吗?也许是最佳实践?
解决方案
App::setLocale($locale)
只会改变当前请求的语言环境,在会话中设置语言环境不会改变 Laravel 使用的语言环境。
如果您想使用会话中设置的语言环境,您可以向您的网站添加一个中间件App::setLocale()
,该中间件从会话中获取语言环境并使用.
推荐阅读
- python - 我不明白为什么我不能在 Python 中按索引获取记录?
- python - 使用 bash 将 Python 添加到路径中
- oracle - Oracle 将游标的输出连接到 CLOB
- javascript - TypeError:无法读取离子应用程序 null 的属性“样式”
- node.js - 如何将 node.js 应用程序推送到具有本地依赖关系的 heroku?
- powershell - 从 PowerShell 中的文件名中提取日期
- python - 如何使PDF可填写?
- c++ - 为什么函数“constexpr”说明符应该匹配?
- java - 我怎样才能让这个数据管理器真正工作 Java Spigot Plugin
- jwt - 使用 JWT 创建的 Gmail 服务帐户访问令牌不起作用,返回