Java中的资源国际化


1.资源国际化中两个常用术语 I18N 与 L10N

I18N:全称Internationlization,首字母I 与尾字母N之间共18个字母。资源国家化就是让一个软件产品使用国际环境,如语言,文化,使用习惯等;

L10N:全程Localization, 首字母L与尾字母N之间共10个字母。资源本地化就是让软件产品使用本地的环境,如语言,文化,使用习惯等。

    资源国际化与资源本地化无本质差别。如果一个软件产品最初只有英语界面,那么为了适应中国用户而使系统支持中文的过程便可视为本地化。


2.资源国际化的使用介绍

2.1 资源文件.properties

     属性文件可以存储各国语言,存储格式是 key=value。当有多个属性文件时,命名格式是:

         xxx.properties  (缺省使用)

         xxx_语言简称_国家简称.propertes (符合国家和语言时使用)

     属性文件中只能包含ASCII字符。

     注意:Uincode字符占2个字节,ASCII字符占1个字节。

     例如:

     constant.properties

 hello=你好

   constant_en_US.properties

 hello=nello

2.2 Locale

    Java会根据客户端的Locale来决定选择哪个资源文件里的内容。在java的桌面程序中,Locale由java的虚拟机提供;在java的web应用中,由客户端浏览器提供。

     Locale里面存储了有关该地区的信息,如国家,语言等;还会决定数字/日期/时间/货币/百分比等。通过如下代码可以查看所有可获得Locale:

        Locale[] al = Locale.getAvailableLocales();
        for(Locale l : al)
        {
             System.out.println(l.getDisplayLanguage() + ", " + l.getLanguage() 
                + ", " + l.getDisplayCountry() + ", " + l.getCountry());
        }

     打印结果不在粘贴。

   Locale的修改必须在类初始化之前进行,

public class Test
{
   private ResourceBundle constBundle = ResourceBundle.getBundle("constant");
        
   public void test()
   {
        System.out.println(dl.getDisplayLanguage() + ", " + dl.getLanguage() 
                + ", " + dl.getDisplayCountry() + ", " + dl.getCountry());
        
        System.out.println(constBundle.getString("hello"));   
   }
   
   public static void main(String[] args)
   {
       Test t = new Test();
       t.test();
       
       Locale.setDefault(Locale.US);
       Test t2 = new Test();
       t2.test();
       
       Locale.setDefault(Locale.UK);
       //因为没有创建constant_en_GB.properties,所以调用缺省的constant.properties,输出了中文
       Test t3 = new Test();
       t3.test();
   }
}

    输出结果:

中文, zh, 中国, CN
你好
English, en, United States, US
hello
English, en, United Kingdom, GB
你好


2.3 TimeZone

TimeZone 与Locale类似。




转载于:https://my.oschina.net/liuyuanyuangogo/blog/624746

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值