【发布时间】:2020-05-28 21:16:12
【问题描述】:
我有我的回家路线
Route::get('/', 'HomeController@index')->name('home');
以及更改语言的特定路线
Route::get('/setLocale/{locale}', 'HomeController@setLocale')->name('setLocale');
在HomeController->setLocale($locale) 中,我检查$locale 是否是有效的语言环境,然后简单地做
\App::setLocale($locale);
然后重定向到家。
在这里,在HomeController->index() 中,我使用验证语言环境
$locale = \App::getLocale();
问题是用户更改语言环境后,应用设置了新的语言环境,重定向,但检测到的语言环境仍然是默认语言环境,而不是用户设置的新语言环境。
我如何/在哪里/何时可以对应用语言环境进行持久更改?
我认为 Laravel 在使用 setLocale 时设置了区域设置 cookie 或其他东西,并在使用 getLocale 时重新读取它,但现在我认为 Laravel 不是这样工作的。
我再次问:如何设置应用程序区域设置以便在页面更改后保留?
【问题讨论】:
-
使用会话/缓存来存储区域设置
\App:setLocale('ufo-language')只为请求生命设置区域设置。无论如何都要使用路线,不要为了搜索引擎而保存任何东西。 -
客户要求我避免使用语言环境。他更喜欢网址翻译
-
您的客户是否了解所有后果?这似乎很愚蠢,但如果有网站翻译,谷歌永远不会知道,因为 g-bot 似乎不存储 cookie。干杯
-
我们导出站点地图。谷歌会知道每一页。此外,每个控制器都使用 url 段来识别语言。非常糟糕的主意,但客户想要它