- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
14-1.java国际化
14-1.国际化
先来说说这个单词I18N。他是internationalization的简写,I表示第一个字母,18表示表示中间省略的字母个数,N表示最后一个字母。非常戏剧的一种命名方式,外国人的确有才。
1:java中实现国际化
首先java不可能支持所有的国家的语言,如果需要获得所支持的的语言和国家,可以调用Locale(语言环境)类的getAvailableLocales()方法获得。看代码:
/**
* 打印java支持的语言
*/
void printLanguage()
{
//java.util.Locale 对应一个特定的国家/区域、语言环境
Locale[] list = Locale.getAvailableLocales();
for (int i = 0; i list.length; i++) {
System.out.println((i+1)+:+list[i].getDisplayCountry() + = +list[i].getCountry() + + list[i].getDisplayLanguage()+ = +list[i].getLanguage());
}
} 这个函数将输出java所支持的国家/地区的语言。
2:完成国际化
要完成国际化,我们就得自己定义语言的配置文件properties。先来定义两个配置文件
Msg_en_US.properties(中文)和Msg_zh_CN.properties(英文) Msg_en_US.properties:
HelloWorld=Hello World\! Msg_zh_CN.properties
HelloWorld=\u4F60\u597D\uFF0C\u4E16\u754C\uFF01 两个配置文件分别定义了不同语言时输出的信息
来看这个方法:
/**
* 不同语言环境输出不同的信息
* @param myLocale 语言环境
*/
void myI18N(Locale myLocale)
{
//根据指定语言环境加载资源文件
ResourceBundle bundle = ResourceBundle.getBundle(Msg,myLocale);
//输出资源文件中的消息
System.out.println(bundle.getString(HelloWorld));
} myI18N(Locale.US);将会输出:Hello World!
在调用myI18N(Locale.CHINA)或者myI18N(Locale.getDefault())
将会输出:你好,世界!
说明:Locale.getDefault()获得当前计算机的操作系统语言
通过这些就能简单的实现一个国际化了
3:格式化输出占位符消息
我们来看看这种资源文件定义方式:
Msg_en_US.properties:
Greetings = Hello {0} ,Today is {1} Msg_zh_CN.properties
Greetings=你好 {0},今天是{1}
再看函数:
/**
* 使用MessageFormat处理带有占位符的消息
* @param myLocale 语言环境
* @param name 格式时所需的参数1
* @param d 格式时所需的参数2
*/
void myI18NFormat(Locale myLocale,String name,Object d)
{
//根据指定语言环境加载资源文件
ResourceBundle bundle = ResourceBundle.getBundle(Msg,myLocale);
//输出资源文件中的消息
String msg = bundle.getString(Greetings);
System.out.println(MessageFormat.format(msg, name,d));
}
myI18NFormat(Locale.US,LiQingQing,new java.util.Date());
myI18NFormat(Locale.CHINA,LiQingQing,一个非常好的天气!);
Hello LiQingQing ,Today is 10-12-22 上午11:42
你好 LiQingQing,今天是一个非常好的天气!
4:使用类文件替换属性文件
如果你不喜欢写属性文件properties,也没关系。你可以使用类文件来进行配置,当然这个类文件是有要求的:
1:必需继承ListResourceBund
文档评论(0)