國際化
1. 國際化與本地化
國際化 (Internationalization: I18N): 是程序在不做任何修改的情況下,就可以再不同的國家或地區和不同的語言環境下,按照當地的語言和格式習慣顯示字符。本地化(Localization : L10N ): 在開發國際化的程序時,創建某種語言相關的文本和格式資源的過程叫做本地化。
2. java中國際化的思路
將程序中的提示信息,錯誤信息等放在資源文件中,為不同的國家/語言編寫對應的資源文件。資源文件由很多 key-value組成,key 保存不變,value 隨著國家/語言的不同而不同。這些資源文件屬于同一資源系統,使用共同的基名(Base Name)。通過在基名后面添加ISO-639標準的語言代碼、ISO-3166標準的國家和地區代碼來進行區分。
例如: 規定基名為 abc , 可以定義 abc_zh_CN.PRoperties 大陸中文; abc_en_US.properties 美國,英文語言......
3. 使用struts實現國際化
<constant name="struts.custom.i18n.resources" value="message"></constant><constant name="struts.i18n.encoding" value="utf-8" ></constant>
根據需求創建對應的資源文件,這里假設顯示中文和英文兩種語言。在src目錄下創建兩個資源文件,名稱為 message_zh_CN.properties、 message_en.properties
示例: message_en.properties:userName=userNameuserPwd=userPassWordsubmit=submit
message_zh_CN.properties:userName=/u7528/u6237/u540DuserPwd=/u5BC6/u7801submit=/u63D0/u4EA4
<form action="login.action"><s:text name="userName"></s:text> : <s:textfield name="name" ></s:textfield> <br/><s:text name="userPwd"></s:text>: <s:password name="pwd" ></s:password> <br/><s:text name="submit"></s:text> : <input type="submit" /></form>
4. 測試:可以通過瀏覽器選擇 工具 -- Internet -- 常規 -- 語言 單擊 “添加”按鈕,選擇美國選項,并通過“上移”按鈕將其移到語言框的最上面,單擊“確定”按鈕。
5. 驗證信息的國際化顯示:通過不同的資源文件顯示不同的錯誤信息
message_en.properties:name.null = Name cannot be null......message_zh_HK.properties:name.null = 用戶名不能為空
<message key="name.null" />
this.addFieldError("user.name",getText("name.null"));
在src 目錄下添加的資源文件對全局資源文件,所有包的所有Action都可以訪問。
struts2 提供了包范圍資源文件和Action范圍的資源文件。
1) 包資源文件: 在對應保險出添加 package_languate_country.properties 資源文件。 package為固定寫法, 只有處在該包以及子包下的Action才可以訪問該文件。如 org.zm 包下定義資源文件 package_en.properties 、 package_zh_HK.properties ,則 org.zm以及其他子包中的Action可以訪問這些資源文件。
2) Action范圍的資源文件: 在Action類的所在 包內添加資源文件,命名規則 ActionClassName_language_country.properties, 其中ActionClassName為Action的名稱
7. 資源文件的查找順序當前報下的Action > package 的資源文件 > ... > 頂級包 > 從常量 "struts.custom.i18n.resources" 指定的全局資源文件中查找
新聞熱點
疑難解答