Lokalisierung
- Regionskonfiguration Übersetzungszeichenfolge definieren
- So verwenden Sie Kurztasten
- abrufen. Parameter in Übersetzungszeichenfolge
- ersetzen Plural
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 App
FassadengetLocale
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.