我使用以下简单代码更改了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
我错过了什么吗?
答案 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);
}