文章出處
myres_zh_CN.properties
Locale 對象表示了特定的地理、政治和文化地區。需要 Locale 來執行其任務的操作稱為語言環境敏感的 操作,它使用 Locale 為用戶量身定制信息。例如,顯示一個數值就是語言環境敏感的操作,應該根據用戶的國家、地區或文化的風俗/傳統來格式化該數值。
文章列表
java.util.ResourceBundle使用詳解
一、認識國際化資源文件
這個類提供軟件國際化的捷徑。通過此類,可以使您所編寫的程序可以:
輕松地本地化或翻譯成不同的語言
一次處理多個語言環境
以后可以輕松地進行修改,支持更多的語言環境
說的簡單點,這個類的作用就是讀取資源屬性文件(properties),然后根據.properties文件的名稱信息(本地化信息),匹配當前系統的國別語言信息(也可以程序指定),然后獲取相應的properties文件的內容。
使用這個類,要注意的一點是,這個properties文件的名字是有規范的:一般的命名規范是: 自定義名_語言代碼_國別代碼.properties,
如果是默認的,直接寫為:自定義名.properties
比如:
myres_en_US.properties
myres_zh_CN.properties
myres_zh_CN.properties
myres.properties
當在中文操作系統下,如果myres_zh_CN.properties、myres.properties兩個文件都存在,則優先會使用
myres_zh_CN.properties,當myres_zh_CN.properties不存在時候,會使用默認的
myres.properties。
沒有提供語言和地區的資源文件是系統默認的資源文件。
資源文件都必須是ISO-8859-1編碼,因此,對于所有非西方語系的處理,都必須先將之轉換為Java Unicode Escape格式。轉換方法是通過JDK自帶的工具native2ascii.
二、實例
定義三個資源文件,放到src的根目錄下面(必須這樣,或者你放到自己配置的calsspath下面。
myres.properties
aaa=good
bbb=thanks
bbb=thanks
myres_zh_CN.properties
aaa=\u597d
bbb=\u591a\u8c22
bbb=\u591a\u8c22
import java.util.ResourceBundle;
/**
* 國際化資源綁定測試
*
* @author leizhimin 2009-7-29 21:17:42
*/
public class TestResourceBundle {
public static void main(String[] args) {
Locale locale1 = new Locale("zh", "CN");
ResourceBundle resb1 = ResourceBundle.getBundle("myres", locale1);
System.out.println(resb1.getString("aaa"));
ResourceBundle resb2 = ResourceBundle.getBundle("myres", Locale.getDefault());
System.out.println(resb1.getString("aaa"));
Locale locale3 = new Locale("en", "US");
ResourceBundle resb3 = ResourceBundle.getBundle("myres", locale3);
System.out.println(resb3.getString("aaa"));
}
}
/**
* 國際化資源綁定測試
*
* @author leizhimin 2009-7-29 21:17:42
*/
public class TestResourceBundle {
public static void main(String[] args) {
Locale locale1 = new Locale("zh", "CN");
ResourceBundle resb1 = ResourceBundle.getBundle("myres", locale1);
System.out.println(resb1.getString("aaa"));
ResourceBundle resb2 = ResourceBundle.getBundle("myres", Locale.getDefault());
System.out.println(resb1.getString("aaa"));
Locale locale3 = new Locale("en", "US");
ResourceBundle resb3 = ResourceBundle.getBundle("myres", locale3);
System.out.println(resb3.getString("aaa"));
}
}
運行結果:
好
好
good
Process finished with exit code 0
好
good
Process finished with exit code 0
如果使用默認的Locale,那么在英文操作系統上,會選擇myres_en_US.properties或myres.properties資源文件。
三、認識Locale
Locale 對象表示了特定的地理、政治和文化地區。需要 Locale 來執行其任務的操作稱為語言環境敏感的 操作,它使用 Locale 為用戶量身定制信息。例如,顯示一個數值就是語言環境敏感的操作,應該根據用戶的國家、地區或文化的風俗/傳統來格式化該數值。
使用此類中的構造方法來創建 Locale:
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Locale(String language, String country)
Locale(String language, String country, String variant)
創建完 Locale 后,就可以查詢有關其自身的信息。使用 getCountry 可獲取 ISO 國家代碼,使用
getLanguage 則獲取 ISO 語言代碼。可用使用 getDisplayCountry 來獲取適合向用戶顯示的國家名。同樣,可用使用
getDisplayLanguage 來獲取適合向用戶顯示的語言名。有趣的是,getDisplayXXX
方法本身是語言環境敏感的,它有兩個版本:一個使用默認的語言環境作為參數,另一個則使用指定的語言環境作為參數。
語言參數是一個有效的 ISO 語言代碼。這些代碼是由 ISO-639 定義的小寫兩字母代碼。在許多網站上都可以找到這些代碼的完整列表,如:
http://www.loc.gov/standards/iso639-2/englangn.html。
國家參數是一個有效的 ISO 國家代碼。這些代碼是由 ISO-3166 定義的大寫兩字母代碼。在許多網站上都可以找到這些代碼的完整列表,如:
http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html。
http://www.loc.gov/standards/iso639-2/englangn.html。
國家參數是一個有效的 ISO 國家代碼。這些代碼是由 ISO-3166 定義的大寫兩字母代碼。在許多網站上都可以找到這些代碼的完整列表,如:
http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html。
四、中文資源文件的轉碼 native2ascii
這個工具用法如下:

如果覺得麻煩,可以直接將中文粘貼到里面,回車就可以看到轉碼后的結果了。

看明白這個了,就不在為struts等web框架的國際化而感到稀奇了。
本文出自 “熔 巖” 博客,轉載請與作者聯系!
文章列表
全站熱搜