laravel 为什么我不能把地点设为拉腊维尔

pw136qt2  于 2022-12-27  发布在  其他
关注(0)|答案(3)|浏览(118)

我使用下面的简单代码来改变我的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

我错过什么了吗?

zlhcx6iw

zlhcx6iw1#

将控制器函数更改为

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

    return back()->withInput();
}
1l5u6lss

1l5u6lss2#

当您使用\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);
}
dxxyhpgq

dxxyhpgq3#

在我的例子中,它起作用了:应用程序::setLocale($请求-〉本地);
而不是这个:\应用程序::设置区域设置($local);

相关问题