使用java.util.ResourceBundle国际化

别来无恙 提交于 2019-12-06 12:47:19

如果简单使用信息文件message.properties,可以使用java.util.Properties直接load文件即可获取键值对。

但是如果考虑到国际化,需要将message.properties的内容写成不同语言的文字,也许可以考虑分别建立message.properties,message1.properties,message2.properties等等的文件存储不同的语言文字,然后在使用java.util.Properties加载时,使用Locale.getDefault()获取默认语言,或者根据客户端信息生成Locale实例,以此来写一堆if语句逐个判断使用哪个properties文件。

java.util.ResourceBundle就是将上面的过程简化的类,ResourceBundle.getBundle("message",Locale.getDefault())可以根据Locale的值自动判断对应的message.properties文件,但是自动总是要有代价的,就是命名properties文件时,有固定格式:自定义名_语言代码_国家代码.properties。如果没有对应Locale的文件,会再找默认的message.properties。
关于语言和国家如下:

语言参数是一个有效的 ISO 语言代码。这些代码是由 ISO-639 定义的小写两字母代码。在许多网站上都可以找到这些代码的完整列表,如: 
http://www.loc.gov/standards/iso639-2/englangn.html。    
国家参数是一个有效的 ISO 国家代码。这些代码是由 ISO-3166 定义的大写两字母代码。在许多网站上都可以找到这些代码的完整列表,如: 
http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html。

最后,资源文件都必须是ISO-8859-1编码,所以如中文GBK等字符集编码文件,需要使用JDK自带的工具native2ascii转码,命令:native2ascii -encoding 源文件字符集  源文件名  目标文件名。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!