Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Laravel mehrsprachige, übersetzte Routen erstellen, ohne auf Cookies oder Sitzungen angewiesen zu sein?

Wie kann ich in Laravel mehrsprachige, übersetzte Routen erstellen, ohne auf Cookies oder Sitzungen angewiesen zu sein?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 15:24:30627Durchsuche

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

Erstellen mehrsprachiger übersetzter Routen in Laravel

Dieser Leitfaden bietet eine umfassende Lösung zum Erstellen mehrsprachiger übersetzter Routen in Laravel und stellt sicher, dass die aktuelle Sprache vorhanden ist wird ausschließlich durch die URL bestimmt, anstatt sich auf Cookies oder Sitzungen zu verlassen.

Implementierung:

1. Übersetzungsdateien:

Erstellen Sie Übersetzungsdateien für die gewünschten Routen im Verzeichnis app/lang/[LANGUAGE]/routes.php. Zum Beispiel für Polnisch (pl), Englisch (en) und Französisch (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. Konfiguration:

App/config/app.php aktualisieren:

  • Standardsprache festlegen (z. B. Polnisch):

    'locale' => 'pl',
  • Listen Sie die alternativen Sprachen auf (Englisch und Französisch):

    'alt_langs' => array ('en', 'fr'),
  • Definieren Sie das Gebietsschema-Präfix:

    'locale_prefix' => '', // Will be dynamically updated at runtime

3. Routen:

app/routes.php bearbeiten:

...

// 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();
        }
    );
});
...

Diese Konfiguration aktualisiert dynamisch das Gebietsschema und das Gebietsschema-Präfix basierend auf dem ersten URL-Segment (sofern es mit einer alternativen Sprache übereinstimmt). und legt Routenmuster gemäß den übersetzten Routen fest.

4. Umleitung (optional):

Bei unbekannten URLs leiten Sie zum aktuellen Sprachpräfix (z. B. /en) statt zur Standardsprache (/) weiter:

// app/start/global.php
App::missing(function()
{
   return Redirect::to(Config::get('app.locale_prefix'),301);
});

Das obige ist der detaillierte Inhalt vonWie kann ich in Laravel mehrsprachige, übersetzte Routen erstellen, ohne auf Cookies oder Sitzungen angewiesen zu sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn