java.util.ResourceBundle使用詳解

來源:互聯網
上載者:User

 

java.util.ResourceBundle使用詳解  一、認識國際化資源檔 這個類提供軟體國際化的捷徑。通過此類,可以使您所編寫的程式可以:         輕鬆地本地化或翻譯成不同的語言          一次處理多個語言環境          以後可以輕鬆地進行修改,支援更多的語言環境  說的簡單點,這個類的作用就是讀取資源屬性檔案(properties),然後根據.properties檔案的名稱資訊(本地化資訊),匹配當前系統的國別語言資訊(也可以程式指定),然後擷取相應的properties檔案的內容。 使用這個類,要注意的一點是,這個properties檔案的名字是有規範的:一般的命名規範是: 自訂名_語言代碼_國別代碼.properties,如果是預設的,直接寫為:自訂名.properties比如:myres_en_US.properties
myres_zh_CN.propertiesmyres.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

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; /** * 國際化資源綁定測試 * * /**  * 注意在我電腦上要想把漢字轉化為unicode碼必須開啟jdk安裝目錄下C:\Program Files\Java\jdk1.6.0_06\bin  * 下的native2ascii.exe檔案,然後寫上漢字按斷行符號後就會產生unicode碼  * 不知道什麼原因,在我的電腦上在properties檔案目錄下產生的unicode碼是錯誤的,依然亂碼,只能通過第一種方式產生unicode碼  *   * 注意既然是國際化,比方說中文和英文,那就是準備好兩份檔案,  * 一份是myres_zh_CN.properties檔案,一份是myres_en_US.properties檔案  * @param args  */*/ 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 thanks

如果使用預設的Locale,那麼在英文作業系統上,會選擇myres_en_US.properties或myres.properties資源檔。 三、認識LocaleLocale 對象表示了特定的地理、政治和文化地區。需要 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。  

四、中文資源檔的轉碼 native2ascii 這個工具用法如下:如果覺得麻煩,可以直接將中文粘貼到裡面,斷行符號就可以看到轉碼後的結果了。 在我的電腦上不知道怎麼回事,第一種方式產生的unicode碼是錯誤的,還是亂碼,第二種方式可以產生正確的unicode碼 看明白這個了,就不在為struts等web架構的國際化而感到稀奇了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.