国际化(一)

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值