天天看點

整裝待發-實操程式國際化 | 帶你學《Java語言進階特性》之二十九

上一篇:使用ResourceBundle實作資源的統一調配 | 帶你學《Java語言進階特性》之二十八

在前兩節了解了程式國際化的基本内容,并能夠實作對相關功能的使用後,現在讓我們一起來實操一個程式,使其完成國際化。

【本節目标】

通過閱讀本節内容,你将整合之前所學,依靠預設的資源檔案,使用Locale進行自動調用,或使用ResourceBundle指定一個資源檔案,完整完成對一個程式的國際化改造。

實作國際化程式開發

現在國際化程式的實作前期準備已經全部完成了,也就是說依靠資源檔案、Locale、ResourceBundle類就可以實作國際化的處理操作,那麼下面來進行國際化的程式實作(核心關鍵:讀取資源資訊)。

1、在CLASSPATH下建立:cn.mldn.message.Messages_zh_CN.properties(中文資源);

info=歡迎您的通路!

2、在CLASSPATH下建立:cn.mldn.message.Messages_en_US.properties(英文資源);

info=Welcome !

現在加上沒有預設區域的資源檔案,一共定義了三個資源:

整裝待發-實操程式國際化 | 帶你學《Java語言進階特性》之二十九

三個資源檔案

3、通過程式進行指定區域的資源資訊加載

import java.util.ResourceBundle;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        ResourceBundle resource = ResourceBundle.getBundle("cn.mldn.message.Messages");
        String val = resource.getString("info");
        System.out.println(val);   //歡迎您的通路!
    }
}           

此時在利用ResourceBundle類讀取資源的時候并沒有設定一個明确的Locale對象,但是發現“Messages_zh_CN”檔案起作用了,因為這個方法裡面預設加載的就是目前本地的Locale的資源:

public static final ResourceBundle getBundle(String baseName) {
    Class<?> caller = Reflection.getCallerClass();
return getBundleImpl(baseName, Locale.getDefault(), 
caller,getDefaultControl(caller,baseName));
}           

4、如果現在有需要也可以修改目前的Locale環境,則可以使用ResourceBundle類中的如下方法:

擷取ResourceBundle:

public static final ResourceBundle getBundle(String baseName, Locale locale);           
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        Locale loc=new Locale("en","US");
        ResourceBundle resource = ResourceBundle.getBundle("cn.mldn.message.Messages",loc);
        String val = resource.getString("info");
        System.out.println(val);     //Welcome !
    }
}           

如果現在有指定區域的資源檔案存在的時候,那麼沒有設定區域的資源檔案的資訊将不會被讀取。

資源檔案讀取順序:讀取指定區域的資源檔案>預設的本地資源>公共的資源(沒有區域設定)。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:教你借助占位符定制資源内容 | 帶你學《Java語言進階特性》之三十 更多Java面向對象程式設計文章檢視此處