国际化程序实现

国际化程序:一套程序可以适用多个不同国家认的语言要求,那么这样的程序称为国际化程序。

如果要想实现国际化程序,则必须依靠Locale,ResourceBoundle,MessageFormat几个完成,并结合属性文件(*.properties)

Locale:表示的是一个地区,也就是说在国际化程序中通过Locale指定当前所在的地区,世界上各个国家都存在一个编号。

如果想创建Locale对象,可以有两种方法:

1,直接取出本地的语言;public static Locale getDefault();

2,指定一种语言,通过public Locale(String language,String country)指定语言和国家

实现国际化还需要一个属性文件配合,一个地区的Locale对象都应该对应一个不同的属性文件。找到属性文件之后,下一步就需要将内容读取出来,所有的内容需要依靠ResourceBundle类读取。

ResourceBundle类

此类首先是在java.util中定义的类,使用时会通过里面的静态方法取得实例,有两种方式:

1,根据本机的Locale取得属性文件:public static final ResourceBundle getBundle(String baseName)

2,根据指定的Locale取得属性文件:public static final ResourceBundle getBundle(String baseName,Locale locale)

在本地程序bin文件夹下新建属性文件,命名要求:属性名称_区域名称.properties

中文:Message_zh_CN.properties

英文:Message_en_US.properties

在其中写入“你好”的UNICODE编码,可以使用jdk/bin/目录下的,trimnative2ascii.exe

中文属性文件:info=\u4f60\u597d

英文属性文件:info=hello

其中info表示键值,\u4f60\u597d为属性的value,操作时使用键值取出value值。

Demo1以计算机本地的语言显示属性值

import java.util.Locale;
import java.util.ResourceBundle;

public class MyDemo {
    public static void main(String args[])
    {
        Locale loc=Locale.getDefault();
        ResourceBundle rb=ResourceBundle.getBundle("Message", loc);
        String value=rb.getString("info");
        System.out.print("内容为:"+value);
    }
}

Demo2多语言国际化

import java.util.Locale;
import java.util.ResourceBundle;

public class MyDemo {
    public static void main(String args[])
    {
        Locale chloc=new Locale("zh","CN");//指定中文环境
        Locale enloc=new Locale("en","US");//指定英文环境
        ResourceBundle chrb=ResourceBundle.getBundle("Message",chloc);
        ResourceBundle enrb=ResourceBundle.getBundle("Message", enloc);
        String zhvalue=chrb.getString("info");
        String envalue=enrb.getString("info");
        System.out.println(zhvalue);
        System.out.println(envalue);
    }
}

Demo3动态文本

在属性文件中加入占位符

中文属性:info=\u4f60\u597d,{0},{1},{2}

英文属性:info=hello,{0},{1},{2}

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;

public class MyDemo {
    public static void main(String args[])
    {
        Locale chloc=new Locale("zh","CN");//指定中文环境
        Locale enloc=new Locale("en","US");//指定英文环境
        ResourceBundle chrb=ResourceBundle.getBundle("Message",chloc);
        ResourceBundle enrb=ResourceBundle.getBundle("Message", enloc);
        String zhvalue=chrb.getString("info");
        String envalue=enrb.getString("info");
       
        System.out.println("中文内容为:"+MessageFormat.format(zhvalue, "123",22,"fds"));
        System.out.println("英文内容为:"+MessageFormat.format(envalue, "123",22,"fds"));
    }
}

输出内容:

中文内容为:你好,金政权,22,fds

英文内容为:hello,金政权,22,fds

public String MessageFormat.format(String str,Object ...value);

转载于:https://www.cnblogs.com/jinzhengquan/archive/2011/01/21/1941678.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值