default-locale scheint nicht zu funktionieren, stattdessen wird das unterstützte Gebietsschema verwendet

8

Ich wollte den Standard-Speicherort meines JSF-Webprojekts auf Englisch festlegen Ich habe folgendes getan:

faces-config.xml

%Vor%

Ich habe ein Paket in meinem src-Ordner de.hof.tschuwwa.resources und innen von diesem Paket habe ich zwei Property-Dateien:

%Vor%

und ich habe es in einer kleinen xhtml-Datei getestet:

%Vor%

Wenn ich meine Anwendung starte, werden die deutschen Werte angezeigt und nicht die englischen Werte. Ich wollte, dass die Standardsprache Englisch ist.

Wie kann ich meine Standardsprache einstellen? Das Standard-Gebietsschema faces-config.xml scheint nicht zu funktionieren.

Außerdem muss ich wissen, wie ich meine Lokalisierung ändern kann. Ich habe das klein geschrieben Service:

%Vor%

und mit den folgenden Tasten in einem Formular ausprobiert:

%Vor%

aber nichts passierte, als ich sie benutzte.

    
user1882812 24.11.2013, 15:02
quelle

1 Antwort

21
%Vor%

Zuerst haben Sie einen Fehler in der Gebietsschema-ID en_EN . Die ersten beiden Kleinbuchstaben stehen für den Sprachcode ISO 693-1 . Es ist optional und nur erforderlich, wenn der Ländercode vorhanden ist. Die letzten zwei Großbuchstaben repräsentieren den ISO 3166-1 Alpha-2 Ländercode. Es ist optional und wird oft nur zur Unterscheidung zwischen länderspezifischen Dialekten verwendet, wie amerikanisches Englisch ( en_US ) und < a href="http://en.wikipedia.org/wiki/British_English"> Britisches Englisch ( en_GB ). Es gibt kein solches Land wie "England", also ist en_EN definitiv ungültig. Wahrscheinlich möchten Sie hier en oder vielleicht en_US verwenden.

Also, so

%Vor%

mit einer entsprechenden messages_en.properties -Datei.

  

Wie kann ich meine Standardsprache einstellen? Das Standard-Gebietsschema faces-config.xml scheint nicht zu funktionieren.

Das <default-locale> wird nur verwendet, wenn der Client das Gebietsschema nicht selbst im Stil des Accept-Language HTTP-Anforderungsheaders angegeben hat oder ein Objekt bereitgestellt hat, das nicht von der Anwendung unterstützt wird, wie in <supported-locale> definiert. Viele (vernünftige) Clients setzen den Accept-Language Header. Mit einem HTTP-Verkehrsmonitor können Sie sie sehen.

(Der Bildschirm sagt: en-US ist die erste Präferenz (mit einem Standardgewicht von 1), die en ist die zweite Präferenz mit einem "Gewicht" von 0.8, die nl ist die dritte Einstellung mit einem "Gewicht" von 0,6; in Chrome können Sie dies in chrome://settings/languages ändern, indem Sie Sprachen hinzufügen / entfernen / neu anordnen. .

Wenn Sie dies verhindern möchten und das Gebietsschema "default" aus einem unklaren Grund erzwingen möchten, müssen Sie <f:view locale> explizit auf das gewünschte Gebietsschema "default" setzen (Hinweis: Sie sind also tatsächlich Überschreiben der bevorzugten Ländereinstellung des Clients, wie in seinem Programm konfiguriert - der Webbrowser.

ZB:

%Vor%

(einfach in die Vorlage einfügen, die <h:head> und <h:body> umschließen)

mit dieser neuen Eigenschaft in Ihrer Backing-Bean:

%Vor%
  

Außerdem muss ich wissen, wie ich meine Lokalisierung ändern kann.

Ihr Fehler in diesem speziellen Beispiel besteht darin, dass Sie die Ansicht nach dem Aufrufen der Aktion nicht aktualisieren. Sie müssen den Befehlsschaltflächen update="@all" hinzufügen. Aber es gibt einen weiteren Fehler: Sie erinnern sich nicht an das Gebietsschema für nachfolgende Anfragen. Es würde wieder auf das Gebietsschema "Standard" zurückgreifen. Sie müssen <f:view locale> mit dieser Eigenschaft festlegen. Dies wird bereits ausführlich zuvor beantwortet: Lokalisierung in JSF, wie Merken Sie sich das ausgewählte Gebietsschema pro Sitzung statt pro Anfrage / Ansicht .

    
BalusC 26.11.2013 18:59
quelle

Tags und Links