f:loadBundle 是 JSF 提供支援 JSP 本地化(多語言)操作的標籤。JSF 提供一套本地化支援機制,包含訊息、頁面顯示等,f:loadBundle 專門處理頁面顯示面向的本地化支援。
使用此標籤,可為不同語言訪客呈現不同語言介面,簡單實現 JSF Web 應用國際化支援。
為不同語言分別準備 .properties 檔案。例如支援英文、中文、日文:
Messages.propertiesMessages_zh.propertiesMessages_ja.properties檔案內容格式:message-key=message-value
範例:userName=用戶名:
.properties 檔案打包前必須轉換成 ASCII 碼形式,可用目錄階層組織,置於 WEB-INF 目錄下。例如:
WEB-INF\com\test\resource\Messages.properties WEB-INF\com\test\resource\Messages_zh.properties WEB-INF\com\test\resource\Messages_ja.properties
使用 f:loadBundle 標籤載入:
<f:loadBundle basename="com.test.resource.Messages" var="msg" />
basename:資源檔所在位置(com\test\resource)與名稱(Messages)var:載入後的變數名JSF 可根據使用者瀏覽器設定自動裝載匹配的資源檔。
使用 h:outputText 輸出:
<h:outputText value="#{msg['message-key']}"></h:outputText>
或:
<h:outputText value="#{msg.message-key}"></h:outputText>
需在 faces-config.xml 加入類似配置:
<faces-config>
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>zh</supported-locale>
<supported-locale>ja</supported-locale>
</locale-config>
</application>
</faces-config>
此配置告訴 JSF 框架預設語言配置及需支援哪些語言配置。
