国际化
1.全局范围的资源文件
在src目录下简历资源文件,取名过则为:baseName_laguage_country.properties,如wzh_en_US.properties,wzh_zh_CN.properties,
然后在struts.xml中配置
<constant name="struts.custom.i18n.resources" value="wzh" />
value为资源文件名称的baseName
2.在页面或action中访问国际化信息
2.1> 在jsp页面上显示方式
<s:text name="welcome" />
name为资源文件中的key值
2.2> 在action中访问
action类必须继承ActionSupport ,使用getText()方法得到国际化信息,该方法的第一个参数用于指定资源文件中的key值。
如action中
public String execute(){
ActionContext.getContext().getSession().put("message", this.getText("welcome")) ;
return "success";
}
2.3> 在表单标签中,通过key属性指定资源文件中的key值。
如:<s:textfield key="welcome" />
3.输出带有占位符的国际化信息
3.1> jsp页面输出
<s:text name="welcome" >
<s:param>liming</s:param>
<s:param>study</s:param>
</s:text>
3.2> 在action中设置占位符的国际化信息
在action中
public String execute(){
ActionContext.getContext().put("message", this.getText("welcome",new String[]{"wzh","study"})) ;
return "success";
}
在jsp上${message }显示国际化信息
4.包范围的资源文件
在java的包下放置package_language_country.properties资源文件,package为固定写法
如: package_en_US.properties,package_zh_CN.properties .
处于该包及子包下的action都可以访问该资源,当查找指定key的消息时,系统会先从package资源文件下查找,当找不到对应的key时才会从指
struts.custom.i18n.resources 的资源文件中查找,
另外:需注意的是,只有经过action跳转才会现在package下查找,如找不到则到指定的资源文件下查找,
如果没有经过action,则只会到指定的资源文件下查找
5. action范围的资源文件
在action类所在的路径下放置
ActionClassName_language_country.properties资源文件,ActionClassName为action的简单名称。当经过action查找指定资源时,系统会先在action路径下查找,然后在package下查找,如果没找到,最后会在指定的资源文件下查找。
6 .jsp中直接访问指定的资源文件下的国际化信息
所谓的jsp直接访问就是没有经过action跳转的
如:
访问全局资源文件=
<s:i18n name="wzh">
<s:text name="welcome" >
<s:param>liming</s:param>
<s:param>study</s:param>
</s:text>
</s:i18n>
<br/>
访问包下的资源文件=
<s:i18n name="cn/itcast/action/package">
<s:text name="welcome" >
<s:param>liming</s:param>
<s:param>study</s:param>
</s:text>
</s:i18n>
<br/>
访问action 范围资源文件=
<s:i18n name="cn/itcast/action/HelloWorldAction">
<s:text name="welcome" >
<s:param>liming</s:param>
<s:param>study</s:param>
</s:text>
</s:i18n>
<br/>