提问人:pape 提问时间:2/5/2016 最后编辑:Vevepape 更新时间:1/13/2017 访问量:2110
Laravel 5 多语言不起作用
Laravel 5 multi language not working
问:
我试图本地化我的应用程序,但似乎我遗漏了一些东西。我以前对此没有任何了解,因此很难开始。这是我的路线.php
Route::get('/lang/{lang}', 'LangController@index');
这是我的 LangController.php
public function index($lang)
{
$langs =['en', 'de'];
if(in_array($lang, $langs)){
Session:set('lang', $lang);
return Redirect::back();
}
}
我在中间件中设置:(Lang,.php)
public function handle($request, Closure $next)
{
if($lang = Session::get('lang')){
\Lang::setLocale($lang);
}
return $next($request);
}
在 Http\Kernel.php 中启用它:
protected $middleware = [
\App\Http\Middleware\Lang::class,
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
];
在我的刀刃上.php
{{ Lang::get('home.hello')}}
CURRENT: {{ Lang::getLocale() }} <br /> <br />
<a href="{{ url('lang/de') }}">Germany</a> | <a href="{{ url('lang/en') }}">English</a>
请帮忙。我看不出我错过了什么...... 在字段 CURRENT 中,当按德国时,它应该是“de”,当按英语时,它应该是“en”,但当按德国时,它仍然保持“en”......(默认值为 'en' config/app.php -> 'locale' => 'en',)
答:
1赞
Bogdan
2/5/2016
#1
由于您在中间件中使用会话,因此在中间件设置会话之前,所需的值将不可用。StartSession
因此,您应该在此之后的某个地方添加中间件,如下所示:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class, // Init session
\App\Http\Middleware\Lang::class, // Set locale
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
];
除此之外,您的控制器代码中还有一个小的语法错误。在控制器方法中为会话赋值时,忘记为作用域解析运算符添加第二个冒号 ()。所以这个::
index
Session:set('lang', $lang);
应该是这样的:
Session::set('lang', $lang);
评论
0赞
Bogdan
2/5/2016
你用的是什么Laravel版本?5.0、5.1 还是 5.2?
0赞
Bogdan
2/5/2016
我已经更新了我的答案,以包括我在您的代码中注意到的第二个问题。
上一个:SQL - 列中的类似数据
评论