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

Patricia Arquette
Libérer: 2024-11-03 15:24:30
original
623 Les gens l'ont consulté

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'
    );
    Copier après la connexion
  • app/lang/en/routes.php :

    return array(
      'contact' => 'contact',
      'about'   => 'about-us'
    );
    Copier après la connexion

2. Configuration :

Mettre à jour app/config/app.php :

  • Définir la langue par défaut (par exemple, le polonais) :

    'locale' => 'pl',
    Copier après la connexion
  • Listez les langues alternatives (anglais et français) :

    'alt_langs' => array ('en', 'fr'),
    Copier après la connexion
  • Définissez le préfixe de paramètres régionaux :

    'locale_prefix' => '', // Will be dynamically updated at runtime
    Copier après la connexion

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();
        }
    );
});
...
Copier après la connexion

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);
});
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal