SpringBoot系列——i18n国际化

  前言

  国际化是项目中不可或缺的功能,本文将实现springboot + thymeleaf的HTML页面、js代码、java代码国际化过程记录下来。

  代码编写

  工程结构

  每个文件里面的值(按工程结构循序从上往下)

##################默认值#############################
welcome=Welcome
##################英文#############################
welcome=Welcome
##################简体中文#############################
welcome=欢迎
##################簡體中文#############################
welcome=歡迎

  

  yml配置文件

#注意:在yml文件中添加value值时,value前面需要加一个空格
#2.0.0的配置切换为servlet.path而不是"-"
server:
  port: 10086 #端口号
  servlet:
    context-path: /springboot #访问根路径

spring:
    thymeleaf:
      cache: false  #关闭页面缓存
      prefix: classpath:/view/  #thymeleaf访问根路径
      mode: LEGACYHTML5

    messages:
      basename: static/i18n/messages #指定国际化文件路径

  LocaleConfig.java,

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class LocaleConfig extends WebMvcConfigurerAdapter {

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        // 默认语言
        slr.setDefaultLocale(Locale.US);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        // 参数名
        lci.setParamName("lang");
        return lci;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

}

  controller

  单纯的跳转页面即可

    @RequestMapping("/i18nTest")
    public ModelAndView i18nTest(){
        ModelAndView mv=new ModelAndView();
        mv.setViewName("i18nTest.html");
        return mv;
    }

  HTML使用,注意要用 #{} 来取值

<!DOCTYPE html>
<!--解决idea thymeleaf 表达式模板报红波浪线-->
<!--suppress ALL -->
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h3 th:text="#{welcome}"></h3>
    <a href="?lang=en_US">English(US)</a>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <a href="?lang=zh_CN">简体中文</a>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <a href="?lang=zh_TW">繁体中文</a>
</body>
</html>

  js代码使用

  需要先引入jquery插件,自行百度下载或者使用webjar去拉取,可以封装成一个区安监局方法,用到时直接调用

    <script th:src="@{/js/jquery-1.9.1.min.js}"></script>
    <script th:src="@{/js/jquery.i18n.properties.js}"></script>
<script th:inline="javascript">
    //项目路径
    ctx = [[${#request.getContextPath()}]];

    //初始化i18n插件
    try {
        $.i18n.properties({
            path: ctx + ‘/i18n/‘,
            name: ‘messages‘,
            language: [[${#locale.language+‘_‘+#locale.country}]],
            mode: "both"
        });
    } catch (e) {
        console.error(e);
    }

    //初始化i18n方法
    function i18n(labelKey) {
        try {
            return $.i18n.prop(labelKey);
        } catch (e) {
            console.error(e);
            return labelKey;
        }
    }

    console.log(i18n("welcome"));
</script>

  java代码使用

  先封装个工具类,直接静态调用

@Component
public class I18nUtil {

    private static MessageSource messageSource;

    public I18nUtil(MessageSource messageSource) {
        I18nUtil.messageSource = messageSource;
    }

    /**
     * 获取单个国际化翻译值
     */
    public static String get(String msgKey) {
        try {
            return messageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale());
        } catch (Exception e) {
            return msgKey;
        }
    }
}

  调用

        System.out.println(I18nUtil.get("welcome"));

  效果展示

  默认

  英文

  中文

  繁体

  结束语

  文章部分参考:玩转spring boot——国际化:https://www.cnblogs.com/GoodHelper/p/6824492.html

原文地址:https://www.cnblogs.com/huanzi-qch/p/10000324.html

时间: 2024-10-08 20:10:08

SpringBoot系列——i18n国际化的相关文章

SpringBoot系列之集成Thymeleaf用法手册

目录 1.模板引擎 2.Thymeleaf简介 2.1).Thymeleaf定义 2.2).适用模板 3.重要知识点 3.1).th:text和th:utext 3.2).标准表达式 3.3).Thymeleaf遍历 3.4).公共模块抽取 3.5).行内写法介绍 3.6).Thymeleaf语法规则 4.SpringBoot集成 4.1).Springboot集成Thymeleaf简介 4.2).Thymeleaf自动配置源码简单分析 SpringBoot系列之Thymeleaf语法简单介绍

springboot使用i18n时properties文件中文乱码

在springboot使用i18n进行国际化文件配置时,文件名为messages_zh_CN.properties的文件中填写中文信息,当使用浏览器进行访问时,出现中文乱码,此时在idea中进行修改setting配置: 注: 修改配置后,该properties配置文件的中文已经乱码了,如果没有把该文件的乱码的中文改回来,用浏览器访问时还是乱码(我就是这样被坑的,改了配置,没有重新去查看该配置文件...)

Django1.9开发博客(12)- i18n国际化

国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指定他们哪些app应该被翻译或被格式化为本地形式. 允许用户根据自己的偏好来实现本地化显示.翻译依据语言,格式化依据国家, 这些信息由浏览器中的Accept-Language头来决定.不过目前为止时区还未能实现. 参考官方文档:https://docs.djangoproject.com/en/1.9

Springboot系列1_什么是Springboot

.title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .timestamp-kwd

SpringBoot系列——利用系统环境变量与配置文件的分支选择实现“智能部署”

前言 通过之前的博客:SpringBoot系列——jar包与war包的部署,我们已经知道了如果实现项目的简单部署,但项目部署的时候最烦的是什么?修改成发布环境对应的配置!数据库连接地址.Eureka注册中心地址.Redis服务地址等,部署环境不一样,打包的时候就要改成对应的配置:常用的环境有本地开发环境dev,本地测试环境dev-test,生产测试环境prod-test,生产环境prod: 开发的时候我们用dev,项目直接运行,不用改配置:发布本地测试环境的时候,打包之前我们要先改成对应配置:上

SpringBoot系列教程web篇之404、500异常页面配置

接着前面几篇web处理请求的博文,本文将说明,当出现异常的场景下,如404请求url不存在,,403无权,500服务器异常时,我们可以如何处理 原文友链: SpringBoot系列教程web篇之404.500异常页面配置 I. 环境搭建 首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活; 创建一个maven项目,pom文件如下 <parent> <groupId>org.springframework.boot</gr

SpringBoot系列教程web篇之重定向

原文地址: SpringBoot系列教程web篇之重定向 前面介绍了spring web篇数据返回的几种常用姿势,当我们在相应一个http请求时,除了直接返回数据之外,还有另一种常见的case -> 重定向: 比如我们在逛淘宝,没有登录就点击购买时,会跳转到登录界面,这其实就是一个重定向.本文主要介绍对于后端而言,可以怎样支持302重定向 I. 环境搭建 首先得搭建一个web应用才有可能继续后续的测试,借助SpringBoot搭建一个web应用属于比较简单的活; 创建一个maven项目,pom文

SpringBoot系列之@Value和@ConfigurationProperties

继上一篇博客SpringBoot系列之YAML配置用法之后,再写一篇@Value.@ConfigurationProperties的对比博客 这两个主键都是可以获取配置文件属性的,不过是有比较大的区别的,所以本博客做一下对比,ok,继续拿上一篇博客的例子来实验 ## 测试ConfigurationProperties user: userName: root isAdmin: true regTime: 2019/11/01 isOnline: 1 maps: {k1 : v1,k2: v2}

SpringBoot系列之集成Druid配置数据源监控

继上一篇博客SpringBoot系列之JDBC数据访问之后,本博客再介绍数据库连接池框架Druid的使用 实验环境准备: Maven IntelliJ IDEA 先新建一个Springboot Initializer项目,详情参考SpringBoot系列之快速创建Initializer项目,注意引入必须的JDBC,web依赖等等,因为Druid默认没提供,所以去https://mvnrepository.com/artifact/com.alibaba/druid获取配置信息,项目创建之后,po