读书人

国际化(1)

发布时间: 2012-11-18 10:51:21 作者: rapoo

国际化(一)

1 Locale 和 ResourceBundle 简介

ResourceBundleLocale 和 ResourceBundle都是java.util中的类,是实现国际化关键的类。

1.1 ?Locale

Locale表示特定的地理、政治、文化地区。

?

?

Locale[] locals = Locale.getAvailableLocales();//返回所有已安装语言环境的数组for(Locale local: locals){  //打印出此语言环境的语言代码和国家/地区代码  System.out.println( local.getLanguage()+ "_"+local.getCountry());}

?

?显示的结果:(只显示一部分)

?

ja_JPen_USen_GBen_NZzh_TWen_IEen_INen_AUzh_CNzh_HKen_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.propertiesname = Tomsex = 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);}
汤姆男

如果将 本机 的 语言区域改成 英语(美国),显示就会变成:

?

Tommale

?ps:在getBundle方法中,如果将第二个参数定义成 new Locale("en","US")

写到这里,这只是国际化的读取资源文件的部分。但如果 要在 java代码中(做报表时)有些字段需要国际化时,就可以按照以上方式来定义一个类,在该类中来定义一个静态的getValue()方法。

?

ps : 不足之处 请多多指教

?

?

读书人网 >软件架构设计

热点推荐