struts2的国际化
1,在src/main/resources 目录下新建资源文件
messages_en_US.properties:英文资源文件, 键值对(中英文对比)
messages_zh_CN.properties:中文资源文件(中文要用转义的ascii码)
2,在struts.xml文件中配置:
环境:value值为资源文件开头
<!--国际化 -->
<constantname="struts.custom.i18n.resources"value="messages"></constant>
在拦截器栈中配置i18nd 拦截器:
<!--国际化-->
<interceptor-ref name="i18n"/>
3,LanguageAction文件,采取的是链接形式的切换方式。
package cn.edu.hust.mestar.test.action;
import java.util.Locale;
import java.util.ResourceBundle;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
@Component
@Action("language")
@Scope("prototype")
@Namespace("/test")
@Results({ @Result(name = "lang", location = "/WEB-INF/content/login.jsp") })
public class LanguageAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public Locale local;//接收页面传递的Locale
值
public Locale getLocal() {
return local;
}
public void setLocal(Locale local) {
this.local = local;
}
public String loadLocale() {
//根据local加载资源文件
if((Locale.US).equals(local)){
ResourceBundle bundle = ResourceBundle.getBundle("messageResource",Locale.US);
}
if((Locale.CHINA).equals(local)){
ResourceBundle bundle = ResourceBundle.getBundle("messageResource",Locale.CHINA);
}
return "lang";
}
}
4,页面添加链接做切换:
<li>
<a href="${ctx}/test/language!loadLocale.action?request_locale=en_US">English</a></li>
<li>
<a href="${ctx}/test/language!loadLocale.action?request_locale=zh_CN">简体中文</a></li>
5,Jsp(login.jsp)页面:用<s:text name=”name”>,name作为key获取资源
<table class="noborder">
<tr>
<td><s:text name="j_username"/></td>
<td><input type='text' id='j_username' name='j_username' class="required"
<s:if test="not empty param.error"> value='<%=session.getAttribute(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_LAST_USERNAME_KEY)%>'</s:if> />
</td>
</tr>
<tr>
<td><s:text name="j_password"/></td>
<td><input type='password' id='j_password' name='j_password' class="required"/></td>
</tr>
<tr>
<td colspan='2' align="right">
<input type="checkbox" name="_spring_security_remember_me"/><s:text name="remember"/>
<input value="<s:text name="login"/>" type="submit" class="button"/>
</td>
</tr>
</table>