基于session的国际化实现方式

基于session 的springMvc 国际化,sessionspringmvc

种类中动用springMvc的框架,须要动态切换语言,找了黄金年代部分材质,最终决定采纳基于session的动态切换,完成动态切换普通话,立陶宛语,日文,其实正是把汉语翻译成别的语言体现

springMvc国际化饱含三个方面,一个是前台页面的国际化,spring有谈得来的竹签能够去落到实处,特别有帮衬,另三个是后台java代码种涉及普通话的国际化。

基于session的国际化达成方式

  • 基于session的国际化实现方式。规律:使用spring的session bean保存相应的国际化组件。
  1. 配置文件:
  • spring容器配置applicationContext.xml,中增添猎取消息的messageSource,放在spring容器而非springmvc容器加载是因为代码中有Service的注释注重于她

<!-- 国际换的service依赖于他,所以从mvc提到前面 -->
    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <!-- 国际化信息所在的文件名 -->
        <property name="basename" value="messages/messages" />
        <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->
        <property name="useCodeAsDefaultMessage" value="true" />
    </bean>
  1. springmvc容器配置

<mvc:interceptors>
      <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie/url)则必需配置 -->
      <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
  </mvc:interceptors>
  <!-- 基于session的国际化 -->
  <bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
  1. spring中的session bean信任于接口完毕,上边是其接口和对应的得以完成类

public interface I18nSessionService {

  public void setRc(RequestContext rc);

  public String getMessage(String key); 

  public String getMessage(String key,Object info);

  public String getMessage(String key,Object...objects);
}
  • 上边注明首要为设置功效域为session,注入messageSource组件,并提供RequestContext用于切换语言配置国际化

@Service
@Scope(value = WebApplicationContext.SCOPE_SESSION,
      proxyMode = ScopedProxyMode.INTERFACES)
public class I18nSessionServiceImpl implements I18nSessionService {

  @Autowired  
  @Qualifier("messageSource")  
  private MessageSource resources;
  //前端设置切换语言是设置
  RequestContext rc ;

  public RequestContext getRc() {
      return rc;
  }

  @Override
  public void setRc(RequestContext rc) {
      this.rc = rc;
  }

  @Override
  public String getMessage(String key) {
      // TODO Auto-generated method stub
      if(null != getRc()){
          return getRc().getMessage(key);
      }
      return resources.getMessage(key, null, null);
  }

  @Override
  public String getMessage(String key, Object info) {
      // TODO Auto-generated method stub
      if(null != getRc()){
          return getRc().getMessage(key, new Object[]{info});
      }
      return resources.getMessage(key, new Object[]{info}, null);
  }

  @Override
  public String getMessage(String key, Object... objects) {
              if(null != getRc()){
                  return getRc().getMessage(key, objects);
              }
              return resources.getMessage(key, objects, null);
  }
}
  1. 切换语言的controller用于切换

@Resource
  //注入I18nSessionService后在session作用域中更改local
  private I18nSessionService i18nSessionService;

  @RequestMapping(value = "/turnLanguage", method = { RequestMethod.POST, RequestMethod.GET })
  public void TurnLanguage(HttpServletRequest request,
          @RequestParam(value = "langType", defaultValue = "zh") String langType) {
      if (langType.equals("zh")) {
          Locale locale = new Locale("zh", "CN");
          request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
      } else if (langType.equals("en")) {
          Locale locale = new Locale("en", "US");
          request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
      } else {
          request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,
                  LocaleContextHolder.getLocale());
      }
      RequestContext requestContext = new RequestContext(request);
      i18nSessionService.setRc(requestContext);
  }
  1. 接纳格局

@Resource
   private I18nSessionService is;
   @RequestMapping(value="/nation",method={RequestMethod.POST,RequestMethod.GET})
   @ResponseBody
   public Result test(HttpServletRequest request){//, @RequestParam(value="langType", defaultValue="zh") String langType
       String msg = is.getMessage("argument.required","userDao");
       return new Result(true, msg, "返回数据");
   }
  • 小结:以上便是宗旨完成过程,已经足以用了

springMvc入门–初识springMvc,–初识springmvc

1、项目总体布局

图片 1 

至于bean的要害布局在spring-mvc.xml里陈设,messages文件夹里放的是急需翻译的剧情格式如下:key
 =  value 的格式

英文: 图片 2 

中文: 图片 3

韩文 :图片 4

亟待小心的是
配置文件之中涉及到的汉语要求转成unicode编码,不然翻译后会现身乱码的事态。

必发88官网 ,         springMvc是什么

       
 springmvc是显现层的框架,是一个spring的显示层组件。是总体spring框架的风度翩翩某个,不过也足以不采用springmvc。跟struts2框架成效周围。此中的mvc指的是,表现层的Model、View、controller。

相关文章