一、编写资源文件
在WEB-INF/classes路径下(eclipse中的src文件夹中)创建国际化资源文件,将需要进行国际化的内容以键值对的形式写入资源文件中。
Message_en_US.properties文件:
account=Please input your account
password=Please input your password
male=male
female=female
Message_zh_CN.properties文件:
account=请输入用户名
password=请输入密码
male=男
female=女
- 资源文件命名规则:
baseName_language_country.properties
其中baseName自定义,language和country必须是java支持的语言和国家,命名方式已有明确规定。例如可以将中国大陆中文资源文件命名为message_zh_CN.properties,美国英文资源文件命名为message_en_US.properties。
列举几个:
中国:baseName_zh_CN.properties
台湾:baseName_zh_TW.properties
香港:baseName_zh_HK.properties
美国:baseName_en_US.properties
英国:baseName_en_GB.properties
加拿大:baseName_en_CA.properties
澳大利亚:baseName_en_AU.properties
日本:baseName_ja_JP.properties
法国:baseName_fr_FR.properties
- 如何创建国际化资源文件?
单击选中src文件夹,点击菜单栏的File,依次选择New、File,输入资源文件名并点击Finish,创建完成。
二、中文资源文件转码
在创建中文资源文件时可以先将它命名为message_zh_CN_temp.properties。
打开命令行工具,进入资源文件所在的文件夹,用native2ascii工具对中文资源文件进行转码,命令为: Native2ascii –encoding UTF-8 message_zh_CN_temp.properties message_zh_CN.properties
意思是:用Native2ascii –encoding工具对message_zh_CN_temp.properties文件进行UTF-8格式的转码,转码后的文件名为message_zh_CN.properties。
最后,删除message_zh_CN_temp.properties文件。
三、访问国际化消息
3种方式:
1)在文本框中输出国际化消息:为<s:text …/>标签指定name属性,该属性指定资源文件中的key。
例:<s:text name="account"/>
2) 在表单元素的Label中输出国际化消息:为该表单标签指定一个key属性,该属性指定了国际化资源文件的key。
例:<s:password name="loginUser.password" key="password" />
3)在Action类中访问国际化消息:使用ActionSupport类的getText方法接收一个name参数,该参数指定了国际化资源文件的key。
例:<s:radio name="loginUser.sex" list="#{'1':getText('male'), '0':getText('female')}" />
四、加载资源文件
3种方式:
1)创建struts.properties文件,通过它加载资源文件:
struts.custom.i18n.resources=baseName
struts.i18n.encoding=GBK
2)在struts.xml文件中加载全局资源文件
<constant name="struts.custom.i18n.resources" value="baseName"/>
<constant name="struts.i18n.encoding" value="GBK" />
3)在JSP页面中临时加载资源文件
<s:i18n name="baseName">
<s:form action="login" method="post"> …… </s:form>
</s:i18n>
以上的baseName实际为资源文件的路径,例如,若将资源文件放在cn.edu.zjut.local包中,则baseName应改为cn.edu.zjut.local.baseName。由于我直接将资源文件放在src根目录下,故直接用baseName即可。(我如果把资源文件放在某个包中时就无法生效,I don’t know why…)
五、测试
通过以上步骤,已经实现了struts2的国际化。若要测试国际化是否成功,在浏览器中访问工程页面,打开浏览器的I你Internet选项(一般在工具中),选择“常规”一栏;
选择“外观”中的“语言”,就可以看到浏览器页面的语言首选项;
也可以点击右侧的“添加”来添加新语言;
添加好语言后,选中某一语言,通过右侧的“上移”和“下移”调整浏览器的语言选择顺序,排在最上面的语言最优选择。
调整好之后刷新页面,若页面变为相应的语言,那么国际化就成功啦!