2011-06-27 37 views
1

我有一個JSF2應用程序,到目前爲止我正在用消息資源包以典型方式進行國際化;例如:在JSF中爲完整HTML頁面進行國際化的正確方法?

<f:view contentType="text/html" locale="#{loginHandler.currentLocale}"> 

<f:loadBundle basename="MessageResource" var="msg" /> 

<h:outputText value="#{msg.user_firstNameLabel}" /> 

我的問題是我有兩種語言的內容段落的信息頁面。我不希望將頁面上的每一行文本都作爲消息屬性文件中的鍵值。

如果內容在兩個html文件中;例如contactus_en.html和contactus_fr.html,根據當前語言環境顯示正確語言的正確方法是什麼?

謝謝! Rob

回答

3

做你所要求的最簡單的方法是創建一個控制器,它可以讀取HTML文件的內容並按需返回它們。在這種情況下,你可以從你的JSF頁面很簡單的聲明寫出來的那樣:

<h:outputText escape="false" value="#{yourController.contactus}" /> 

既然你要讀的HTML文件(S)的內容,你需要告訴JSF不是逃避他們(因此逃脫= 「假」)。
當然,您的控制器需要提供名爲getContactus()的方法,它應該讀取您感興趣的HTML文件的內容並將其作爲字符串返回。我相信你可以很容易地處理它:)


編輯 - 添加關於如何選擇文件信息。

如果你的HTML文件是語言環境相關的等等這些都已經雙語但是對於英語和法語的不同,你可以很容易地從UIViewRoot獲取當前視圖區域設置:

Locale currentLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale(); 
String fileName = "contactus_" + currentLocale.toString() + ".html"; 
+0

交叉引用的http://計算器.COM /問題/ 6423249/Java的JSF的國際化,長文本,條款,常見問題解答 – webstrap