springboot配置i18n国际化
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国际化相关推荐
- SpringBoot实现i18n国际化配置(超详细之跟着走就会系列)
一.新增国际化资源文件 在resources文件下新建i18n文件,并新建国际化资源文件.如图: 点击新增Resource Bundle文件. 我们在Resource bundle base name ...
- SpringBoot 系列教程(四十六):SpringBoot集成i18n国际化配置
一.概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization ...
- springboot 使用i18n进行国际化
1.i18n介绍 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称.在资讯领域,国际化(i18n)指让产 ...
- SpringBoot系列之i18n国际化多语言支持教程
SpringBoot系列之i18n国际化多语言支持教程 文章目录 1.环境搭建 2.resource bundle资源配置 3.LocaleResolver类 4.I18n配置类 5.Thymelea ...
- 浏览器扩展开发 - i18n 国际化多语言配置
原文地址:https://waynegong.cn/posts/954.html Chrome 浏览器扩展进行 i18n 国际化多语言适配需要进行三处修改: 在特定目录按照特定格式编写多语言配置的 m ...
- springboot 配置 Validator 校验框架国际化 支持快速返回
1.国际化资源 使用IDEA创建资源组 2.编写配置 application.yml 增加国际化目录配置 增加国际化配置类 从请求头获取多语言关键字 /*** 国际化配置** @author Lion ...
- Spring进行 i18n国际化配置
(本项目是基于Dubbo的,所以会有后端服务和前端Controller两次国际化的配置) 对后端服务的异常代码进行国际化版本的配置 1.在provider的resources中新建一个properti ...
- Springboot + i18n国际化
在网上找了很多后端国际化的资料,总是不适合自己.因为脑袋本能的就会取拒绝吸收知识,其实认真看理解思路i18n国际化其实很简单. 那么先简单上手一下 1.首先在resources创建i18n的文件夹,文 ...
- 自己动手在Spring-Boot上加强国际化功能
前言 公司将项目由Struts2转到Springmvc了,由于公司业务是境外服务,所以对国际化功能需求很高.Struts2自带的国际化功能相对Springmvc来说更加完善,不过spring很大的特性 ...
最新文章
- android level list,Android Drawable (levle List selector layer List)
- linux 用dd将iso写入U盘
- 编写代码,移除未排序的链表中的重复节点
- 在学习中遇到的第一难点
- mac、linux 查看端口占用程序
- 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
- arduino定时器控制舵机_Arduino学习经验(一)之解决舵机库和pwm输出冲突
- 插入排序 - 二分插入排序
- jdbc查询序列_JDBC –模拟序列
- Java,Steam控制器和我
- LeetCode 1043. 分隔数组以得到最大和(DP)
- 计算机存储技术及应用,计算机数据安全存储技术及应用
- 玩转iOS开发:iOS 8 新特性《UIVisualEffect》
- 剑指offer之合并有序链表
- AD画封装的血泪教训:有叉的放在外侧
- Eclipse导出WAR包
- apk反编译教程(2022win11亲测)
- MapGuide Windows编译
- Hi3519av100 编译kernel
- 中小企业知识管理难题怎么做?天翎与群晖携手给出最优解