1、I18N
I18N(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。Java为实现国际化提供了工具类,即为不同的语言提供不同的资源文件。
2、I18N简单示例
(1)编写资源文件
app_en_US.properties 如下:
message=welcome!!
app_zh_CN.properties 如下:
message=\u6B22\u8FCE\u6B22\u8FCE\uFF0C\u70ED\u70C8\u6B22\u8FCE\uFF01
对应的值为:欢迎欢迎,热烈欢迎!
因为使用的是myeclipse10版本,已自带propertie ascii转换插件,所以显示上述内容。
(2)主程序
package com.struts2.yy;
import java.util.Locale;
import java.util.ResourceBundle;
public class TestI18N {
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("yy", Locale.CHINA);
System.out.println(bundle.getString("message"));
}
}
上述是获取中文,执行结果如下:
欢迎欢迎,热烈欢迎!
同理英文可得。
3、国际化资源文件
(1)命名规范:自定义名称_语言代码_国别代码.properties
如果是默认的,则直接 自定义名称_properties。
(2)优先级
现有三个资源文件: yy.properties、yy_zh_CN.properties、yy_en_US.properties。
在中文操作系统下,会优先使用yy_zh_CN.properties;如果不存在,则使用默认的yy.properties。
(3)没有提供语言和地区的资源文件使用默认的。
(4)资源文件都必须是ISO-8859-1编码,因此对于非西方语言的资源文件,必须将之转化为Unicode编码,转换工具使用JDK自带的native2ascii命令。命名如下
native2ascii -encoding oldFileEncoding[原资源文件编码] oldFile[原资源文件名称] newFile[新资源文件名称]
(1)资源文件的级别
Action级别、Package级别以及应用级别,通常是应用级别
(2)struts.xml文件中配置资源文件前缀,如下:
<constant name="struts.custom.i18n.resources" value="yy"></constant>