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