国际化(一)

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

 

 

你可能感兴趣的:(国际化)