java国际化

java国际化主要涉及2个类,Locale和ResourceBundle

一、类介绍

1、Locale

 Locale对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,它使用  Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。

使用此类中的构造方法来创建 Locale:

 Locale(String language)
 Locale(String language, String country)
 Locale(String language, String country, String variant)
 语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:
http://www.loc.gov/standards/iso639-2/englangn.html
国家/地区参数是一个有效的 ISO 国家/地区代码。这些代码是由 ISO-3166 定义的大写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:
http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html。  

另外该类有多个静态实例,可直接使用,如Locale.US

注:以上的网址已经失效,请在google中搜索ISO-639 ,ISO-3166 的定义文档

2、ResourceBundle

实例化方法:

static ResourceBundle getBundle(String baseName)
          使用指定的基本名称、默认的语言环境和调用者的类加载器获取资源包。
static ResourceBundle getBundle(String baseName, Locale locale)
          使用指定的基本名称、语言环境和调用者的类加载器获取资源包。

 baseName是文件前缀名

二、例子

首先需要将资源文件放入classpath路径下,资源文件格式如下

 文件名_语言_.国家_.properties,如下面的

 res_zh_CN.properties  中文

 res_en_US.properties   英文

 res.properties(不带语言_.国家则是默认资源文件)

代码:

     Locale locale1 = new Locale("zh", "CN");
     
        ResourceBundle resb1 = ResourceBundle.getBundle("res", locale1);
      
        System.out.println(resb1.getString("title"));

        ResourceBundle resb2 = ResourceBundle.getBundle("res", Locale.getDefault());
        System.out.println(resb2.getString("title"));
 
       
        Locale locale3 = new Locale("en", "US"); 
        ResourceBundle resb3 = ResourceBundle.getBundle("res", locale3);
        System.out.println(resb3.getString("title"));

其中title是资源文件中的key,一个资源文件内容大概是这样的,

title=title 

猜你喜欢

转载自zengshaotao.iteye.com/blog/1775293