Ich verwende die Laravel Lang-Klasse zur Lokalisierung meiner Web-App. Ich habe dem Sprachen-Array in application/config/application.php
zwei Sprachen hinzugefügt. Dadurch ändert sich die Standardsprache, die für die Lokalisierung verwendet wird, auf den ersten Teil des URI (z. B. bla.com/en/bla und bla.com/co/bla). Jetzt muss ich in der Lage sein zu überprüfen, was die aktuelle Standardsprache meiner Meinung nach ist. Die Lang-Klasse bietet jedoch keine Möglichkeit, dies zu überprüfen, soweit ich das herausfinden konnte, da die Variable Lang::$language
geschützt ist. Gibt es eine Möglichkeit, dies zu überprüfen abgesehen davon, den URI manuell zu analysieren?
BenjaminRHs Antwort ist sehr gut und seine vorgeschlagene Herangehensweise funktioniert perfekt. Ich habe das Snippet ein wenig verbessert. Jetzt erkennt es die Browsersprache und überprüft, ob diese Sprache entsprechend der Konfigurationsdatei der Anwendung unterstützt wird.
Es ist ein schneller Hack, aber es funktioniert auf meiner App. Beachten Sie, dass die Anwendungssprache jetzt ebenfalls festgelegt ist. Fühlen Sie sich frei, Erz zu verwenden, verbessern Sie es.
%Vor%Der sauberste Weg, um die aktuelle Sprache Ihrer Website in Laravel zu kennen, scheint zu sein:
%Vor%Es ist anders als dieser Befehl, der die Standardsprache Ihrer Website zurückgibt:
%Vor%In den neueren Laravel-Versionen erhalten Sie die aktuelle Sprache mit:
%Vor%Ich habe eine Lösung für das Sprachproblem gefunden (danke an nickstr im IRC und die akzeptierte Antwort auf diese Frage). Dazu wird die aktuelle Sprache als Sitzungsvariable gespeichert, die aktualisiert wird, wenn das Sprach-URI-Segment geändert wird.
%Vor%Sie können
verwenden %Vor%Laravel Localization verwendet die URL, die für die Anfrage angegeben wurde. Um dies zu erreichen, sollte in der Datei routes.php eine Gruppe hinzugefügt werden. Es wird alle Seiten gefiltert, die lokalisiert werden müssen.
%Vor%Sobald diese Gruppe der routes-Datei hinzugefügt wurde, kann ein Benutzer auf alle Sprachen zugreifen, die zu den 'languagesAllowed' hinzugefügt wurden ('en' und 'es' als Standard, sehen Sie im Konfigurationsabschnitt nach, um diese Option zu ändern). Beispielsweise kann ein Benutzer jetzt unter Verwendung der folgenden Adressen auf zwei verschiedene Sprachen zugreifen:
Ich verwende App::getLocale()
, was wahrscheinlich der am meisten unterstützte Weg ist, da die Methode App::setLocale('EN')
in der Dokumentation verwendet wird .
Sie können diese Methode überall verwenden. Wenn irgendwo ein Fehler auftritt, können Sie \App::...
verwenden, damit es funktioniert.
Ich benutze Laravel 5.0.
Die Klasse Lang
dient speziell zur Ausgabe der korrekten Sprache und verwaltet, wie Sie sagen, die Sprache intern.
Wenn Sie durch die API schauen, gibt es keine Methode, die Ihnen direkt dabei hilft und den URI zu analysieren, um die Sprache als die geeignete Vorgehensweise zu erhalten.
Sie können dies immer tun, um die Sprachzeichenfolge im URI abzurufen:
%Vor%Tags und Links localization laravel