laravel 5.4中的locale在刷新后返回到以前的语言环境

时间:2017-03-02 19:17:04

标签: php laravel localization locale

我正在学习多地点旅馆laravel 5.4 所以 我创建了两个文件 资源中的第一个/ lang / es / greeting.php

<?php

return [

    'hello' => 'hola',

];
资源中的

和第二/ lang / en / greeting.php

<?php

return [

    'hello' => 'hola',

];

我在web.php

中创建了这条路线
Route::get('/{locale}', function ($locale) {
    App::setLocale($locale);
    return view('index');

});

所以当我请求此链接时(localhost:8000 / es) 有用 但是当我刷新页面时,它返回到默认语言环境,即en

我想让它留在新的语言环境中 所以请帮帮我

1 个答案:

答案 0 :(得分:2)

如果要为该会话永久设置区域设置,请将路由代码更改为:

Route::get('/{locale}', function ($locale) {
    App::setLocale($locale);
    Session::put('locale', $locale);
    return view('index');
});

然后添加一个中间件来检查会话是否具有区域设置,如果是这样,则设置区域设置如下:

public function handle($request, Closure $next) {
    if(Session::has('locale')) {
        app()->setLocale(Session::get('locale'));
    }
    return $next($request);
}