Java學習總結:40(國際化)

國際化

所謂國際化程序指的是同一套程序代碼可以在不同的國家使用,可以根據其應用的國家自動在項目中顯示出本國的相應文字信息。

使用Locale類定義語言環境

Locale類的常用方法

No. 方法 類型 描述
1 public Locale(String language,String country) 構造 設置使用的語言以及國家編碼
2 public static Locale getDefault() 普通 取得當前語言環境下的Locale類對象

例:輸出Locale類對象

package Project.Study.LocaleClass;

import java.util.Locale;

public class Test1 {
    public static void main(String[]args){
        Locale locale=Locale.getDefault();
        System.out.println(locale);
    }
}
//結果:
//zh_CN

我們可以看到,輸出部分“zh_CN”由兩個部分組成,其中“zh”表示現在使用的語言是中文,而“CN”表示現在的國家是中國。

利用ResourceBundle讀取文件

資源文件一般都是以“key=value”的形式保存文本信息,這樣在進行信息讀取時就可以根據指定的key取得對應的value數據,但是資源文件的文件名稱是有要求的,必須以“*.properties”作爲文件後綴。

ResourceBundle類的常用方法

No. 方法 類型 描述
1 public static final ResourceBundle getBundle(String baseName) 普通 根據當前默認語言環境,取得資源對象
2 public static final ResourceBundle getBundle(String baseName,Locale locale) 普通 根據指定的語言環境,取得資源對象
3 public final String getString(String key) 普通 根據key取得對應的value數據

例:在IDEA中創建一個"*.properties"文件

如圖,右鍵點擊
在這裏插入圖片描述
輸入所創建文件的名稱,點擊OK
在這裏插入圖片描述
這樣,一個"*.properties"文件就創建完成了
在這裏插入圖片描述
接着就是往文件裏面寫入信息了
在這裏插入圖片描述
例:讀取資源文件

package Project.Study.LocaleClass;

import java.util.ResourceBundle;

public class Test2 {
    public static void main(String[]args){
    	//訪問的時候不用加上後綴,因爲默認找到的後綴就是“*.properties”
        ResourceBundle resourceBundle=ResourceBundle.getBundle("Project.Study.LocaleClass.data1");//文件的存放地址
        System.out.println(resourceBundle.getString("hello"));//根據文件中定義的key取得對應的value數據
    }
}
//結果:
//Hello World!!!

例:讀取數據並且動態設置內容

資源文件
在這裏插入圖片描述

package Project.Study.ResourceBundleClass;

import java.text.MessageFormat;
import java.util.ResourceBundle;

public class Test1 {
    public static void main(String[]args){
        //訪問的時候不用加上後綴,因爲默認找到的後綴就是“*.properties”
        ResourceBundle resourceBundle=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.test1_data");
        System.out.println(MessageFormat.format(resourceBundle.getString("data"),"World","!!!"));//設置兩個佔位符的內容
    }
}
//結果:
//Hello World!!!

多資源讀取

關於資源文件的讀取順序:
在進行資源文件的定義時可能會出現兩類資源:
1.公共資源(沒有設置語言與國家編碼)
2.具體的語言資源文件(設置了語言與國家編碼)
因爲存在兩類文件,所以在讀取的時候會優先讀取存在具體語言與國家編碼的資源文件,如果讀取不到則再讀取公共資源。
例:讀取資源文件
定義中文資源文件
在這裏插入圖片描述
定義英文(英語——美國)資源文件
在這裏插入圖片描述

package Project.Study.ResourceBundleClass;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;

public class Test2 {
    public static void main(String[]args){
        Locale zhLoc=new Locale("zh","CN");//中國——中文
        Locale enLoc=new Locale("en","US");//英語——美國
        ResourceBundle zhRB=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.Message",zhLoc);//讀取中文資源文件
        ResourceBundle enRB=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.Message",enLoc);//讀取英文資源文件
        //讀取資源內容
        System.out.println(MessageFormat.format(zhRB.getString("data"),"World","!!!"));
        System.out.println(MessageFormat.format(enRB.getString("data"),"World","!!!"));
    }
}
//結果:
//Hello World!!!
//Hi World!!!

注意:如果資源中的佔位符不足,則就算輸出時設置了相應的數據也不會輸出這些數據;反之,如果資源中設置了相應的佔位符,但輸出時沒有設置相應的數據,則會將佔位符原封不動地輸出,如:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章