2011年1月24日 星期一

struts2 多國語言依據瀏覽器語言選項

主要參考了這篇文章 struct2 國際化

我是在GAE 上執行的 所以相關設定可以參考 轉貼 struts2 整合 Google Appengine

的設定,主要包含 下載 struts2 , web.xml 設定 , structs.xml ,ServletContextListener 和 freemarker.core.TextBlock 等步驟

要使用 struct 的多國語言,不只一種方式,這裡我介紹的是在 struts.xml 中的宣告

在 struts.xml 加入 以下的敘述


<constant name="struts.custom.i18n.resources" value="applicationResource" />


value 就是自訂的名稱, 因為 struts2 資源檔的定義格式就是 自訂的名稱_語系簡碼_國家簡碼.properties 例如: applicationResource_zh_tw.properties

修改後的 struts.xml 如下

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.devMode" value="false" />

<constant name="struts.custom.i18n.resources" value="applicationResource" />

</struts>



若在eclipse 下開發的話還可以下載 “PropEdit”(http://propedit.sourceforge.jp/eclipse/updates/)這個外掛
來源參考 Struts 2.0系列教程(四)Struts2国际化(i18n)您的应用程序




簡單的jsp 如下


<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
</head>

<body>
<h1>Struts 2 i18n tag example</h1>

<s:text name="hello"/>


</body>
</html>


properties 檔的設定文字必須要先轉成 unicode 的形式字串

在java中 可以呼叫native2ascii 來協助達成, native2ascii -編碼 來源檔案 目標檔案


例如
native2ascii -encoding utf8 applicationResource_zh_tw.properties applicationResource_zh_tw2.properties




加入 properties 檔 在 src 資料夾下面 如圖




就可以開始執行

結果如範例網站 ,這裡支援 俄文(ru)、繁體中文(zh_tw)、簡體中文(zh_CN)、英文(en)
http://11.latest.catontest.appspot.com/HelloWorld.jsp

要改預覽語言的方式:

IE:
工具-> 網際網路選項-> 語言


Firefox
工具->選項->內容-> 語言->選擇

1 則留言:

Cc 提到...

zh_tw 會怪怪的, 改用zh或zh_cn就可以?? 囧 @6/20 測試