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 : 不足之处 请多多指教