为什么我不能在Laravel中设置语言环境?

时间:2017-06-05 19:17:05

标签: php html laravel localization blade

我使用以下简单代码更改了laravel应用程序中的语言,但它并没有改变任何内容。该语言仍然是默认的' en'

路线

Route::get('lang/{local}','LanguageController@setlanguage');

控制器

public function setlanguage(Request $request)
    {
        \App::setLocale($request->local);

        return back()->withInput();
    }

查看

 @if(App::getLocale() == 'en')
    <a href="{{url('/lang/ar')}}">العربية</a>
 @elseif(App::getLocale() == 'ar')
    <a href="{{url('/lang/en')}}">English</a>
 @endif

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

将控制器功能更改为

public function setlanguage($local)
{
    \App::setLocale($local);

    return back()->withInput();
}

答案 1 :(得分:0)

当您使用\App::setLocale()时,它将更改此特定请求的语言,并在您返回back()请求完成后,语言将返回默认值。

如果要保存此更改,请在会话中保存语言,如果会话中有language,请添加中间件以进行更改。

例如:

控制器:

public function setlanguage(Request $request)
{
    \Session::put('language', $request->local);

    return back();
}

中间件:

public function handle($request, Closure $next)
{
    if (\Session::has('language')) {
        \App::setLocale(\Session::get('language'));
    }

    return $next($request);
}