1.首先struts2项目搭建完毕后,我们在src文件夹下。即struts2.xml同级文件夹下创建资源文件。资源文件的名称格式为:
XXX_语言_国家.properties
XXX:资源文件名。
语言、国家:必须是java所支持的语言和国家。比如:
中国大陆:语言 zh 国家 CN
美国:语言 en 国家 US
所以我们能够这么取名:
比如:i18n_zh_CN.properties
i18n_en_US.properties
2.创建上述的两个资源文件,然后在当中输入内容:key 和 value
比如:i18n_zh_CN.properties中输入:username=用户名,当输入中文时会自己主动转换为ascii码:
username=^\u7528\u6237\u540D
i18n_en_US.properties中输入:username=UserName
3.然后我们在struts2.xml中配置全局资源文件
<constant name="struts.custom.i18n.resources" value="XXX"></constant>
这里value取值为i18n(可以取任意值)
目录结构
代码:i18n.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="" >
<!--若 label 标签使用 %{getText('username')} 的方式就也可以从国际化资源文件中获取 value 值了
因为此时在对象栈中有 DefaultTextProvider 的一个实例, 该对象中提供了访问国际化资源文件的 getText() 方法
同时还需要通知 struts2 框架 label 中放入的不再是一个普通的字符串, 而是一个 OGNL 表达式. 所以使用 %{} 把 getText()包装起来, 以强制进行 OGNL 解析.
-->
<!-- theme="simple"若加上theme="simple"主题
页面上可以直接使用 <s:text name="" /> 标签来访问国际化资源文件里的 value 值.
<s:text name="username"/>:
<s:text name="username"/>:
<s:text name="password"/>:
-->
<s:textfield name="username" label="%{getText('username')}"></s:textfield>
<!-- key 的方式是直接上资源文件中获取 value 值 -->
<s:textfield name="username" key="username"></s:textfield>
<s:password name="password" key="password"></s:password>
<s:submit key="submit" value="%{getText('submit')}"></s:submit>
</s:form>