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>
目录
相关文章
|
运维 监控 Java
nacos常见问题之获取配置文件的时候报错user not found如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
2965 2
|
Java Linux 文件存储
Springboot 实现 上传、下载 以及解决必须项目重启才能访问资源的问题
Springboot 实现 上传、下载 以及解决必须项目重启才能访问资源的问题
954 0
Springboot 实现 上传、下载 以及解决必须项目重启才能访问资源的问题
|
XML 缓存 监控
Spring之面向切面(AOP)
Spring之面向切面(AOP)
340 0
|
8月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
617 4
|
10月前
|
Ubuntu 应用服务中间件 Linux
通过Certbot自动申请更新HTTPS网站的SSL证书
本文介绍了如何通过 Certbot 自动申请并更新 HTTPS 网站的 SSL 证书,配合 Crontab 实现自动续签,解决云服务商免费证书仅限 3 个月有效期的问题,适用于 CentOS、Debian、Ubuntu 系统,支持 Nginx 和 Apache 服务器。
2744 8
|
监控 安全 网络协议
永久免费SSL证书教程—自动续签
要实现免费SSL证书的自动续签,选择合适的证书颁发机构(CA)至关重要。推荐使用JoySSL,填写注册码230922可获得免费且支持自动续签的SSL证书。申请步骤包括注册账户、选择证书类型、提交申请、验证域名所有权及安装证书。配置自动续签需安装续签工具、生成密钥和CSR,并设置续签参数。定期检查证书状态、备份证书和密钥,确保续签顺利进行。注意CA机构的政策和服务条款变化,以保持证书的有效性。
|
API
全国行政区划查询免费API接口教程
该接口提供全国(不含港澳台)各级行政区划查询服务,适用于地址填写、资料登记等场景。支持5级划分:省、市、区县、乡镇、村。请求需提供用户ID、KEY及查询级别等参数,返回地名列表或错误信息。 示例中ID和KEY为公共测试用,建议使用个人ID和KEY以享受更高调用频率。
4020 23
|
SQL 存储 算法
sharding-jdbc 分库分表的 4种分片策略,还蛮简单的
sharding-jdbc 分库分表的 4种分片策略,还蛮简单的
2591 0
sharding-jdbc 分库分表的 4种分片策略,还蛮简单的
|
NoSQL Redis
RedisTemplate.opsForHash()用法简介并举例
RedisTemplate.opsForHash()用法简介并举例
2436 1
|
SQL 网络协议 Java
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
612 0