對與locale和resourceBundle的理解

朱智文發表於2015-10-26

locale:官方解釋:

        java.util.Locale類物件表示了特定的地理,政治和文化地區。 以下是有關區域設定的要點:

  • 需要Locale來執行其任務的操作稱為語言環境敏感,它使用Locale,形成資訊的使用者。

  • Locale是一種機制,用於識別物件,而不是一個容器物件本身。


locale:理解

locale類它的作用就是對檔案,或者某個內容,某個資源,以不同的形式顯示,這種形式包括,地理,政治,文化,語言,國家等

舉例

(以英文形式顯示)

Locale  locale = new Locale("en")

(以美國國家英文顯示)

Locale locale = new Locale("en","US");


1 Locale(String language) 
這個構造一個語言環境的語言程式碼。
2 Locale(String language, String country) 
這個構造一個語言環境的語言程式碼。
3 Locale(String language, String country, String variant) 
這個構造一個語言環境的語言,國家,變體。



ResourceBundle 就是對某個資原始檔進行本地化作用的(這個個類的作用就是讀取資源屬性檔案(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.
意思是都必須先轉成AScll碼


myres.properties
aaa=good
bbb=thanks

myres_en_US.properties
aaa=good
bbb=thanks

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


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


看了,覺得好,請點贊哦



相關文章