springboot实现i18n国际化,无需引入其他jar包,springboot已经内置了,只需要配置即可。

国际化主要是根据不同的国际语言来决定返回数据的语言。

添加properties文件,作为返回数据的具体内容,key-value形式,key为代码中的返回值,value为实际返回值

messages.properties(默认,必须有,内容可以为空)

messages_zh_CN.properties(中文的数据)

messages_en_US.properties(英文的数据)

结构为:

在 application.properties/application.yml中添加i18n文件路径:

spring.messages.basename=i18n/messages (messages为文件前缀,这样写就行)

接下来就是写配置类来根据每次request请求header里面的Accept-Language来设置返回语言

import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;@Configuration
public class LanguageLocalConfig implements LocaleResolver {@Overridepublic Locale resolveLocale(HttpServletRequest request) {Locale locale = Locale.CHINA;String language = request.getHeader("Accept-Language");if (StringUtils.isNotBlank(language)) {String[] splitLanguage = language.split("_");if (splitLanguage.length > 1) {locale = new Locale(splitLanguage[0], splitLanguage[1]);}}return locale;}@Overridepublic void setLocale(HttpServletRequest request,HttpServletResponse response,Locale locale) {//ignore}@Beanpublic LocaleResolver localeResolver() {return new LanguageLocalConfig();}
}

最后写个工具类来调用,获取对应语言的返回值

import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;@Component
public class MessageUtils {private static MessageSource messageSource;public MessageUtils(MessageSource messageSource) {MessageUtils.messageSource = messageSource;}public static String getMessage(String key) {try {return messageSource.getMessage(key,null,LocaleContextHolder.getLocale());} catch (Exception e) {return key;}}
}

至此,i18n的配置就全部完成了,通过修改header里面的Accept-Language即可完成语言切换。

下面是测试截图

springboot配置i18n国际化相关推荐

  1. SpringBoot实现i18n国际化配置(超详细之跟着走就会系列)

    一.新增国际化资源文件 在resources文件下新建i18n文件,并新建国际化资源文件.如图: 点击新增Resource Bundle文件. 我们在Resource bundle base name ...

  2. SpringBoot 系列教程(四十六):SpringBoot集成i18n国际化配置

    一.概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization ...

  3. springboot 使用i18n进行国际化

    1.i18n介绍 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称.在资讯领域,国际化(i18n)指让产 ...

  4. SpringBoot系列之i18n国际化多语言支持教程

    SpringBoot系列之i18n国际化多语言支持教程 文章目录 1.环境搭建 2.resource bundle资源配置 3.LocaleResolver类 4.I18n配置类 5.Thymelea ...

  5. 浏览器扩展开发 - i18n 国际化多语言配置

    原文地址:https://waynegong.cn/posts/954.html Chrome 浏览器扩展进行 i18n 国际化多语言适配需要进行三处修改: 在特定目录按照特定格式编写多语言配置的 m ...

  6. springboot 配置 Validator 校验框架国际化 支持快速返回

    1.国际化资源 使用IDEA创建资源组 2.编写配置 application.yml 增加国际化目录配置 增加国际化配置类 从请求头获取多语言关键字 /*** 国际化配置** @author Lion ...

  7. Spring进行 i18n国际化配置

    (本项目是基于Dubbo的,所以会有后端服务和前端Controller两次国际化的配置) 对后端服务的异常代码进行国际化版本的配置 1.在provider的resources中新建一个properti ...

  8. Springboot + i18n国际化

    在网上找了很多后端国际化的资料,总是不适合自己.因为脑袋本能的就会取拒绝吸收知识,其实认真看理解思路i18n国际化其实很简单. 那么先简单上手一下 1.首先在resources创建i18n的文件夹,文 ...

  9. 自己动手在Spring-Boot上加强国际化功能

    前言 公司将项目由Struts2转到Springmvc了,由于公司业务是境外服务,所以对国际化功能需求很高.Struts2自带的国际化功能相对Springmvc来说更加完善,不过spring很大的特性 ...

最新文章

  1. android level list,Android Drawable (levle List selector layer List)
  2. linux 用dd将iso写入U盘
  3. 编写代码,移除未排序的链表中的重复节点
  4. 在学习中遇到的第一难点
  5. mac、linux 查看端口占用程序
  6. 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
  7. arduino定时器控制舵机_Arduino学习经验(一)之解决舵机库和pwm输出冲突
  8. 插入排序 - 二分插入排序
  9. jdbc查询序列_JDBC –模拟序列
  10. Java,Steam控制器和我
  11. LeetCode 1043. 分隔数组以得到最大和(DP)
  12. 计算机存储技术及应用,计算机数据安全存储技术及应用
  13. 玩转iOS开发:iOS 8 新特性《UIVisualEffect》
  14. 剑指offer之合并有序链表
  15. AD画封装的血泪教训:有叉的放在外侧
  16. Eclipse导出WAR包
  17. apk反编译教程(2022win11亲测)
  18. MapGuide Windows编译
  19. Hi3519av100 编译kernel
  20. 中小企业知识管理难题怎么做?天翎与群晖携手给出最优解

热门文章

  1. 峰度(Kurtosis)和偏度(Skewness)
  2. go get dial tcp 172.217.163.49:443: i/o timeout
  3. 吉利控股集团汽车品牌运营分析
  4. 资本寒冬中获2.7亿美元融资,是一种怎样的体验?
  5. 2008年的一个严肃的笑话
  6. Scala、Java 50道编程题
  7. 简单给element-plus的Skeleton做个Vue3组件——预加载骨架屏图像组件
  8. 记2018年在老家的春节
  9. 进阶的爬虫系列 ——不得不说的贴吧爬取术
  10. 基于Flink的实时日志分析系统实践