Laravel 本地化不起作用:区域设置未更改

Lub*_*kov 2 php session localization laravel

我正在尝试使用 Laravel 进行本地化,但我的代码不起作用,有什么意见或建议吗?

这是代码:

我的Language中间件handle()方法:

public function handle($request, Closure $next)
{
    if(Session::has('locale')) {
        $locale = Session::get('locale', Config::set('app.locale'));
    } else {
        $locale = "bg";
    }

    App::setLocale($locale);

    return $next($request);
}
Run Code Online (Sandbox Code Playgroud)

我的控制器方法:

public function changeLang(Request $request,$lang) {
    if (!empty($request)) {
        Session::put('locale',$lang);
    } else {
        Session::set('locale',$lang);
    }
    return back();
}
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

Route::get('/{lang}','LanguageController@changeLang');
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

M A*_*fan 6

希望这段代码对您有用。

控制器

   public function index($locale) 
  {
      session(['locale' => $locale]);
      App::setLocale($locale);
      return Redirect::back();
   }
Run Code Online (Sandbox Code Playgroud)

语言中间件:

public function handle($request, Closure $next)
    {
        if (Session::has('locale')) {
            App::setLocale(Session::get('locale'));
        }
        else { // This is optional as Laravel will automatically set the fallback language if there is none specified
            App::setLocale(Config::get('app.fallback_locale'));
        }
        return $next($request);
    } 
Run Code Online (Sandbox Code Playgroud)

路线:

Route::get('/{lang}', 'LanguageController@index');
Run Code Online (Sandbox Code Playgroud)

最后在 middlewaregroup 的 app/Http/Kernal.php 中添加你的 Langauge 中间件

 \App\Http\Middleware\Language::class,
Run Code Online (Sandbox Code Playgroud)