繁体   English   中英

如何动态更改laravel 5.1中的错误语言

[英]How can I change the language of errors in laravel 5.1 dynamically

我一直在使用助手

app()-> setLocale(session('lang'));

但是,我可以更改视图的语言,但是错误的语言仍然继续读取

\\ config \\ app.php语言环境=>'es'

这意味着始终显示相同的语言。

如何动态地更改它?

在此处输入图片说明

问题在于,打印错误的局部视图始终以相同的语言打印。

这是我的代码。

\\ resources \\ views \\ layout.blade.php

@lang('messages.project')
<ul class="nav navbar-nav navbar-right">
  <li><a href="{{ url('lang', ['en']) }}">En</a></li>
  <li><a href="{{ url('lang', ['es']) }}">Es</a></li>
</ul>

\\ app \\ Http \\ routes.php

Route::get('lang/{lang}', 'NotesController@changeLang')->where([ 'lang' => 'en|es']); 

Route::group(['middleware' => ['web']], function () { 
Route::get('notes', 'NotesController@index'); 
Route::get('notes/create', 'NotesController@create'); 
});

\\ app \\ Http \\ Controllers \\ NotesController.php

public function changeLang($lang)
{
   session(['lang' => $lang]);
   return Redirect::back();
}

\\ app \\ Http \\ Middleware \\ LangMiddleware.php

public function handle($request, Closure $next)
{
   if (!empty(session('lang'))) {
     app()->setLocale(session('lang'));
   }
   return $next($request);
}

\\ resources \\ views \\ partials \\ errors.blade.php

<ul>
   @foreach($errors->all() as $error)
      <li>{{ $error }}</li>
   @endforeach
</ul>

解决方案将中间件放在受保护的$ middleware = []部分的App \\ Http \\ Kernel.php文件中,因为我只是将其放在了“ protected $ routeMiddleware”部分

\App\Http\Middleware\VerifyCsrfToken::class,
    \App\Http\Middleware\myNewMiddleware::class,        
];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM