国际化程序:
国际化的操作就是指一个程序可以同时适应多门语言,即:如果现在程序的使用者是中国人,则会以中文为显示文字,如果现在程序的使用者是英国人,则会以英语为显示的文字,也就是说可以通过国际化操作,让一个程序适应各个国家的语言要求。那么,对于各个国家来说,每一个程序的代码是不会有任何变化的,但是只是其显示文字上有所差别。
国际化程序实现的思路:程序与显示相分离,根据不同的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,"李兴华")) ; } };