spring mvc i18n设置

来源:互联网 发布:java创建字符串数组 编辑:程序博客网 时间:2024/06/06 02:06

在实际的生产环境中,我们经常会使用国际化,我们使用spring mvc设置i18n。

  • spring-mvc.xml

    <!-- 国际化支持 --><mvc:interceptors>      <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->     <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />  </mvc:interceptors>    <bean id="localeResolver"        class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">        <property name="basenames">            <list>                <value>/config/i18n/system</value>                <value>/config/i18n/messages</value>                <value>/config/i18n/model</value>            </list>        </property>        <property name="useCodeAsDefaultMessage" value="true"/>        <property name="cacheSeconds" value="5"/><!-- 资源刷新间隔时间 -->    </bean>
  • Controller代码

    /** * 设置当前session的语言 * [zh/en] * @param request * @return */protected void  setSessionLocal(HttpServletRequest request,String langType){     Locale locale;     if(langType.equals("zh")){         locale = new Locale("zh", "CN");          request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);      }     else if(langType.equals("en")){         locale = new Locale("en", "US");          request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);     }     else {        locale=LocaleContextHolder.getLocale();        request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());     }     //设置session_locale     request.getSession().setAttribute(CwsConstants.SESSION_LOCALE_KEY, CwsUtils.isNotNull(langType)?langType:CwsConstants.SESSION_LOCALE_KEY_DEFALUT);}/** * 是否已经设置语言参数 * @param request * @return */protected boolean isSetSessionLocal(HttpServletRequest request){    HttpSession session =request.getSession();    Locale local =(Locale) session.getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME);    String langType =  (String) session.getAttribute(CwsConstants.SESSION_LOCALE_KEY);    if(CwsUtils.isNotNull(langType) && local!=null){        return true;    }else{        return false;    }}/** * 获取值从i18n中 * @param request * @return */protected final String getI18nValue(HttpServletRequest request,String key){    RequestContext requestContext = new RequestContext(request);    return requestContext.getMessage(key);}/** * 获取当前local值,主要用于菜单国际化[en/zh] * @param request * @return */protected final String getI18nLocale(HttpServletRequest request){    HttpSession session =request.getSession();    Locale local =(Locale) session.getAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME);    String langType =  (String) session.getAttribute(CwsConstants.SESSION_LOCALE_KEY);    if(CwsUtils.isNotNull(langType) && local!=null){        return langType;    }else        return CwsConstants.SESSION_LOCALE_KEY_DEFALUT;}
0 0
原创粉丝点击