JavaServer Faces
Message Bundles
Przeniesienie komunikatów ze stron JSF do osobnych plików
JSF wspiera dobrą praktykę przy pisaniu warstwy prezentacji, polegającą na
przeniesieniu wszystkich komunikatów, dotychczas umieszczanych np. w treści stron JSP,
do osobnego pliku. Komunikaty tekstowe zapisywane są w plikach properties na zasadzie
klucz-wartość (np. messages.properties).
Aby skorzystać z pliku z komunikatami, należy zadeklarować użycie takiego pliku za pomocą
odpowiedniego taga jsf/core:
<f:loadBundle basename="jsfapp.messages" var="msgs" />
A następnie można już z takiego zasobu korzystać bezpośrednio:
<h:outputText value="#{msgs.logged}" />
Różne wersje językowe aplikacji
Zasadniczą korzyścią płynącą z utrzymywania komunikatów na zewnątrz stron JSF jest możliwość
utworzenia wariantu pliku properties z inna wersją językową komunikatów (np. messages.properties, messages_pl.properties).
Wybór wersji językowej zależy od ustawionego locale. Można to ustawić w kodzie aplikacji, np:
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(Locale.ENGLISH);
Można też ustawić locale w atrybucie widoku na stronie JSF:
<f:view locale="en">
Lub w pliku faces-config.xml:
<application>
<locale-config>
<default-locale>pl</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
</application>
Dodanie kolejnych wersji językowych nie wymaga zmian w stronach JSF (poza obsługą samego
przełączenia języka).
JavaServer Faces