Création d'itinéraires traduits multilingues dans Laravel
Ce guide fournit une solution complète pour créer des itinéraires traduits multilingues dans Laravel, en garantissant que la langue actuelle est déterminé uniquement par l'URL, plutôt que de compter sur des cookies ou des sessions.
Mise en œuvre :
1. Fichiers de traduction :
Créez des fichiers de traduction pour les itinéraires souhaités dans le répertoire app/lang/[LANGUAGE]/routes.php. Par exemple, pour le polonais (pl), l'anglais (en) et le français (fr) :
app/lang/pl/routes.php :
return array( 'contact' => 'kontakt', 'about' => 'o-nas' );
app/lang/en/routes.php :
return array( 'contact' => 'contact', 'about' => 'about-us' );
2. Configuration :
Mettre à jour app/config/app.php :
Définir la langue par défaut (par exemple, le polonais) :
'locale' => 'pl',
Listez les langues alternatives (anglais et français) :
'alt_langs' => array ('en', 'fr'),
Définissez le préfixe de paramètres régionaux :
'locale_prefix' => '', // Will be dynamically updated at runtime
3. Routes :
Modifier app/routes.php :
... // Set locale and locale_prefix if an alternative language is selected if (in_array(Request::segment(1), Config::get('app.alt_langs'))) { App::setLocale(Request::segment(1)); Config::set('app.locale_prefix', Request::segment(1)); } // Set route patterns based on the translated routes foreach(Lang::get('routes') as $k => $v) { Route::pattern($k, $v); } Route::group(array('prefix' => Config::get('app.locale_prefix')), function() { Route::get( '/', function () { return "main page - ".App::getLocale(); } ); Route::get( '/{contact}/', function () { return "contact page ".App::getLocale(); } ); Route::get( '/{about}/', function () { return "about page ".App::getLocale(); } ); }); ...
Cette configuration met à jour dynamiquement les paramètres régionaux et le préfixe des paramètres régionaux en fonction du premier segment d'URL (s'il correspond à une autre langue) et définit les modèles d'itinéraire en fonction des itinéraires traduits.
4. Redirection (facultatif) :
Pour les URL inconnues, redirigez vers le préfixe de langue actuelle (par exemple, /en) au lieu de la langue par défaut (/) :
// app/start/global.php App::missing(function() { return Redirect::to(Config::get('app.locale_prefix'),301); });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!