再会!我一直在做一个 Laravel 项目,我对语言选择器很生气。
我已经设置app.php了当前语言的语言环境和一个名为locales的数组,其中我拥有所有语言(现在是西班牙语和英语):
'locale' => 'es',
'locales' => [
'en' => 'English',
'es' => 'Castellano',
],
我创建了一条路线,用户可以访问该路线以使用模式/lang/es或以/lang/en这种方式更改语言:
Route::get('/lang/{lang}', ['as'=>'lang.switch', 'uses'=>'HomeController@storeLang']);
这里的功能storeLang:
public function storeLang($lang){
$cookie = null;
if (array_key_exists($lang, Config::get('app.locales'))) {
$cookie = Cookie::forever('locale', $lang);
//App::setLocale($lang);
var_dump(Config::get('app.locale'));
exit();
}
if ($cookie) {
return Redirect::back()->withCookie($cookie);
}
return back();
}
}
我的想法是检查我们传递的$lang是否正确,如果是,则制作一个与存储的语言一起永久存在的 cookie,但它不会改变语言环境,我想我必须添加一些东西,因为这个var_dump 没有返回我更改的语言,我不知道如何使 cookie 更改语言环境。
另一方面,如您所见,我对App::setLocale($lang)进行了评论。我已经使用过它并且它似乎可以工作,因为在这种情况下,var_dump正在返回我想要更改为的正确语言,但当时返回页面时它又是旧语言。
我对此感到很生气,希望能得到一些帮助,谢谢!