Laravel 语言选择器
Laravel Language Picker
美好的一天!
我一直在做一个 Laravel 项目,我对语言选择器很生气。
我在 app.php
上设置了 locale 这是当前语言和一个名为 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,该 cookie 会永久保存所存储的语言,但它不会制作要更改的 locale,我想我必须添加一些内容,因为 var_dump 并没有 return 告诉我语言已更改,我不知道如何更改使 cookie 更改语言环境。
另一方面,如您所见,我对 App::setLocale($lang) 进行了评论。我已经使用过它并且它似乎有效,因为在这种情况下 var_dump 是 return 向我提供了我想要更改为的正确语言,但是在return 到页面的时间又是旧语言。
我对此很生气,能得到一些帮助真是太好了,谢谢!
App::setLocale()
不是永久性的,仅为当前请求设置语言环境。
您可以设置 cookie(正如您已经完成的那样)并在 middleware 中检查它。如果有任何cookie,则切换应用程序语言。
美好的一天! 我一直在做一个 Laravel 项目,我对语言选择器很生气。
我在 app.php
上设置了 locale 这是当前语言和一个名为 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,该 cookie 会永久保存所存储的语言,但它不会制作要更改的 locale,我想我必须添加一些内容,因为 var_dump 并没有 return 告诉我语言已更改,我不知道如何更改使 cookie 更改语言环境。
另一方面,如您所见,我对 App::setLocale($lang) 进行了评论。我已经使用过它并且它似乎有效,因为在这种情况下 var_dump 是 return 向我提供了我想要更改为的正确语言,但是在return 到页面的时间又是旧语言。
我对此很生气,能得到一些帮助真是太好了,谢谢!
App::setLocale()
不是永久性的,仅为当前请求设置语言环境。
您可以设置 cookie(正如您已经完成的那样)并在 middleware 中检查它。如果有任何cookie,则切换应用程序语言。