im en utilisant Laravel 5, et j'ai cet itinéraire:Laravel construire le système d'itinéraire multi-lang
Route::group(['prefix' => '{lang}/', 'middleware' => 'SetLanguage'], function($lang){
//element Show
Route::get('/'.trans('routes.element-container').'/{slugName}', '[email protected]');
});
Mon middleware est le suivant:
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);
}
Si je Décommentez les deux sortie il fonctionne , mais, la fonction "trans" du côté de la route ne fonctionne pas, semble trans seulement dans la langue par défaut. Pourquoi la fonction «trans» est appelée avant le middleware?
je test avec « avant » et « après », mais pas de travail ...
Pourquoi vous obtenez juste pas la langue de la route dans ElementController @ showByName et traduire là au lieu de traduire sur la déclaration de route? – TheFallen
parce que est route multi-lang, ex: http://www.example.com/en/element-container/element-a http://www.example.com/de/Elemente-Behälter/element -a – MeisterC
Je vois votre problème maintenant. La fonction 'trans()' sera toujours appelée avant le middleware, donc une option que je peux penser est de déclarer le même chemin autant de fois que les langues que vous avez ou d'avoir une méthode de contrôleur qui recevra la langue, traduira la route et rediriger pour corriger la route nommée en fonction de cette langue. – TheFallen