Skip to main content

Was ist Lokalisierung?

Die Lokalisierung von Laravel stellt einen bequemen Mechanismus bereit, um Übersetzungen für unterschiedliche Sprachen abzurufen. Sie unterstützt mehrsprachige Anwendungen. Es gibt zwei Wege, Übersetzungen zu verwalten:
Neue Laravel-Anwendungen enthalten kein Verzeichnis lang. Um es anzulegen, veröffentlichen Sie es mit dem Artisan-Befehl lang:publish.

Locale konfigurieren

Standard-Locale

Die Standardsprache legen Sie in config/app.php über locale fest. Üblich ist die Steuerung per Umgebungsvariable APP_LOCALE in der .env.
fallback_locale ist die Ausweichsprache, falls keine Übersetzung für die aktuelle Sprache existiert.

Locale zur Laufzeit ändern

Mit App::setLocale() können Sie die Locale pro Request ändern.

Aktuelle Locale abfragen

Sprachdateien anlegen

PHP-Datei

Legen Sie PHP-Dateien im Verzeichnis lang/{Sprachcode}/ an. Sie liefern ein Schlüssel-Wert-Array zurück.
Für Sprachen mit regionalen Varianten verwenden Sie ISO-15897-konforme Verzeichnisnamen, z. B. en_GB statt en-gb.

JSON-Datei

Bei vielen Übersetzungen empfiehlt sich das JSON-Format. Legen Sie im Verzeichnis lang/ eine JSON-Datei pro Sprachcode an.
Die Standard-Übersetzung (z. B. Englisch) dient als Schlüssel.
Da der englische Satz selbst als Schlüssel dient, funktioniert die englische Ausgabe automatisch. In Sprachen ohne eigene Übersetzungsdatei wird der Schlüssel (das englische Original) unverändert angezeigt.

Wann welches Format?

  • Wenn Sie Nachrichten z. B. für Validierungsfehler nach Feature strukturieren möchten
  • Wenn Sie Laravels eingebaute Übersetzungen (validation.php, auth.php usw.) überschreiben
  • Wenn Sie eine hierarchische Schlüsselverwaltung benötigen
  • Wenn viele UI-Texte vorkommen und das Ausdenken von Schlüsseln lästig wird
  • Wenn Sie Templates direkt auf Englisch schreiben und andere Sprachen per Übersetzungsdatei ergänzen
  • Wenn Sie Internationalisierung nachträglich einführen

Übersetzungen abrufen

Helper __()

Am gebräuchlichsten. Bei PHP-Dateien schreiben Sie „Dateiname.Schlüssel”.
Ist keine Übersetzung vorhanden, wird der Schlüssel unverändert zurückgegeben.

Verwendung in Blade-Templates

In Blade-Templates verwenden Sie {{ __() }}.
Die Direktive @lang gilt als veraltet. Aktuell wird {{ __() }} empfohlen.

Platzhalter

In Übersetzungen können Sie Platzhalter im Format :name verwenden.
Das zweite Argument von __() enthält die Ersetzungswerte.
In Blade-Templates funktioniert das genauso.

Pluralformen

Die Pluralregeln unterscheiden sich je nach Sprache. In Laravel trennen Sie Singular und Plural mit |.

Einfacher Plural

Auch in JSON möglich:
Mit trans_choice() übergeben Sie die Anzahl.

Pluralformen mit Bereich

Detailliertere Bereichsangaben sind möglich.

Platzhalter in Pluralformen

Mit :count geben Sie die Anzahl aus. Zusätzliche Werte übergeben Sie im dritten Argument.

Sprachdateien von Paketen überschreiben

Für Sprachdateien von Drittanbieter-Paketen können Sie in lang/vendor/{Paketname}/{Sprachcode}/ gleichnamige Dateien ablegen, um Übersetzungen zu überschreiben. Beispiel: englische Nachrichten des Pakets skyrim/hearthfire anpassen.

Praxisbeispiel: Locale-Umschaltung per Middleware

Beispiel einer Middleware, die die Locale anhand von URL, Session oder Nutzerpräferenz umschaltet.
1

Middleware erzeugen

2

Middleware implementieren

3

Middleware registrieren

Registrieren Sie die Middleware in bootstrap/app.php.
4

Route zum Umschalten der Locale

5

Buttons im Blade-Template

Beispielhafter Aufbau der Sprachdateien

Zusammenfassung

Zuletzt geändert am 13. Juli 2026