Lokalisierung


Lokalisierung

Einführung
  • Regionskonfiguration
    Übersetzungszeichenfolge definieren
  • So verwenden Sie Kurztasten
    • So verwenden Sie die Übersetzungszeichenfolge Tun Übersetzungszeichenfolge
    • für Schlüssel
  • abrufen. Parameter in Übersetzungszeichenfolge Sprachdatei des Erweiterungspakets neu schreiben

Einführung

Die Laravel-Lokalisierungsfunktion bietet eine einfache Möglichkeit, Zeichenfolgen aus verschiedenen Sprachdateien abzurufen, sodass Ihre Anwendung die mehrsprachige Entwicklung besser unterstützen kann. Sprachdateien werden standardmäßig im Verzeichnis resources/lang abgelegt. In diesem Verzeichnis werden die entsprechenden Sprachdateien in den entsprechenden Unterverzeichnissen gespeichert, zum Beispiel:

/resources  
  /lang    
    /en
        messages.php      
     /es
         messages.php

Alle Sprachdateien geben ein Array von Schlüssel-Wert-Paaren zurück , zum Beispiel:

<?php
    return [  
      'welcome' => 'Welcome to our application' 
   ];

Gebietsschema

Die Standardspracheinstellung für die App wird in gespeichert config/app.php in der Konfigurationsdatei. Sie können die aktuellen Einstellungen nach Bedarf ändern und Sie können auch die App-Methode von setLocale Facade verwenden, um die während der Anwendungsausführung verwendete Sprache dynamisch zu ändern:

Route::get('welcome/{locale}', function ($locale) {  
  App::setLocale($locale);  
    //
  });

Sie können auch die „Backup-Sprache“ festlegen. Wird verwendet, wenn die Anwendung ausgeführt wird. Wird verwendet, wenn die aktuelle Sprache die angegebene Übersetzungszeichenfolge nicht enthält. Wie die Standardsprache können auch alternative Sprachen in der config/app.php-Konfigurationsdatei eingestellt werden:

'fallback_locale' => 'en',

Um das aktuelle Gebietsschema

zu ermitteln, können Sie die AppFassadengetLocale und isLocale Methoden ermitteln das aktuelle Gebietsschema oder prüfen, ob das Gebietsschema ein bestimmter Wert ist:

$locale = App::getLocale();if (App::isLocale('en')) { 
   //
}

Übersetzungszeichenfolgen definieren

Kurztasten verwenden

Üblicherweise werden Übersetzungszeichenfolgen in gespeichert resources/lang in den Dateien im Verzeichnis. In diesem Verzeichnis sollte es für jede von der Anwendung unterstützte Sprache ein entsprechendes Unterverzeichnis geben:

/resources
  /lang     
   /en
        messages.php     
   /es
        messages.php

Alle Sprachdateien geben ein Array von Schlüssel-Wert-Paaren zurück, zum Beispiel:

<?php
  // resources/lang/en/messages.php
  return [  
    'welcome' => 'Welcome to our application'
   ];

Übersetzungszeichenfolge als Schlüssel verwenden

Für Anwendungen mit großem Übersetzungsbedarf, wenn jede Übersetzungsanweisung eins sein muss „Kurztasten“ sind definiert und es kann leicht verwirrend werden, wenn Sie versuchen, diese „Kurztasten“ in der Ansicht zu referenzieren. Daher unterstützt Laravel auch die Verwendung der Zeichenfolge „Standard“-Übersetzung als Schlüsselwort zum Definieren einer Übersetzungszeichenfolge.

Übersetzungsdateien werden im JSON-Format im Verzeichnis resources/lang gespeichert und verwenden Übersetzungszeichenfolgen als Schlüssel. Wenn Ihre App beispielsweise über spanische Übersetzungen verfügt, sollten Sie eine neue resources/lang/es.json-Datei in diesem Verzeichnis erstellen:

{    
  "I love programming.": "Me encanta programar."
}

Übersetzungszeichenfolge abrufen

Sie können die Hilfsfunktion __ verwenden, um aus der Sprachdatei abzurufen. Die Funktion __ akzeptiert den Dateinamen und den Schlüsselnamen der Übersetzungszeichenfolge als ersten Parameter . Beispielsweise möchten wir die Übersetzungszeichenfolge resources/lang/messages.php in der Sprachdatei welcome abrufen:

echo __('messages.welcome');
echo __('I love programming.');

Wenn Sie die Blade-Vorlagen-Engine verwenden, können Sie die Syntax {{ }} in der Ansichtsdatei oder verwenden Verwenden Sie den Befehl @lang, um die Übersetzungszeichenfolge zu drucken:

{{ __('messages.welcome') }}
@lang('messages.welcome')

Wenn die angegebene Übersetzungszeichenfolge nicht existiert, dann __ Die Funktion gibt direkt den Schlüsselnamen der Übersetzungszeichenfolge zurück. Wenn das Schlüssel-Wert-Paar, das der Übersetzungszeichenfolge im obigen Beispiel entspricht, nicht existiert, gibt die Funktion __ daher direkt messages.welcome zurück.

{note} Die @lang-Direktive entgeht keiner Ausgabe. Wenn Sie diesen Befehl verwenden, müssen Sie vollständig dafür verantwortlich sein, den Ausgabeinhalt zu maskieren.

Parameterersetzung in der Übersetzungszeichenfolge

Bei Bedarf können Sie Platzhalter definieren. Alle Platzhalter haben ein :-Präfix. Sie können beispielsweise eine Willkommensnachricht mithilfe des Platzhalternamens definieren:

'welcome' => 'Welcome, :name',

Sie können sie in __ definieren Übergeben Sie ein Array als zweiten Parameter in der Funktion. Dadurch werden die Werte im Array durch den Platzhalter der Übersetzungszeichenfolge ersetzt:

echo __('messages.welcome', ['name' => 'dayle']);

Wenn Ihr Platzhalter den ersten Buchstaben in Großbuchstaben oder alle Großbuchstaben enthält, übersetzt Der Inhalt wird auch entsprechend großgeschrieben:

'welcome' => 'Welcome, :NAME', 
// Welcome, DAYLE
'goodbye' => 'Goodbye, :Name', 
// Goodbye, Dayle

Plural

Plural ist ein kompliziertes Thema, da es verschiedene Sprachen gibt haben unterschiedliche Regeln für Pluralformen, Mit dem „Pipe-Zeichen“ | können Sie die Singular- und Pluralformen einer Zeichenfolge unterscheiden:

'apples' => 'There is one apple|There are many apples',

Sie können sogar komplexere Pluralregeln erstellen und Übersetzungszeichenfolgen für mehrere Zahlenbereiche angeben:

'apples' => '{0} There are none|[1,19] There are some|[20,*] There are many',

Nachdem Sie die Übersetzungszeichenfolge mit der Pluraloption definiert haben, können Sie die Funktion trans_choice verwenden, um den Inhalt der angegebenen „Menge“ abzurufen. Wenn Sie beispielsweise „Gesamtzahl“ auf 10 setzen, entspricht dies dem Mengenbereich von 1 bis 19, sodass Sie die Pluralangabe erhalten. Es gibt einige:

echo trans_choice('messages.apples', 10);

Sie können auch Platzhalter in die Pluralzeichenfolge einfügen. trans_choice Das als dritter Parameter der Funktion übergebene Array ersetzt den Platzhalter:

'minutes_ago' => '{1} :value minute ago|[2,*] :value minutes ago',
echo trans_choice('time.minutes_ago', 5, ['value' => 5]);

Wenn Sie möchten, dass der an die Funktion trans_choice übergebene Parameter „Menge“ in der Übersetzungszeichenfolge angezeigt wird, können Sie dies tun Verwenden Sie :count Platzhalter:

'apples' => '{0} There are none|{1} There is one|[2,*] There are :count',

Schreiben Sie die Sprachdateien des Erweiterungspakets neu

Einige Erweiterungspakete enthalten möglicherweise eigene Sprachdateien. Sie können sie überschreiben, indem Sie Dateien im Verzeichnis resources/lang/vendor/{package}/{locale} ablegen, anstatt die Kerndateien des Erweiterungspakets direkt zu ändern.

Wenn Sie beispielsweise die englische Sprachdatei skyrim/hearthfire des messages.php-Erweiterungspakets neu schreiben müssen, müssen Sie die Datei als resources/lang/vendor/hearthfire/en/messages.php speichern. In dieser Datei müssen Sie nur die Übersetzungszeichenfolgen definieren, die Sie ändern möchten. Alle nicht überschriebenen Übersetzungszeichenfolgen werden weiterhin aus den ursprünglichen Sprachdateien des Erweiterungspakets geladen.

Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.