容易。 例如,要创建标识为" 计算器" 的标签,只要调用以下语句: label1=new Label(bundle.getString("label_ jisuanqi"), Label.CENTER); getString 方 法 的 参 数 是 资 源 文 件 中 的 键 名 。 除 了 getString 外 , ResourceBundle 类还提供了其他方法获取不同的对象,如 getStringArray、 getObject 等(因为在 ListResourceBundle 的实例中允许存在非字符对象) 。
4. 转换非 Unicode 资源
在 Java 内部字符是用 Unicode 字符表示的。Unicode 是一种 16bit 的 编码,支持大多数地区的语言。因此,无论是用文本文件还是用资源类的方式存 储资源,都应该将非 Unicode 字符转换为 Unicode 字符。Java 为我们提供了 转 换 的 工 具 - Native2ascii 。 将 含 有 GB 编 码 的 汉 字 的
WebTaxResource_zh.CN.properties 文件转换为只含 Unicode 字符的例子如 下: native2ascii - encoding GB2321 WebTaxResource_zh_CN.properties \WebTaxResource_zh_CN.properties 到此为止,一个支持 i18n 的程序就已初步完成了。
三、其他相关问题 正如实现目标中所讲到,支持 i18n 的程序不但要识别不同的编码方式,还 要根据不同的语言习惯动态调整与语言相关的元素,如数字、金额、日期等的显 示。例如在法文中数值 123456.78 表示为 123 456,78;而在德文中应表示为 123.456,78。除了数值和货币之外,不同语言有不同表示的元素还有日期、时 间和文本消息。 Java 提供了 NumberFormat、 DateFormat、 MessageFormat 类根据不同的 Locale 实例动态改变这些元素的显示模式。下面的例子将根据不 同的 Locale 实例改变数值 123456.78 的显示方式。
Double amount = new Double (123456.78); NumberFormat numberFormatter;
String amountOut; numberFormatter = NumberFormatgetNumber.Instance(current
Locale); amountOut = numberFormatter.format (amount); System.out.println(amountOut +" " +currentLocale.toString());
当然,实现 Java 程序的 i18n 还有很多问题要考虑,如不同语言的语法问 题等。但在 Java 中,遇到问题多看看联机
文档或其他相关的资料,一般都能得 到满意的答案。