イムを構築し、私はこのルートを持っている:LaravelはマルチLANGルートシステムにLaravel 5を使用して
Route::group(['prefix' => '{lang}/', 'middleware' => 'SetLanguage'], function($lang){
//element Show
Route::get('/'.trans('routes.element-container').'/{slugName}', '[email protected]');
});
私のミドルウェアがこれです:私はアンコメントしている場合、それが動作する2つの終了
public function handle($request, Closure $next)
{
if (in_array($request->lang, config('app.all_langs'))){
//exit("SETTING ON ".$request->lang);
App::setLocale($request->lang);
}else{
//exit("SETTING ON en");
App::setLocale('en');
}
return $next($request);
}
しかし、ルート側の関数 "trans"は動作していないので、デフォルトlangでのみtransに見えます。
ミドルウェアの前に「trans」関数が呼び出されているのはなぜですか? 私は「前」と「後」でテストを持っていますが、私が正しくあなたを理解している場合何の仕事は...
は、なぜあなたはちょうどElementController @ showByNameルートから言語を取得しないと、上の翻訳の代わりにそこにそれを翻訳しますルート宣言? – TheFallen
マルチルートルートのため、例: http://www.example.com/en/element-container/element-a http://www.example.com/de/Elemente-Behälter/element -a – MeisterC
私はあなたの問題を今見ます。関数 'trans()'はミドルウェアの前に常に呼び出されるので、私が考えることのできる1つのオプションは、あなたが持っている言語と同じくらい多くの時間を宣言したり、言語を受け取るコントローラメソッドを持ったり、ルートを翻訳したりその言語に応じて正しい名前のルートにリダイレクトします。 – TheFallen