主要的几点:
1.中英文配置文件 message_en.properties , message_zh_CN.properties;
2.
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:message" />
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
3.
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
4.进入首页,首先把language放进session中
/**
* 直接页面跳转请求
* @author yangpeng
*
*/
public class Forward implements Controller{
public Logger logger = Logger.getLogger(Forward.class);
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String forward = request.getParameter("forward");
if(forward==null){
forward="index";
Locale locale = request.getLocale();
String language = locale.getLanguage();
String country = locale.getCountry();
if(!"".equals(country)){
language+="-"+country;
}
request.getSession().setAttribute("language", language);
}
request.setAttribute("forward", forward);
return new ModelAndView(forward);
}
}
5.
<script type="text/javascript">
var basePath="<%=basePath%>";
var language="<%=request.getLocale().getLanguage()%>"+"-"+"<%=request.getLocale().getCountry()%>";
var languageTmp = "${languageTmp}";
if(languageTmp!=""){
language = languageTmp;
}
</script>
//这里用<c:if test="${fn:length(languageTmp)!=0}"> 用<c:if test="${languageTmp!=''}"}有问题
<c:if test="${fn:length(languageTmp)!=0}">
<fmt:setLocale value='${languageTmp}' scope='session'/>
</c:if>
<c:if test="${fn:length(languageTmp)==0}">
<fmt:setLocale value='${language}' scope='session'/>
</c:if>
<script type="text/javascript">
jQuery(function(){
var topLanguage=jQuery("#topLanguage");
if(language.indexOf("en")>-1){
topLanguage.html("<a href=javascript:switchLanguage('zh-CN')>中文</a>");
}else if(language.indexOf("zh")>-1){
topLanguage.html("<a href=javascript:switchLanguage('en')>English</a>");
}else{
topLanguage.html("<a href=javascript:switchLanguage('zh-CN')>中文</a>");
}
});
function switchLanguage(lan){
var url = "localeAction.htm?action=switchLanguage";
var pars='language='+lan;
new Ajax.Request(
url,
{
method:'post',
parameters:pars,
onSuccess: function(originalRequest){
window.location.reload();//页面刷新
},
asynchronous : true
}
);
}
</script>
6.后台
public void switchLanguage(HttpServletRequest request,HttpServletResponse response) {
String language = request.getParameter("language");
response.setContentType("text/html;charset=utf-8");
response.setHeader("Cache-Contrl", "no-cache");
// 将session中的信息更改掉
request.getSession().setAttribute("languageTmp",language);//这里是languageTmp,如果用language的话,在页面中还是以前的语言,不知道为什么?
try {
response.getWriter().flush();
response.getWriter().close();
} catch (IOException e) {
this.getLogger().error(e.getMessage(), e);
}
}