JAVA之i18n

來源:互聯網
上載者:User

        JAVA由於採用unicode編碼,因此i18n(即internation,國際化)比較方便。下面實現一個能根據作業系統的預設地區選擇顯示字元的button,來說明java怎樣方便地實現本地化。

        基本思路是將button上要顯示的字元與一個本地化資訊的專用資源包聯絡起來。資源套件的建立使用java.util.ResourceBundle類。資源套件一般利用靜態getBundle()方法得到。getBundle()方法的函式宣告如下:

       public static final ResourceBundle getBundle(String baseName,Locale locale);

       其中baseName表示的本地化資訊設定檔的基本名,比如建立中文簡體的本地化資訊設定檔,在應用程式的檔案夾下建立一個文字檔localeInfo_zh_CN.properties,其中localeInfo為資訊設定檔的基本名,zh是語言代碼中文簡體,CN是國家代碼中國。若要支援英文,再建立一個文字檔localeInfo_us_EN.properties。利用文本建立資訊配置的好處是修改顯示資訊時不用編譯,而且可以很方便地添加更多的本地資源資訊。localeInfo_zh_CN.properties的內容如下:

       label1 = 按鈕一
       label2 = 按鈕二

       相應地,localeInfo_us_EN.properties的內容如下:

       label1 = button one
       label2 = button two

       然後一定要記住用j2sdk的native2ascii工具將文字檔轉化為ascii碼,不然非英文的資訊就將顯示為亂碼。localeInfo_zh_CN.properties轉化為ascii後的內容如下:

      label1 = /u6309/u94ae/u4e00
      label2 = /u6309/u94ae/u4e8c

       locale是一個Locale類,此類代表了特定的地理,政治或文化地區。可以通過new Locale(String language,String country)來建立,此 構 造 函 數 第 一 個 參 數 是ISO-639 中 定 義 的 語 言 代 碼(http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt); 第 二 個 參 數 為ISO-3166 中 定 義 的 國 家 代 碼(http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html)。比如中國簡體中文的Locale類可以通過zhLocale = new Locale("zh","CN");建立。

       於是我們就可以利用ResourceBundle bundle = ResourceBundle.getBundle("languageInfo",Locale.getgetDefault());建立本地化資源資訊包,其中Locale.getgetDefault()是擷取作業系統預設地區的靜態方法。

       然後利用語句JButton b1=new JButton(bundle.getString("label1"));
       JButton b2 = new JButton(bundle.getString("label2"));將按鈕b1,b2與資源資訊包中相應的索引值對應起來。這樣,當應用程式在預設地區為中文的作業系統上運行時,按鈕b1顯示為“按鈕一”,b2顯示為“按鈕二”;在英文作業系統上運行時,相應顯示為“button one”,"button two"。

     也可以人為地設定預設地區,利用Locale.setDefault(zhLocale);語句就可將預設地區設定為剛才建立的中國簡體中文zhLocale。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.