Maison  >  Article  >  développement back-end  >  Comment puis-je créer des itinéraires multilingues et traduits dans Laravel sans recourir aux cookies ou aux sessions ?

Comment puis-je créer des itinéraires multilingues et traduits dans Laravel sans recourir aux cookies ou aux sessions ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 15:24:30585parcourir

How can I create multilingual, translated routes in Laravel without relying on cookies or sessions?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn