先来一个小示例:
全局文件:
message.properties
labela=labela in zh_CN
labelb=labelb in zh_CN
message_zh_CN.properties
labela=labela in zh_CN
labelb=labelb in zh_CN
message_en_US.properties
labela=labela in en_US
labelb=labelb in en_US
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="message" /><!-- value代表文件的前缀名,如果有多个文件,用逗号隔开 -->
</struts>
show.jsp
<body>
<s:text name="labela" />
</body>
资源文件的覆盖顺序:类级>包级>全局级
Struts2访问国际化信息的不同方式
(1)用<s:text>访问国际化信息
使用带参数的国际化信息
<s:text name="文件中的key名称">
<s:param>为上面的key赋值</s:param>
</s:text>
指定国际化信息来源
<s:i18n name="message">
<s:text name="文件中的key名称">
</s:i18n>
<s:i18n>中的属性name的取值:
全局级国际化信息资源:直接用文件前缀名
包级国际化信息资源:用这个包的全限定名
类级国际化资源:用这个类的全限定名
用表单标签访问国际化信息
<s:form name="username" label="用户名" />
label:直接在页面显示用户名
<s:form>
<s:textfield name="username" label="用户名" />
</s:form>
label:在页面显示用户名<s:form>
<s:textfield name="username" key="文件的key名称" />
</s:form>
<s:i18n name="message">
<s:form>
<s:textfield name="username" key="文件的key名称" />
</s:form>
</s:i18n>