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中即可