Web 應(yīng)用實(shí)現(xiàn)國(guó)際化(i18n),主要包括兩個(gè)方面
一、頁(yè)面 ( jsp )靜態(tài)信息 的 國(guó)際化
二、動(dòng)態(tài)消息的 國(guó)際化
在開(kāi)始 Struts 國(guó)際化之前,我們先來(lái)看一下 java 如何實(shí)現(xiàn)國(guó)際化
主要步驟:
1、創(chuàng)建屬性文件(國(guó)際化資源文件)
* 國(guó)際化資源文件是有baseName+Locale構(gòu)成,如MessagesBundle_en_US.properties
* 缺省的國(guó)際化資源文件是baseName.properties格式命名,如:MessagesBundle.properties
* 關(guān)于中文必須轉(zhuǎn)換成unicode,可以采用JAVA_HOME/bin/native2ascii工具轉(zhuǎn)換
命令 native2ascii.exe o.properties MessagesBundle_zh_CN.properties
也可以一個(gè)一個(gè)字符轉(zhuǎn)換
舉例:
屬性文件示例:
k1=China
k2=Hello,{0}
2、定義Locale對(duì)象
* 可以獲得系統(tǒng)默認(rèn) local ,也可以自定義
* 缺省的Locale是有操作系統(tǒng)決定的
* Locale是有語(yǔ)言和國(guó)家代碼構(gòu)成
3、創(chuàng)建一個(gè)ResourceBundle對(duì)象
* ResourceBundle對(duì)象用于分離跟本地相關(guān)的數(shù)據(jù)
* 如果找不到相應(yīng)語(yǔ)言或國(guó)家代碼的屬性文件,將使用默認(rèn)的屬性文件(即沒(méi)有標(biāo)識(shí)語(yǔ)言和國(guó)家代碼的屬性文件:MessagesBundle.properties)
4、從ResourceBundle對(duì)象中獲取數(shù)據(jù),如果有占位符,可以給占位符賦值
示例:
public class test {
public static void main(String[] args)
{
//獲取系統(tǒng)默認(rèn)locle
Locale localeDefault=Locale.getDefault();
System.out.println("Country="+localeDefault.getCountry());
System.out.println("Language="+localeDefault.getLanguage());
System.out.println("------------------------");
//我們通過(guò)指定一個(gè)語(yǔ)言代碼和國(guó)家代碼來(lái)創(chuàng)建一個(gè)Locale對(duì)象
Locale localeNew=new Locale("en","US");
System.out.println("Country="+localeNew.getCountry());
System.out.println("Language="+localeNew.getLanguage());
System.out.println("------------------------");
//讀取國(guó)際化資源文件
/**
* 其創(chuàng)建方式如下:
第一個(gè)參數(shù),表示要從哪些資源屬性文件中(MessagesBundle_XX_XX.properties)獲取數(shù)據(jù)
第二個(gè)參數(shù),是一個(gè)Locale對(duì)象,表示要選擇哪個(gè)資源屬性文件
ResourceBundle對(duì)象用于分離跟本地相關(guān)的數(shù)據(jù)
如果找不到相應(yīng)語(yǔ)言或國(guó)家代碼的屬性文件,
將使用默認(rèn)的屬性文件(即沒(méi)有標(biāo)識(shí)語(yǔ)言和國(guó)家代碼的屬性文件:MessagesBundle.properties)
*/
ResourceBundle myResources =ResourceBundle.getBundle("com.jialin.resource.MessagesBundle", localeDefault);
//從ResourceBundle對(duì)象中獲取數(shù)據(jù)
System.out.println(myResources.getString("k1"));
System.out.println(myResources.getString("k2"));
System.out.println("------------------------");
//給國(guó)際化資源文件中的占位符賦值
MessageFormat myFormat=new MessageFormat(myResources.getString("k2"));
System.out.println(myFormat.format(new Object[]{"jialin"}));
}
}
Struts國(guó)際化實(shí)現(xiàn)的核心原理,基本也是這個(gè)樣子,只是把相關(guān)的東西都寫(xiě)到了配置文件中,更復(fù)雜也更靈活一些。
下篇繼續(xù)介紹Struts如何實(shí)現(xiàn)國(guó)際化。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

