SpringMVC配置i18n

简介: 版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82848367 ...
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82848367

i18n是internationalization首字母i和末尾字母n以及中间18个字母的简称,意于国际化

更多精彩

在**/src/main/resources下新建messages**文件夹

  1. 新增以下文件
    1. message.properties用于默认资源
    2. message_zh_CN.properties用于中文资源
    3. message_en_US.properties用于英文资源

spring-config.xml添加配置信息

<!-- 配置i18n资源文件 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
  <!-- 资源文件路径 -->
  <property name="basename" value="classpath:messages/message"/>
  <!-- 默认编码 -->
  <property name="defaultEncoding" value="UTF-8"/>
  <!-- 指定默认资源文件 -->
  <property name="useCodeAsDefaultMessage" value="true"/>
</bean>

spring-mvc.xml添加配置信息

<!-- 将Locale信息存放于Session中 -->
<!-- id必须是localeResolver,否则会报cannot change HTTP Head ... -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

<!-- 配置拦截器获取Locale信息 -->
<mvc:interceptors>
  <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
</mvc:interceptors>

IndexControler.java中的添加获取Locale信息方法

public class IndexController {
  
  @Autowired
  private MessageSource messageSource;

  @RequestMapping("")
  public String main(Model model, HttpServletRequest request, HttpServletResponse response) {
    // 设置语言格式
    setLanguage(model, request, response, Locale.getDefault());
    
    return "/index";
  }
  
  @RequestMapping("/{language}")
  public String main(Model model, HttpServletRequest request, HttpServletResponse response, @PathVariable String language) {
    // 分割参数
    String[] languages = language.split("_");
    
    // 设置系统语言
    setLanguage(model, request, response, new Locale(languages[0], languages[1]));
    
    return "/index";
  }
  
  /**
   * 设定语言格式
   */
  private void setLanguage(Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) {
    // 获取LocaleResolver
    LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
    
    // 设置Locale信息
    localeResolver.setLocale(request, response, locale);
    
    // 传递正确的Locale信息到页面
    model.addAttribute("encoding", messageSource.getMessage("encoding", new Object[0], locale));
  }
  
}

页面中添加spring的tag用于使用message.properties中的标签信息

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>

页面上使用spring标签获取标签信息

<spring:message code="title" />

首页提供一个下拉框用于手动切换语言

<div class="form select-langugae-panel">
  <div class="form-group">
    <select class="select-content select-content-btn">
      <option value="zh_CN" <c:if test="${encoding eq 'zh_CN' }">selected</c:if>>中文</option>
      <option value="en_US" <c:if test="${encoding eq 'en_US' }">selected</c:if>>English</option>
    </select> <i class="select-arrow"></i>
  </div>
</div>
目录
相关文章
|
XML 运维 前端开发
|
缓存 前端开发 Java
|
4月前
|
Java API 网络架构
SpringMVC(一)(2)
SpringMVC(一)(2)
27 1
|
5月前
|
前端开发 Java 应用服务中间件
|
JSON 前端开发 Java
springMVC(2)
SpringMVC_JSR303数据校验
53 0
|
前端开发 应用服务中间件
SpringMVC4
SpringMVC4
44 0
|
6月前
|
存储 JSON 前端开发
|
11月前
|
存储 JSON Java
SpringMVC应用
SpringMVC应用
59 0
|
存储 前端开发 应用服务中间件
|
XML 设计模式 开发框架
springMVC篇
Spring MVC是基于Java的Web应用程序开发框架,它是Spring框架的一部分,用于简化和加速Web应用程序的开发过程。
115 1