您的位置:jsp学习站首页 >> JAVA类 >> JAVA基础 >> java的本地化问题

java的本地化问题 (1)

[ 来源:互网络 | 更新日期:2007-09-01 07:26:56 | 浏览次数:19641]
简介:?不同地区码的识别  Java 中用Locale 类识别不同的地区码。创建Locale 类的实例时指定了语言代码和地区代码。创建GB 中文和BIG5 中文资源的Locale 类实例的语句分别如下:zhLocale=new Locale("zh","CN");twLocale=new Locale("tw","TW")。此构造函数第一个参数是ISO -639 中定义的语言代码(http://www
Java 的i18n 问题,即Java 的Internationalization 问题, 指的是如何使应用程序能够同时支持多种语言的问题。对我国这样的非英语国家而汉字又有多种编码方式的情况下具有现实意义。本文将对用java 编制i18n 程序的方法作一介绍。

一、实现目标
  作为i18n 程序,不单是能够识别不同编码这么简单。它应能解决如下问题:
  *能识别不同的编码方式,如GB 码、BIG5 码等;

  *与编码有关的元素,如状态行、消息、按钮的caption 等应在程序之外存储。使新增一种语言时不用修改程序;

  *根据不同的语言习惯动态调整与语言相关的元素,如数字、金额、日期等的显示。

二、解决方法
  1.?不同地区码的识别
  Java 中用Locale 类识别不同的地区码。创建Locale 类的实例时指定了语言代码和地区代码。创建GB 中文和BIG5 中文资源的Locale 类实例的语句分别如下:zhLocale=new Locale("zh","CN");twLocale=new Locale("tw","TW")。此构造函数第一个参数是ISO -639 中定义的语言代码(http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt);第二个参数为ISO -3166 中定义的国家代码(http://www.chemie. fu -berlin.de/diverse/doc/ISO ?3166.html)。当用户选定了适用的语言后,应将此Locale 设为默认值:Locale.setDefault(new Locale("zh","CN")).

  2. 与语言相关的资源单独存放

  Java 提供了两种方法存放与语言相关的资源。一种是用文本文件;另一种是用ListResourceBundle 资源类。下面分别阐述两者的不同之处。
  *文本文件

  使用文本文件存放资源的好处是简单易用。可以用任何文本编辑器编写此文件,而且当修改资源时无须重新编译程序。其格式是´ 键= 值´ 的列表。例子如下:


  #The list in WebTaxResource_zh_CN.properties

 button1= 税金

 button2= 税率

 status1= 初始化中

  其中以´ #´ 开头的行为注释行。对应每一种语言写一个这样的资源文件,但所有的资源文件都必须包含相同的键。
  *ListResourceBundle 资源类

  虽然用文本文件存储资源非常容易,但它只能存储字符对象。而对于数字、自定义对象等它就无能为力了。因此Java 提供了ListResourceBundle 类。其缺点是每次对资源的修改都必须重新编译程序。此类的结构如下:


  //file WebTaxResource_zh_CN.java

  import java.util. *;

  public class WebTaxResource_zh_CN extends

  ListResourceBundle {

static final Object[][] contents = {

  {"frametitle"," 工资、薪金所得适用"},

  {"label_qizhengdian"," 起征点:"},

  {"label_shuikuan"," 税款:"},

  {"label_shourue"," 收入额:"},

  {"checkbox_qiushouru"," 求收入"},

  {"checkbox_qiushuie"," 求税额"},

  {"lable1"," 简易税金计算器"},

  {"button1"," 工资、薪金个人所得税计算"},

  {"button_caculate"," 计算"},

};

public Object[][] getContents() {

  return contents;

}

}

  其中两维的Object 数组存放的是键-值对。每对中的第一个元素是键。在各个资源类中所有键的数量和标识都必须完全一致。

  3. 资源的获取

  不同语言的资源存放的文件名都不相同,那如何从正确的文件取得我们需要的资源呢?留意到前面例子中properties 文件名和ListResourceBundle 类名中下划线后的部分吗?没错,它们就是在
[1] [2]
Tags:关键字:java的本地化问题
责任编辑:glen