Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13387
  • 博文数量: 10
  • 博客积分: 225
  • 博客等级: 二等列兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-11 17:16
文章分类

全部博文(10)

文章存档

2011年(10)

我的朋友
最近访客

分类: Java

2011-09-02 22:31:07

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 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:
。 
国家/地区参数是一个有效的 ISO 国家/地区代码。这些代码是由 ISO-3166 定义的大写两字母代码。在许多网站上都可以找到这些代码的完整列表,如:
。  

另外该类有多个静态实例,可直接使用,如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 

阅读(308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~