Laravel 5.1在中间件中使用trans()更改区域设置后无法正常工作

时间:2016-01-06 09:06:01

标签: php routes laravel-5.1 laravel-middleware

我在这样的路线上使用trans(Lang :: get):

...
Route::get(trans('url.news'), 'NewsController@index');
...

它在固定语言网站上运作良好。

现在我正在基于域.tld

切换中间件中的语言
// app/Http/Middleware/Localization.php
public function handle($request, Closure $next)
{
    $domain = substr(Request::server('HTTP_HOST'),strpos(Request::server('HTTP_HOST'), '.')+1);
    case "domain.com":
        App::setLocale('en');
        \Session::put('connection', 'db_en');
        break;
    case "domain.fr":
        App::setLocale('fr');
        \Session::put('connection', 'db_fr');
        break;
    }
    return $next($request);
}

我的url.php文件包含路径翻译:

// resources/lang/en/url.php
return [
    ....
    'products' => 'products'
    .... 
];

// resources/lang/fr/url.php
return [
    ....
    'products' => 'nos-produits'
    ....
];

除了中间件似乎是在路由之后处理(并且加载默认语言文件而不是在中间件中选择的语言文件)之外,一切都运行良好。我能解决这个问题吗?

例如,在 AppServiceProvider.php 中执行此操作是否可以?

0 个答案:

没有答案