1 Locale 和 ResourceBundle 简介
ResourceBundle Locale 和 ResourceBundle都是java.util中的类,是实现国际化关键的类。
1.1 Locale
Locale表示特定的地理、政治、文化地区。
Locale[] locals = Locale.getAvailableLocales();//返回所有已安装语言环境的数组
for(Locale local: locals){
//打印出此语言环境的语言代码和国家/地区代码
System.out.println( local.getLanguage()+ "_"+local.getCountry());
}
显示的结果:(只显示一部分)
ja_JP
en_US
en_GB
en_NZ
zh_TW
en_IE
en_IN
en_AU
zh_CN
zh_HK
en_CA
Locale locale = Locale.getDefault();//获得此 Java 虚拟机实例的当前默认语言环境。
System.out.println(locale.getLanguage()+"_"+locale.getCountry());
zh_CN
当改变电脑的默认地区时,返回的默认语言环境就会改变。比如将 地区改为 英语(美国),其显示的结果为:en_US
1.2 ResourceBundle
ResourceBundle 可以根据当前用户的语言环境来读取相应的资源包
1 建立一个资源包(com.xiaochuan.resource),在包里定义两个资源文件(.properties)
命名规范为:资源名_语言代码_地区代码.properties
resource_en_US.properties
resource_zh_CN.properties
文件内容为:
#resource_en_US.properties name = Tom sex = male
#resource_zh_CN.properties # name = 汤姆 name = \u6C64\u59C6 # sex = 男 sex =\u7537
注意:在properties文件输入中文时要进行编码转换(可以使用jdk中bin目录下的native2ascii.exe进行编码转换,也可以使用Eclipse中的插件)
2 读取资源文件内容的方法
public static String getValue(String key){
//读取资源文件,getBundle(String str,Locale loclae)中的str为资源文件的路径,locale为语言环境
ResourceBundle rb = ResourceBundle.getBundle(
"com.xiaochuan.resource.resource",Locale.getDefault());
return rb.getString(key);
}
public static void main(String[] args){ String str1 = getValue("name"); String str2 = getValue("sex"); System.out.println(str1); System.out.println(str2); }
汤姆 男
如果将 本机 的 语言区域改成 英语(美国),显示就会变成:
Tom male
ps:在getBundle方法中,如果将第二个参数定义成 new Locale("en","US")
写到这里,这只是国际化的读取资源文件的部分。但如果 要在 java代码中(做报表时)有些字段需要国际化时,就可以按照以上方式来定义一个类,在该类中来定义一个静态的getValue()方法。
ps : 不足之处 请多多指教