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>
目录
相关文章
【全是精华】Token的获取和使用-FastApi版
【全是精华】Token的获取和使用-FastApi版
1490 0
|
Java
JSP之Web组件复用
JSP之Web组件复用
566 0
JSP之Web组件复用
|
存储 自然语言处理 PyTorch
PyTorch使用常见异常和解决办法汇总
通过Conda安装PyTorch,同时在Jupyter中导入PyTorch,会报错No module named &#39;torch&#39;。
PyTorch使用常见异常和解决办法汇总
|
负载均衡 NoSQL druid
SpringBoot + SpringCloud 构建分布式、负载均衡系统,前后分离企业级快速开发脚手架
SpringBoot + SpringCloud 构建分布式、负载均衡系统,前后分离企业级快速开发脚手架
559 0
|
消息中间件 存储 Java
RocketMQ 消费者启动流程
RocketMQ 消费者启动流程
606 0
RocketMQ 消费者启动流程
|
存储 JSON 测试技术
Unittest自动化测试框架合集(全文带注释2w字教程)——从0到1学会unittest框架
本文通过理论讲解+大量实例演示,全面介绍了unittest测试框架的使用方法,从0到1学习自动化测试框架必备。
647 0
Unittest自动化测试框架合集(全文带注释2w字教程)——从0到1学会unittest框架
官宣!支付宝小程序的 23 个入口大盘点
近日,支付宝小程序场景值文档发布。场景值用于描述用户进入小程序的路径,也就是说,场景值即代表了的小程序入口 。
4091 12
官宣!支付宝小程序的 23 个入口大盘点
|
Java Shell 开发工具
ADB 工具包 ddmlib 的剖析与修改
因为最近开发的系统,需要从Java端控制Android,所以使用到了ADB的Java库ddmlib,它的功能非常全,而且是Google官方维护的ADB Java Lib。但是在实际使用的过程中,出现了并发使用时ADB掉线的情况,怀疑是通过ADB传输的数据带宽消耗过大导致的,所以对ddmlib进行了修改,使其可以设置每台手机的传输带宽限制。此外,为了远程调试线上系统的指定设备,我还在ddmlib加入了一个ADB Proxy的功能。
软考:净现值NPV、回收期、收益率计算方法
软考:净现值NPV、回收期、收益率计算方法
2149 0
软考:净现值NPV、回收期、收益率计算方法