我想在Laravel 5.1中制作语言选择器,但我知道如何制作它,但我希望它能记住所选择的语言(所以如果我再次访问该页面,我仍然使用相同的语言)。但是我怎么能这样做呢?我需要将它存储在DB中吗?
更好地解释一下:
因此,如果访问者第一次加入该网站,那么语言将是"英语"然后他可以选择他/她想要的语言。如果同一个人在另一个时间离开并加入,那么该语言将与之前选择的人相同。
答案 0 :(得分:0)
我写了一篇关于此的博客文章,有关详细信息,请参阅Detect and change language on the fly with Laravel,但基本上您需要使用中间件来定义默认语言环境:
/**
*
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Session::has('locale')) {
$locale = Session::get('locale', Config::get('app.locale'));
} else {
$locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
if ($locale != 'fr' && $locale != 'en') {
$locale = 'en';
}
}
App::setLocale($locale);
return $next($request);
}
用于存储语言更改的方法(以及表单):
/**
* Change session locale
* @param Request $request
* @return Response
*/
public function changeLocale(Request $request)
{
$this->validate($request, ['locale' => 'required|in:fr,en']);
\Session::put('locale', $request->locale);
return redirect()->back();
}