Spring Boot实现国际化

src\main\resources\i18n\messages_zh_CN.properties
message.hello=你好,世界!
message.welcome=欢迎!
src/main/resources/i18n/messages_en_US.properties
message.hello=Hello World!
message.welcome=Welcome!
默认语言
src\main\resources\i18n\messages.properties
message.hello=Hello World!
message.welcome=Welcome!

config

@Configuration
public class WebConfig implements WebMvcConfigurer {@Beanpublic LocaleResolver localeResolver() {SessionLocaleResolver slr = new SessionLocaleResolver();// 默认语言设置为英文slr.setDefaultLocale(Locale.US);//ENGLISHreturn slr;}// 如果还需要拦截器来处理locale切换请求@Overridepublic void addInterceptors(InterceptorRegistry registry) {LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();interceptor.setParamName("lang");registry.addInterceptor(interceptor);}
}

controller

@Autowiredprivate MessageSource messageSource;@GetMapping("/switch-language")public String switchLanguage(@RequestParam("lang") String lang, HttpServletRequest request) {request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, new Locale(lang));return "redirect:/";}@GetMapping("/")public String home(Model model) {Locale locale = LocaleContextHolder.getLocale();model.addAttribute("helloMessage", messageSource.getMessage("message.hello", null, locale));model.addAttribute("welcomeMessage", messageSource.getMessage("message.welcome", null, locale));return "home";}

在Thymeleaf模板中引用国际化消息:

<!-- home.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Internationalization Example</title>
</head>
<body><h1 th:text="#{message.hello}"></h1><p th:text="#{message.welcome}"></p><a th:href="@{/switch-language?lang=en_US}" th:text="English">English</a><a th:href="@{/switch-language?lang=zh_CN}" th:text="中文">中文</a>
</body>
</html>
来切换语言
switch-language?lang=zh_CN
switch-language?lang=en_US

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/614625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速了解VR全景拍摄技术运用在旅游景区的优势

豆腐脑加了糖、烤红薯加了勺&#xff0c;就连索菲亚大教堂前都有了“人造月亮”&#xff0c;在这个冬季&#xff0c;“尔滨”把各地游客宠上了天。面对更多的游客无法实地游玩&#xff0c;哈尔滨冰雪世界再添新玩法&#xff0c;借助VR全景拍摄技术对冬季经典冰雪体验项目进行全…

什么是Modbus协议?

Modbus协议是一种在工业自动化领域广泛应用的通信协议&#xff0c;它允许不同设备之间进行可靠的数据交换和控制。该协议最初由Modicon公司于1979年创建&#xff0c;旨在提供一种简单而有效的方法&#xff0c;使PLC&#xff08;可编程逻辑控制器&#xff09;和其他自动化设备能…

AI老照片修复-Bringing-Old-Photos-Back-to-Life

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. AI老照片修复原理-…

修改idea或者pycharm或者android studio的快捷键,快速跳转到行尾

ctrl enter这个快捷键是idea默认配置的&#xff0c;就是将光标所在的行切一刀&#xff0c;并且换到下一行。但是在我的开发习惯里面不怎么使用ctrl enter这个快捷键&#xff0c; 反而开发java或者flutter软件需要快速跳转到行尾添加分号 ; &#xff0c;但是使用end键脱离了我…

ARM 寄存器

文章目录 ARM 寄存器介绍一、未分组寄存器 R0~R7二、分组寄存器 R8~R14三、程序计数寄存器 R15&#xff08;PC&#xff09;四、当前程序状态寄存器 R16&#xff08;CPSR&#xff09;管理模式&#xff08;SVC&#xff09;用户模式&#xff08;USR&#xff09; 汇编里的寄存器名称…

Java复习_4

填空题 课程推荐的 jdk 下载网址为 jdk.java.net 使用命令行编译程序&#xff1a;javac -d bin stc*.java 使用命令行运行程序&#xff1a; java -cp bin 类名 java 语言标识符&#xff1a;字母、数字、下划线和美元符号&#xff0c;数字不能做首字母 java 语言中标识符区…

Android 实现集合去重的方法

方法一&#xff1a;使用HashSet 将集合转换为HashSet。 Set<String> set new HashSet<>(list);将HashSet转换回List。 List<String> uniqueList new ArrayList<>(set);方法二&#xff1a;使用Java 8的Stream API 将列表转换为Stream。 Stream&l…

YOLOv8-Seg改进:轻量化改进 | MobileNetV3,轻量级骨架首选

🚀🚀🚀本文改进:MobileNetV3的创新点包括:使用自适应瓶颈宽度、借鉴SENet中的Squeeze-and-Excitation机制、引入h-swish激活函数等。 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教…

JVM 元空间、java中的元空间

JVM 元空间 元空间 元空间 原空间&#xff08;Meta Space&#xff09; ​ 用于存放类信息、常量、静态变量、JIT即时编译器百年以后的机器代码等数据等。例如&#xff1a;java.lang.Object类的元信息、Integer.MAX_VALUE等常量。 JDK1.6 HotSpot JVM 使用Method Area方法区存…

GNSS数据及产品下载地址(FTP/HTTP)

GNSS数据/产品下载地址 天线改正文件(atx)下载Index of /pub/station/general 通用广播星历(brdc/brdm)&#xff1a;ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/YYYY/brdcftp://cddis.gsfc.nasa.gov/pub/gps/data/campaign/mgex/daily/rinex3/YYYY/brdmftp://epncb.oma.b…

植物大战僵尸-C语言搭建童年游戏(easyx)

游戏索引 游戏名称&#xff1a;植物大战僵尸 游戏介绍&#xff1a; 本游戏是在B站博主<程序员Rock>的视频指导下完成 想学的更详细的小伙伴可以移步到<程序员Rock>视频 语言项目&#xff1a;完整版植物大战僵尸&#xff01;可能是B站最好的植物大战僵尸教程了&…

Jenkins基础篇--凭据(Credential)管理

什么是凭据 Jenkins的Credentials直译为证书、文凭&#xff0c;我们可以理解为它是钥匙&#xff0c;用来做某些事情的认证。 如Jenkins 和 GitLab交互时&#xff0c;需要添加GitLab的API令牌和登录凭证。 如Jenkins 添加从节点时&#xff0c;需要添加从节点的登录凭证或者Je…

Jenkins基础篇--添加用户和用户权限设置

添加用户 点击系统管理&#xff0c;点击管理用户&#xff0c;然后点击创建用户&#xff08;Create User&#xff09; 用户权限管理 点击系统管理&#xff0c;点击全局安全配置&#xff0c;找到授权策略&#xff0c;选择安全矩阵&#xff0c;配置好用户权限后&#xff0c;点击…

Redis内存分析工具

Redis内存分析工具RDR 了解一下RDR的优势 1&#xff0c;首先RDR工具是图形化界面&#xff0c;能非常直观的就能看到内存主键分布 2&#xff0c;可以快速分析 Redis 内存中那个 Key 值占用的内存最大 启动 ./rdr-linux show -p 8080 /usr/local/redis-5.0.3/data/dump.rdb st…

线索系统性能优化实践

引言 在京东家居事业部&#xff0c;线索CRM系统扮演着至关重要的角色&#xff0c;它作为构建家居场景核心解决方案集的首要环节&#xff0c;肩负着获客和拓展业务的重要使命。然而&#xff0c;随着业务的不断扩张和市场需求的日益增长&#xff0c;系统原有的架构开始显露出诸多…

使用图形化界面工具DataGrip

目录 添加数据源 展示所有数据库 创建数据库 创建表 修改表结构 在DataGrip中执行SQL语句 &#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&am…

Amessage的clear会清除对象并释放内存空间

项目中用了Amessage&#xff0c;通过调试发现: 定义一个向量集合: vector<DateStructure*> list; 其中DateStructure是一个继承Refbase的类 然后往list中添加数据 DateStructure* data new DateStructure(); list.push_back(data); 然后将这个list通过Amessage发送 …

构建基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等)的Nginx1.24.0的RPM包

本文适用&#xff1a;rhel9系列&#xff0c;或同类系统(CentOS9,AlmaLinux9,RockyLinux9等) 文档形成时期&#xff1a;2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…

第九篇 API设计原则与最佳实践

文章目录 API设计原则与最佳实践RESTful API设计原则1. 资源导向a. 资源识别b. HTTP动词的使用 2. 状态转移3. 统一接口4. RESTful API 示例&#xff08;axios调用&#xff09;5. 非RESTful API 示例&#xff08;axios调用&#xff09; HATEOAS理念与实践1. Hypermedia as the …

使用Flash_Download_Tool下载PlatformIO生成的bin程序到ESP32

使用Flash_Download_Tool下载PlatformIO生成的bin程序到ESP32 来源 当我们没有PlatformIO环境时&#xff0c;还要下载PlatformIO生成的程序时&#xff0c;可以使用Flash_Download_Tool工具下载。 说明 使用PlatformIO时&#xff0c;用cmd终端命令下载程序pio run -v -t upl…