可以說,語言環境的變化你有以下兩條消息文件
messages.properties
messages_de.properties
設置應用程序語言環境
有設置的三種方式應用程序語言環境,我認爲您需要第一個在這裏。
1-您可以讓瀏覽器選擇區域設置。
坐落在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>
當瀏覽器連接到你的應用程序的默認和支持的語言環境,它通常包含在HTTP頭中的Accept-Language值
2,您可以設置編程的語言環境。
調用UIViewRoot對象的的setLocale方法:
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
viewRoot.setLocale(new Locale("de"));
3-可以設置區域設置爲單個頁面
通過使用f:view
元件與locale的屬性,例如:
<f:view locale="de">
區域設置可以動態地設置:
<f:view locale="#{user.locale}"/>
聲明消息包現在
的區域設置,您可以使用以下兩種方法來聲明消息一個捆綁
1 - 通過面向-配置 最簡單的方法是提供一個名爲faces-config的文件。XML的應用程序的WEB-INF目錄下,其內容如下:
<?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,在需要訪問它的每個JSF頁面。 而不是使用一個全球性的資源包的聲明,你可以添加F:loadBundle元素需要訪問捆綁,這樣每個JSF頁面:
<f:loadBundle basename="com.corejsf.messages" var="msgs"/>
在這兩種情況下,被捆綁的消息通過名稱爲msgs的地圖變量訪問。
按鈕顯示相應的標籤 現在讓我們說默認的屬性文件,即英語已經財產
next=Next
和德國有equivallent即
next=Weiter
而且你已經設置的語言環境,並宣佈MESG捆綁您可以訪問它將標籤放在命令按鈕上,如
<h:commandButton value="#{msgs.next}"/>
以上答案摘自Hortsmen Core Java Server Faces book。
我想補充一點:在3.和2.點。不要爲每個JSF頁面執行此操作,您可以在template.xhtml中進行操作。 – karlihnos