java.util.ResourceBundle使用詳解

1、認識國際化資源文件
 
這個類提供軟件國際化的捷徑。經過此類,可使您所編寫的程序能夠:
         輕鬆地本地化或翻譯成不一樣的語言
         一次處理多個語言環境
         之後能夠輕鬆地進行修改,支持更多的語言環境
 
說的簡單點,這個類的做用就是讀取資源屬性文件(properties),而後根據.properties文件的名稱信息(本地化信息),匹配當前系統的國別語言信息(也能夠程序指定),而後獲取相應的properties文件的內容。
 
使用這個類,要注意的一點是,這個properties文件的名字是有規範的:通常的命名規範是: 自定義名_語言代碼_國別代碼.properties
若是是默認的,直接寫爲: 自定義名.properties
好比:
myres_en_US.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.
 
2、實例
 
定義三個資源文件,放到src的根目錄下面(必須這樣,或者你放到本身配置的calsspath下面。
 
myres.properties
aaa=good
bbb=thanks

myres_en_US.properties
aaa=good
bbb=thanks

myres_zh_CN.properties
aaa=\u597d
bbb=\u591a\u8c22

 

import java.util.Locale;
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"));
        }
}
 
運行結果:


good

Process finished with exit code 0
 
若是使用默認的Locale,那麼在英文操做系統上,會選擇myres_en_US.properties或myres.properties資源文件。
 
3、認識Locale

Locale 對象表示了特定的地理、政治和文化地區。須要 Locale 來執行其任務的操做稱爲語言環境敏感的 操做,它使用 Locale 爲用戶量身定製信息。例如,顯示一個數值就是語言環境敏感的操做,應該根據用戶的國家、地區或文化的風俗/傳統來格式化該數值。
 
使用此類中的構造方法來建立 Locale:
 Locale(String language)
 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。    
 
4、中文資源文件的轉碼 native2ascii
 
這個工具用法以下:
 
若是以爲麻煩,能夠直接將中文粘貼到裏面,回車就能夠看到轉碼後的結果了。
 
看明白這個了,就不在爲struts等web框架的國際化而感到稀奇了。
相關文章
相關標籤/搜索