1、web.xml中制定加载ActionServlet
<servlet>
<servlet-name>ServletAction</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2、struts-config.xml中制定资源文件名
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<message-resources parameter="msg"></message-resources>
</struts-config>
3、编写资源文件,如:msg_zh_CN.properties和msg_en_US.properties
4、velocity-tools配置文件tools.xml添加
<tool key="msg" class="org.apache.velocity.tools.struts.MessageTool"/>
5、在页面中引用:
$msg.error
另外一种使用velocity做国际化的方式是直接使用velocity-tool中自带的ResourceTool类
1、在velocity-tools配置问加你tools.xml添加:
<tool key="msg" class="org.apache.velocity.tools.generic.ResourceTool" bundles="msg"/>
2、编写资源文件,如:msg_zh_CN.properties和msg_en_US.properties
3、在页面中引用:
$msg.error
使用ResourceTool完成语言的手动切换:
经调试,ViewToolContext类中的putToolProperties会对locale进行设定
protected void putToolProperties()
{
putToolProperty(REQUEST, getRequest());
if (this.getRequest() != null) {
super.putToolProperty(LOCALE_KEY, getRequest().getLocale());
}
putToolProperty(RESPONSE, getResponse());
putToolProperty(SESSION, getSession());
putToolProperty(SERVLET_CONTEXT_KEY, getServletContext());
putToolProperty(PATH_KEY, ServletUtils.getPath(getRequest()));
}
略作修改:
protected void putToolProperties()
{
putToolProperty(REQUEST, getRequest());
if (this.getRequest() != null) {
String lang = (String)this.getRequest().getSession().getAttribute(LANG_KEY);
if (lang != null && !"".equals(lang)) {
String locales[] = lang.split("_");
super.putToolProperty(LOCALE_KEY, new Locale(locales[0], locales[1]));
} else {
super.putToolProperty(LOCALE_KEY, getRequest().getLocale());
}
}
putToolProperty(RESPONSE, getResponse());
putToolProperty(SESSION, getSession());
putToolProperty(SERVLET_CONTEXT_KEY, getServletContext());
putToolProperty(PATH_KEY, ServletUtils.getPath(getRequest()));
}
在页面将要设置的locale通过servlet设置到session中即可