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