Powiedzmy, że masz następujące dwa komunikaty pliki
messages.properties
messages_de.properties
Ustawianie Locale Application
Istnieją trzy sposoby ustawiania Aplikacja Locale i myślę, że potrzebujesz pierwszej tutaj tutaj.
1-Możesz pozwolić przeglądarce wybrać ustawienia regionalne.
Ustaw domyślne i obsługiwanych lokalizacji w WEB-INF/faces-config.xml:
<faces-config>
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>de</supported-locale>
</locale-config>
</application>
</faces-config>
Gdy przeglądarka łączy do aplikacji, to zazwyczaj zawiera wartość Accept-Language w nagłówku HTTP
2-można ustawić lokalnie programowo.
wywołać metodę setlocale obiektu UIViewRoot:
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
viewRoot.setLocale(new Locale("de"));
3-Można ustawić ustawienia regionalne dla pojedynczej strony
Wykorzystując element f:view
z przykładu atrybutu, dla locale:
<f:view locale="de">
ustawienia regionalne mogą być dynamicznie ustawić:
<f:view locale="#{user.locale}"/>
Deklarowanie wiadomość wiązki
Teraz, Locale jest ustawiona można użyć jednego z dwóch poniższych sposobów deklarują wiadomość wiązki
1-Via faces-config Najprostszym sposobem jest dostarczyć plik o nazwie faces-config.xml w katalogu WEB-INF swojej aplikacji, o następującej treści:
<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<resource-bundle>
<base-name>com.corejsf.messages</base-name>
<var>msgs</var>
</resource-bundle>
</application>
</faces-config>
2-Na każdym JSF strona, która potrzebuje do niego dostęp. Zamiast globalnego deklarację pakunku zasobów, można dodać f: loadBundle elementu do każdej strony JSF, który potrzebuje dostępu do pakietu, tak:
<f:loadBundle basename="com.corejsf.messages" var="msgs"/>
W obu przypadkach wiadomości w wiązce są dostępne za pośrednictwem zmiennej mapy o nazwie msgs.
Pokazuje odpowiednią etykietę przycisku Teraz powiedzmy plik właściwości domyślne czyli po angielsku ma właściwość
next=Next
i niemiecki ma equivallent tj
next=Weiter
i zostało ustawione locale i ogłosił mesg pakiet, do którego można uzyskać dostęp, aby umieścić etykietę na przycisku polecenia, takim jak
<h:commandButton value="#{msgs.next}"/>
Powyżej Odpowiedź jest wyodrębniana i modyfikowana od Hortsmen Core Java Server Faces book.
Chciałbym dodać coś: w punkcie 3. i 2.. Zamiast robić to dla każdej strony JSF, możesz to zrobić w template.xhtml. – karlihnos