国际化与格式化(1):完成程序的国际化
2013-07-01 14:45
162 查看
I18N_Welcome.java :
public class I18N_Welcome { public static void main(String[] args) { Locale myLocale=Locale.getDefault(); ResourceBundle bundle=ResourceBundle.getBundle("mess",myLocale); System.out.println(bundle.getString("welcome")); } }mess_en_US.properties :
welcome=Hello World !mess_zh_CN.properties :
welcome=\u4e16\u754c\u4f60\u597d\uff01mess_zh_CN.properties中等号后面的字符串是“世界你好!”的Unicode编码方式。对于包含非西欧字符的资源文件,Java提供了一个工具来转码:native2ascii。
我们看到两份资源文件的baseName是相同的:mess。从上面的程序可以看出,如果希望程序完成国际化,只需要将不同的国家/语言(Locale)的提示信息分别以不同的文件存放即可。例如,简体中文的语言资源文件就是Xxx_zh_CN.properties文件,而美国英语的语言资源文件就是Xxx_en_US.properties文件。
Java程序国际化的关键类是ResourceBundle,它有一个静态方法:getBundle(String baseName,Locale locale),该方法将根据Locale加载资源文件,而Locale封装了一个国家、语言,例如,简体中文环境可以用简体中文的Locale代表,美国英语环境可以用美国英语的Locale代表。
例如,通过如下代码来加载资源文件:
ResourceBundle bundle=ResourceBundle.getBundle("mess",myLocale);上面代码将会加载baseName为mess的系列资源文件之一,到底加载其中的哪个资源文件,则取决于第二个参数myLocale;对于简体中文的Locale,则加载mess_zh_CN.properties文件。对于美国英语的Locale,则加载mess_en_US.properties文件。
上面程序的输出取决于操作系统的语言环境,若为简体中文环境,则输出“世界你好!”;若为美国英文环境,则输出“Hello World !”。
总结:Java程序国际化的关键类是ResourceBundle和Locale,ResourceBundle根据不同的Locale加载语言资源文件,再根据指定的key取得已加载语言资源文件中的字符串。
相关文章推荐
- 完成程序国际化
- 词法分析器的图形程序要完成了
- 自己完成的第一个小程序
- 最简单的Struts程序(4)---Struts应用的国际化
- Qt程序国际化工具使用和相关代码编写规范
- 国际化-数字格式化
- C++第12周报告(一)用循环控制语句编写程序,完成表达式的计算
- iOS 程序内国际化的一些心得(2)
- easyui datagrid columns的field支持属性的子属性(field.sonfield形式或者格式化程序形式)
- 实验题7.1: 编写一个程序algo7-1.cpp,实现二叉树的各种基本运算,并在此基础上设计一个程序Main.cpp完成如下功能(b为如下图所示的一棵二叉树)
- 写输出30道小学生四则运算程序的解题思路及未在规定时间内完成程序的原因
- Struts1.x系列教程(16):使用LocaleAction类实现国际化的Web程序
- 后台程序完成读数据——ProgressBar与Handler
- 【0003】删除文件时,提示操作无法完成,因为文件已在程序中打开?
- php程序的国际化(转载)
- 贾康:房产税明年应进立法程序 2016年完成立法
- inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效
- 格式化HTML的程序,可以生成XML或XSL
- windows 无法格式化U盘为 NTFS 可以在 ubuntu 完成
- 程序调用批处理完成上传、下载