【Java常用类库】_国际化程序
实例一:(Message不需加入properties了,程序会自动识别)
import java.util.ResourceBundle ;
public class InterDemo01{
public static void main(String args[]){
ResourceBundle rb = ResourceBundle.getBundle("Message") ; // 找到资源文件,不用编写后缀
System.out.println("内容:" + rb.getString("info")) ; // 从资源文件中取得内容
}
};
Message.properties
info = 1111HELLO
实例二:(使用Locale进行地区识别,使用MessageFormat进行格式化)
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")) ;
}
};
Message_zh_CN.properties(内容使用\jdk1.6.0_10\bin\native2ascii.exe来得到)
info =\u4f60\u597d\uff0c{0}\uff01
Message_en_US.properties
info = Hello,{0}!
Message_fr_FR.properties
info = Bonjour,{0}!
实例三:(可变参数一)
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] + "、") ;
}
}
};
实例五:(不使用资源文件,使用资源类的方式调用)
资源类:
import java.util.ListResourceBundle ;
public class Message_zh_CN extends ListResourceBundle{
private final Object data[][] = {
{"info","中文,你好,{0}!"}
} ;
public Object[][] getContents(){ // 覆写的方法
return data ;
}
};
调用程序:
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,"李兴华")) ;
}
};