應用程式國際化
l 軟體的本地化 :一個軟體在某個國家或地區使用時,采用該國家或地區的語言,數字,貨币,日期等習慣。 l 軟體的國際化 :軟體開發時, 讓它能支援多個國家和地區的本地化應用 。使得應用軟體能夠适應多個地區的語言和文化風俗習慣。
l 資源檔案和資源包
要用 Struts 實作國際化和本地化,首先要定義資源檔案的名稱,這個檔案會包含用預設語言編寫的會在程式中出現的所有消息。這些消息以”鍵-值“對的形式存儲,如下:
error.validation.localtion = The entered location is invalid
當對一個應用程式進行國際化處理時,所要用的各種語言版本的”标簽“資訊應該存放在不同的屬性檔案中,每一個這樣的檔案對應一種語言版本。所有屬性檔案合在一起稱為資源包( ResourceBundle )。
屬性檔案的命名格式可分為以下兩種:
a) 檔案名字首 .properties
b)檔案名字首_語言種類.properties
檔案名字尾必須是properties,字首可自由書寫,其中語言種類字段必須是有效的ISO語言代碼。 l 檔案名字首 .properties 預設的形式,當其他屬性檔案找不到時,會預設的尋找此屬性檔案。
如何實作應用程式國際化
l 針對不同的國家定義不同的資源檔案 l 資源檔案的命名: 基名 _ 國家代碼 _ 語言代碼 .properties
預設名:基名.properties
l 定義不同的資源檔案 • 中文的資源檔案 • 檔案名: resources_zh_CN.properties • 檔案内容: item.username = 使用者名 • 英文的資源檔案 • 檔案名: resources_en_US.properties • 檔案内容: item.username = username_en • 預設的資源檔案 • 檔案名: resources.properties • 檔案内容: item.username =username l
配置全局資源與輸出國際化資訊
1、準備資源檔案
2、在struts.xml中使用struts.custom.i18n.resources常量即可加載全局資源檔案
<constantname="struts.custom.i18n.resources"
value="cn.itcast.i18n.resource" />
resource為資源檔案的基本名。
3、在jsp頁面擷取國際化的資源檔案的資訊
使用text标簽: 用來顯示一條國際化消息的資料标簽. 相當于從property
标簽調用 getText方法. 該标簽包含如下屬性:
* name: 用來檢索消息的鍵
* var:用來引用壓入 ContextMap棧的值的變量名
* 可以通過 param子标簽向 text 标簽傳遞參數
<s:text name="item.username"/>
全局資源檔案中含有占位符
使用text标簽傳遞參數:
資源檔案的資訊
item.test={0},歡迎來到xxxx{1}
jsp頁面
<s:text name="item.test">
<s:param>使用者名</s:param> {0}
<s:param>密碼</s:param> {1}
</s:text>
輸出結果:
使用者名,歡迎來到xxxx密碼
在action中擷取資源檔案的資訊
ActionSupport類實作了TextProvider接口, 該接口負責提供對各種資源包和它們的底層文本消息的通路機制.
當調用getText() 方法時, 它将按以下順序搜尋相關的屬性檔案.
Action類的屬性檔案: 該檔案的名字與相關的動作類的名字一樣, 并且和那個動作類存放在同一個目錄下
動作類所實作的各個接口的屬性檔案
動作類的各個父類的屬性檔案
動作類的各個父類所實作的各個接口的屬性檔案
如果動作類實作了ModelDriven接口, Struts 将調用getModel() 方法并從模型對象的類開始沿着類的繼承關系進行一次上溯搜尋
預設的包的屬性檔案
繼承關系中的下個父包裡的資源包
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiN1ETO0kDM3EzMwIDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
國際化—JSP中直接通路某個資源檔案
i18n 标簽: 用來加載一個自定義的 ResourceBundle.不用做任何配置
name:将被加載的資源集的java完全限定名
<s:i18n name=“resource">
<s:text name=“item.username”/>
</s:i18n>
resource為類路徑下資源檔案的基本名。
如果要通路的資源檔案在類路徑的某個包下,可以這樣通路:
<s:i18n name=“cn.itcast.i18n.resource">
<s:text name=“item.test">
<s:param>小張</s:param>
</s:text>
</s:i18n>
上面通路cn.itcast.i18n包下基本名為resource的資源檔案。
使用 native2ascii 程式轉換字元編碼
l JDK 中提供了一個 native2ascii 工具程式,它可以将某種本地字元集編碼的字元轉換成 Unicode 轉義序列的形式 l DOS 下進入 test_cn_backup.properties 檔案所在目錄,運作下面的指令後将在目前目錄下生成一個名為 test_zh_CN.properites 檔案:
native2ascii -encoding gb2312 源檔案 目标檔案.properites
native2ascii -encoding gb2312 test_cn_backup.txt test_zh_CN.properites