没有路由前缀的本地化不起作用

时间:2015-12-24 16:33:14

标签: laravel localization laravel-5.1

我正在使用Laravel文档来实现本地化(在网址中没有前缀)。

基本上我想要两个链接“EN”和“NL”。根据我单击的链接,应将语言环境更改为该特定语言。

我使用这个链接:

<a href="/language/benl">NL</a>
<a href="/language/en">EN</a>

这条路线:

Route::get('language/{locale}', 'HomeController@setLang');

这是我的HomeController

class HomeController extends Controller
{

    public function setLang($locale){
        App::setLocale($locale);
        return back();
    }
}

我按照文档中解释的方式将文件设置为resources/lang。 但是,输出({{ trans('messages.welcome') }})未翻译。

我做错了什么? :)

更新

<a href="/auth/register">{{ trans('header.register') }}</a>

路线

Route::group(['middleware' => ['language']], function () {
    //
    Route::get('language/{locale}', 'HomeController@setLang');

});

Lang文件:

return [
    'register' => 'REGISTREER',
];

My Kernel.php

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'language' => \App\Http\Middleware\Language::class,
    ];

1 个答案:

答案 0 :(得分:2)

如果您不想为网址添加前缀,可以将$(newhtml).insertAfter(".cl"); session结合使用。

您只需middlewaremiddleware

App \ Http \ Controllers \ HomeController方法:

controller

App \ Http \ LocaleMiddleware方法:

class HomeController extends Controller
{
    public function setLang($locale)
    {
        // 1. store selected locale
        Session::put('my_project.locale', $locale);

        return back();
    }
}
  

不要忘记全球register the middleware