閱讀606 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

國際化程序:

國際化的操作就是指一個程序可以同時適應多門語言,即:如果現在程序的使用者是中國人,則會以中文為顯示文字,如果現在程序的使用者是英國人,則會以英語為顯示的文字,也就是說可以通過國際化操作,讓一個程序適應各個國家的語言要求。那麼,對於各個國家來說,每一個程序的代碼是不會有任何變化的,但是隻是其顯示文字上有所差別。
國際化程序實現的思路:程序與顯示相分離,根據不同的Locale指定的區域找到不同的資源文件並根據其key取得對應的value。



1、Locale類


2、ResourceBundle類


import java.util.ResourceBundle ;
public class InterDemo01{
	public static void main(String args[]){
		ResourceBundle rb = ResourceBundle.getBundle("Message") ;	// 找到資源文件,不用編寫後綴
		System.out.println("內容:" + rb.getString("info")) ;		// 從資源文件中取得內容
	}
};

3、Java國際化程序的實現


import java.util.ResourceBundle ;
import java.util.Locale ;
public class InterDemo02{
	public static void main(String args[]){
		Locale zhLoc = new Locale("zh","CN") ;		// 表示中國地區
		Locale enLoc = new Locale("en","US") ;		// 表示美國地區
		Locale frLoc = new Locale("fr","FR") ;		// 表示法國地區
		// 找到中文的屬性文件,需要指定中文的Locale對象
		ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
		// 找到英文的屬性文件,需要指定英文的Locale對象
		ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc) ;
		// 找到法文的屬性文件,需要指定法文的Locale對象
		ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc) ;
		// 依次讀取各個屬性文件的內容,通過鍵值讀取,此時的鍵值名稱統一為info
		System.out.println("中文:" + zhrb.getString("info")) ;
		System.out.println("英語:" + enrb.getString("info")) ;
		System.out.println("法語:" + frrb.getString("info")) ;
	}
};



4、處理動態文本


import java.util.ResourceBundle ;
import java.util.Locale ;
import java.text.* ;
public class InterDemo03{
	public static void main(String args[]){
		Locale zhLoc = new Locale("zh","CN") ;		// 表示中國地區
		Locale enLoc = new Locale("en","US") ;		// 表示美國地區
		Locale frLoc = new Locale("fr","FR") ;		// 表示法國地區
		// 找到中文的屬性文件,需要指定中文的Locale對象
		ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
		// 找到英文的屬性文件,需要指定英文的Locale對象
		ResourceBundle enrb = ResourceBundle.getBundle("Message",enLoc) ;
		// 找到法文的屬性文件,需要指定法文的Locale對象
		ResourceBundle frrb = ResourceBundle.getBundle("Message",frLoc) ;
		// 依次讀取各個屬性文件的內容,通過鍵值讀取,此時的鍵值名稱統一為info
		String str1 = zhrb.getString("info") ;
		String str2 = enrb.getString("info") ;
		String str3 = frrb.getString("info") ;
		System.out.println("中文:" + MessageFormat.format(str1,"李興華")) ;
		System.out.println("英語:" + MessageFormat.format(str2,"LiXingHua")) ;
		System.out.println("法語:" + MessageFormat.format(str3,"LiXingHua")) ;
	}
};

5、可變參數

public class InterDemo04{
	public static void main(String args[]){
		System.out.print("第一次運行:") ;
		fun("LXH","Li","李興華") ;	// 傳入三個參數
		System.out.print("\n第二次運行:") ;
		fun("MLDN") ;				// 傳入一個參數
	}
	public static void fun(Object...args){	// 固定語法,輸入任意多個數據,使用數組表示
		for(int i=0;i<args.length;i++){
			System.out.print(args[i] + "、") ;
		}
	}
};
數組的形式:
public class InterDemo05{
	public static void main(String args[]){
		System.out.print("第一次運行:") ;
		Object[] arg1 = {"LXH","Li","李興華"} ;
		fun(arg1) ;	// 傳入三個參數
		System.out.print("\n第二次運行:") ;
		Object[] arg2 = {"MLDN"} ;
		fun(arg2) ;				// 傳入一個參數
		System.out.print("\n第三次運行:") ;
		Object[] arg3 = {} ;		// 沒有參數傳入
		fun(arg3) ;
	}
	public static void fun(Object...args){	// 固定語法,輸入任意多個數據,使用數組表示
		for(int i=0;i<args.length;i++){
			System.out.print(args[i] + "、") ;
		}
	}
};

6、使用一個類代替資源文件ListResourceBundle



讀取資源類:
import java.util.ResourceBundle ;
import java.util.Locale ;
import java.text.* ;
public class InterDemo06{
	public static void main(String args[]){
		Locale zhLoc = new Locale("zh","CN") ;		// 表示中國地區
		// 找到中文的屬性文件,需要指定中文的Locale對象
		ResourceBundle zhrb = ResourceBundle.getBundle("Message",zhLoc) ;
		String str1 = zhrb.getString("info") ;
		System.out.println("中文:" + MessageFormat.format(str1,"李興華")) ;
	}
};







最後更新:2017-04-03 14:53:50

  上一篇:go Java常用類庫--System類
  下一篇:go 打包下載Android源碼