SpringMvc多语言配置

来源:互联网 发布:mysql中timestamp 编辑:程序博客网 时间:2024/05/18 13:06

参考:http://shihuan830619.iteye.com/blog/2003903

applicationContext.xml文件中加入如下代码: 

Java代码  收藏代码
  1. <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">  
  2.         <property name="basenames">    
  3.             <list>  
  4.                 <value>messages</value>  
  5.             </list>    
  6.         </property>  
  7.           
  8.         <!-- 这个是配置单一路径的做法,也好用  
  9.         <property name="basename">  
  10.             <value>messages</value>  
  11.         </property>  
  12.          -->  
  13.           
  14.         <property name="defaultEncoding" value="UTF-8" />  
  15.     </bean>  
  16.       
  17.       
  18.     <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">  
  19.         <property name="cookieName" value="clientlanguage"/>  
  20.         <property name="cookieMaxAge" value="94608000"/>  
  21.         <property name="defaultLocale" value="en" />  
  22.     </bean>  


spring-servlet.xml文件加入如下代码: 
Java代码  收藏代码
  1. <context:component-scan base-package="com.easeye.ymail.web.eventmail.appbusiness.multilanguage.control"/>  
  2. <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">  
  3.         <property name="paramName" value="language" />  
  4.     </bean>  


messages_en.properties文件加入如下代码: 
Java代码  收藏代码
  1. contact.mytestkey=hello\!  


messages_zh.properties文件加入如下代码: 
Java代码  收藏代码
  1. contact.mytestkey=\u60A8\u597D\!  


web.xml文件加入如下代码: 
Java代码  收藏代码
  1. <filter>  
  2.         <filter-name>systemLanguageFilter</filter-name>  
  3.         <filter-class>com.easeye.ymail.web.webcore.lang.SystemLanguageFilter</filter-class>  
  4.     </filter>  
  5.     <filter-mapping>  
  6.         <filter-name>systemLanguageFilter</filter-name>  
  7.         <url-pattern>*.do</url-pattern>  
  8.     </filter-mapping>  
  9.     <filter-mapping>  
  10.         <filter-name>systemLanguageFilter</filter-name>  
  11.         <url-pattern>*.jsp</url-pattern>  
  12.     </filter-mapping>  


SystemLanguageFilter.java代码如下: 
Java代码  收藏代码
  1. import java.io.IOException;  
  2. import java.util.Locale;  
  3.   
  4. import javax.servlet.Filter;  
  5. import javax.servlet.FilterChain;  
  6. import javax.servlet.FilterConfig;  
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.ServletRequest;  
  9. import javax.servlet.ServletResponse;  
  10. import javax.servlet.http.HttpServletRequest;  
  11.   
  12. import org.springframework.web.servlet.DispatcherServlet;  
  13. import org.springframework.web.servlet.support.RequestContextUtils;  
  14.   
  15. import com.easeye.ymail.web.webcore.utils.SpringUtil;  
  16.   
  17.   
  18. public class SystemLanguageFilter implements Filter {  
  19.   
  20.     @Override  
  21.     public void init(FilterConfig filterConfig) throws ServletException {  
  22.   
  23.     }  
  24.   
  25.     @Override  
  26.     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
  27.         request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, SpringUtil.getBean(org.springframework.web.servlet.i18n.CookieLocaleResolver.class));  
  28.         Locale locale = RequestContextUtils.getLocale((HttpServletRequest) request);  
  29.         request.setAttribute("easeyeI18nLang", locale.getLanguage());  
  30.         chain.doFilter(request, response);  
  31.     }  
  32.   
  33.     @Override  
  34.     public void destroy() {  
  35.     }  
  36.   
  37. }  


ChangeLanguageControl.java代码如下: 
Java代码  收藏代码
  1. import java.util.Locale;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.slf4j.Logger;  
  7. import org.slf4j.LoggerFactory;  
  8. import org.springframework.beans.propertyeditors.LocaleEditor;  
  9. import org.springframework.stereotype.Controller;  
  10. import org.springframework.util.StringUtils;  
  11. import org.springframework.web.bind.annotation.RequestMapping;  
  12. import org.springframework.web.bind.annotation.RequestMethod;  
  13. import org.springframework.web.bind.annotation.ResponseBody;  
  14. import org.springframework.web.servlet.LocaleResolver;  
  15. import org.springframework.web.servlet.support.RequestContextUtils;  
  16.   
  17. import com.easeye.ymail.web.webcore.messaging.OpMessage;  
  18.   
  19. /**功能: 动态改变系统的语言*/  
  20. @Controller  
  21. @RequestMapping("/")  
  22. public class ChangeLanguageControl {  
  23.   
  24. protected Logger logger = LoggerFactory.getLogger(getClass().getName());  
  25.   
  26. @RequestMapping(value = "changelanguage.do")  
  27. public String changeLanguage(HttpServletRequest request, HttpServletResponse response) {  
  28. return "redirect:" + request.getParameter("originalUrl");  
  29. }  
  30.   
  31. }  


easeye-en.js文件加入如下代码(注意引用顺序一定是先引用easeye-en.js后引用easeye-ch.js): 
Java代码  收藏代码
  1. var easeyeI18n={};  
  2. easeyeI18n["en"] = {  
  3. "contactName" : "contact name",  
  4. "userName" : "user name"  
  5. }  


easeye-ch.js文件加入如下代码: 
Java代码  收藏代码
  1. easeyeI18n["ch"] = {  
  2. "contactName" : "联系人姓名",  
  3. "userName" : "用户帐号"  
  4. }  


mybusiness.js文件加入如下代码: 
Java代码  收藏代码
  1. function getEaseyeI18nText(langKey){  
  2. return easeyeI18n[easeyeI18nLang][langKey];  
  3. }  
  4. function switchLanguage(language){  
  5. if(window.location.href.indexOf(".do")==-1){  
  6. open("/eventmail/changelanguage.do?language="+language+"&originalUrl="+encodeURI(window.location.href),"_self");  
  7. }else{  
  8. if(window.location.href.indexOf(".do?")==-1){  
  9. open("?language="+language,"_self");  
  10. }else{  
  11. open("&language="+language,"_self");  
  12. }  
  13. }  
  14. }  


在login.jsp文件中代码如下: 
Java代码  收藏代码
  1. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>  
  2.   
  3. <font color="red">  
  4.                                                                     mytestkey: <spring:message code="contact.mytestkey"  />  
  5.                                                                     Current Locale : ${pageContext.response.locale}  
  6.                                                                     </font>  
  7.   
  8. <a href="${ctx}/changelanguage.do?language=en">EN</a>  
  9.                                                                     <a href="${ctx}/changelanguage.do?language=zh_CN">CN</a>  

0 0
原创粉丝点击