Wie kann ich die aktuelle Sprache in einer Laravel-Ansicht finden?

8

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?

    
BenjaminRH 03.10.2012, 10:20
quelle

10 Antworten

7

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%     
aebersold 21.11.2012, 14:28
quelle
17

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%     
Erwan Dupeux-Maire 08.07.2015 16:40
quelle
5

In den neueren Laravel-Versionen erhalten Sie die aktuelle Sprache mit:

%Vor%     
Pedro Moreira 02.09.2014 18:35
quelle
3

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%     
BenjaminRH 03.10.2012 12:02
quelle
3

Das könnte helfen.     Config :: get ('application.language')

    
Johny Salas 07.02.2013 04:43
quelle
2

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:

Ссылка

Ссылка

Ссылка

    
Sangar82 04.10.2013 10:03
quelle
1

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.

    
Thomas Venturini 22.11.2016 10:43
quelle
1

Eine Alternative, ein etwas kürzerer Weg könnte etwas wie folgt sein:

%Vor%

Der Vorteil ist, dass IDEs wie PHPSstorm diese Funktion erkennen und Ihnen helfen können, sich viel schneller zu entwickeln.

    
ThatMSG 26.01.2017 11:04
quelle
1

Das würde gut funktionieren

%Vor%     
NIRAJ KUMAR 20.08.2017 10:02
quelle
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%

Laravel-Anfragen prüfen

    
David Barker 03.10.2012 10:48
quelle

Tags und Links