常用類庫-----15.14 國際化程序

在這裏插入圖片描述

15.14.1Local類

在國際化程序實現的過程之中,對於不同國家的區域和語言編碼,可以通過java.util.Local類的實例來定義
在這裏插入圖片描述
範例:通過構造方法實例化Locale類對象

import java.util.Locale;

public class Test {
  public static void main(String[] args) {
           Locale loc=new Locale("zh","CN");//中文環境
           System.out.println(loc);//輸出當前區域;
     }
} 

執行結果

zh_CN

也可直接通過getDefault()方法獲取當前操作系統實例
範例:獲取當前系統的Locale實例

import java.util.Locale;

public class JavaAPIDemo366B {
       public static void main(String[] args) {
		Locale loc=Locale.getDefault();
		System.out.println(loc);
	}
}

執行結果

zh_CN

15.14.2 配置資源文件

國際化程序的實現過程之中,語言文字是最爲重要的內容,爲了方便進行國際化的信息展示,可以將程序中所有使用到的語言文字的信息直接保存在資源文件之中,對於資源文件的定義要求如下:
資源文件的後綴必須是“*.properties”,一個項目中的資源文件可以有兩類:
公共資源文件:所有的區域標記均可以讀取到的內容,例如:Messages.properties
具體區域的資源文件:需要在資源文件後面追加語言和國家代碼,例如:Message_zh_CN.properties
所有的資源文件一定要定義在CLASSPATH之中,允許資源文件保存在包中,例如:現在資源文件保存在了cn.mldn.message包中,則資源文件的完整名稱爲:“cn.mldn.message.Messages.properties”
資源文件中的所有的數據採用字符串形式定義,利用“key=value”的形式進行保存,即:在程序讀取時將通過key獲取對應的value內容
範例:定義cn.openlab.message.Messages.properties
資源文件必須採用“key=value”的形式進行定義,並且其數據類型都是字符串

edu.info=openlab:www.mldn.cn

15.14.3 ResourceBundle讀取資源文件

資源文件定義完成後程序可以通過java.util.ResourceBundle類實現內容的讀取,該類屬於抽象類,可以利用類中提供的static方法(getBundle())來實現本類實例化對象的獲取
在這裏插入圖片描述
範例:範例:根據key查找資源內容

import java.util.ResourceBundle;

public class JavaAPIDemo367 {
	public static void main(String[] args) throws Exception {
		// 根據資源名稱獲取ResourceBundle對象,此時的資源文件不要加後綴和語言城市編碼
		ResourceBundle resource = ResourceBundle.getBundle("openlab.Messages.properties") ;
		String val = resource.getString("edu.info") ;	// 根據key獲取相應內容
		System.out.println(val);	// 輸出value內容
	}
}

15.14.4國際化程序開發

先建立三個資源文件
在這裏插入圖片描述
範例:加載默認語言下的資源文件

package cn.mldn.demo;
import java.util.ResourceBundle;
public class JavaAPIDemo {
	public static void main(String[] args) throws Exception {
		// 獲取默認語言環境下的資源文件信息,此時不要加上語言和國家編碼
		ResourceBundle resource = ResourceBundle.getBundle("cn.ll.message.Messages") ;
		String val = resource.getString("edu.info") ;// 根據key獲取相應內容
		System.out.println(val);	// 輸出value內容
	}
}

執行結果
ll:www.m.cn

範例:通過Locale指定讀取資源編碼

package cn.ll.demo;
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");	// 設置語言和國家編碼
		// 根據Locale對象所包含的區域編碼,獲取指定編碼的資源文件內容
		ResourceBundle resource = ResourceBundle.getBundle("cn.m.message.Messages", loc);
		String val = resource.getString("edu.info") ;	// 根據key獲取相應內容
		System.out.println(val);	// 輸出value內容
	}
}

15.14.5格式化文本顯示

定義資源文件,使用動態文本標記:
在這裏插入圖片描述
格式化文本顯示數據:

package cn.m.demo;
import java.text.MessageFormat;
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");	// 設置語言和國家編碼
		// 根據Locale對象所包含的區域編碼,獲取指定編碼的資源文件內容
		ResourceBundle resource = ResourceBundle.getBundle("cn.m.message.Messages", loc);
		String val = resource.getString("edu.info") ;// 根據key獲取相應內容
		System.out.println(MessageFormat.format(val, "m", "www.m.cn"));	// 設置動態文本數據
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章