语言选择

时间:2015-12-11 18:18:23

标签: laravel-5.1

我想在Laravel 5.1中制作语言选择器,但我知道如何制作它,但我希望它能记住所选择的语言(所以如果我再次访问该页面,我仍然使用相同的语言)。但是我怎么能这样做呢?我需要将它存储在DB中吗?

更好地解释一下:

因此,如果访问者第一次加入该网站,那么语言将是"英语"然后他可以选择他/她想要的语言。如果同一个人在另一个时间离开并加入,那么该语言将与之前选择的人相同。

1 个答案:

答案 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();
}