i18n实现SpringBoot后端多语言化(前后端分离)
最近注意到许多项目都是支持语种切换的,于是用springboot实现了前后端分离的语种切换
依赖
在pom.xml中添加如下依赖
<dependency><groupId>org.webjars.bower</groupId><artifactId>jquery-i18n-properties</artifactId><version>1.2.7</version></dependency>
开始配置
说到配置就令人头疼,所幸的是springboot极大的简化了开发中繁琐的配置。
1.创建.propertis语言包
- message.properties
- message_en_US.properties
- message_zh_CN.properties
命名规则:前缀_语种类型.properties
,其中message.properties
文件内容可为空。但必须定义
。该文件优先级最高
添加内容
由于文件格式非UTF-8,我这里将汉字转为了unicode字符,但这并不影响读取。message.properties
中未定义任何内容。
2.在application.properties中添加如下内容
#i18nspring.messages.basename=static.i18n.messagespring.messages.cache-duration=3600spring.messages.encoding=UTF-8
其中最主要的是basename,指定了语言包所在位置。
basename的值结尾最后需要加上properties语言包文件名的前缀
3.创建解析器和拦截器
import java.util.Locale;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;@Configuration
public class LocaleConfig {/** * 默认解析器 其中locale表示默认语言,当请求中未包含语种信息,则设置默认语种* 当前默认为CHINA,zh_CN*/@Beanpublic SessionLocaleResolver localeResolver() {SessionLocaleResolver localeResolver = new SessionLocaleResolver();localeResolver.setDefaultLocale(Locale.CHINA);return localeResolver;}/** * 默认拦截器 其中lang表示切换语言的参数名 * 拦截请求,获取请求参数lang种包含的语种信息并重新注册语种信息*/@Beanpublic WebMvcConfigurer localeInterceptor() {return new WebMvcConfigurer() {@Overridepublic void addInterceptors(InterceptorRegistry registry) {LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();localeInterceptor.setParamName("lang");registry.addInterceptor(localeInterceptor);}};}
}
localeResolver
其中定义了默认语种。localeInterceptor
前端请求参数lang中包含指定语种时,将该语种注册到Locale中
4.编写控制器
import java.util.HashMap;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/domain")
//解决跨域问题:指定允许跨域的域名
@CrossOrigin(origins = "http://test.do")
public class DomainControl {@Autowiredprivate MessageSource messageSource;/*** 多语言测试*/@RequestMapping("/i18ntest")public Map<Object, Object> i18nTest() {Map<Object, Object> result = new HashMap<Object, Object>();result.put("code", 5001);result.put("msg", messageSource.getMessage("error.error_5001", null, LocaleContextHolder.getLocale()));return result;}}
请求结果
lang=zh_CN
lang=en_US
i18n实现SpringBoot后端多语言化(前后端分离)相关推荐
- 计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码
计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码 注意:该项目只展示部分功能,如需了解,联系咨询即可. 作者:IT跃迁谷 1.开发环境 ...
- springboot websocket_SpringBoot 集成 WebSocket 实现前后端消息互传
WebSocket 协议是基于 TCP 的一种新的网络协议.它实现了浏览器与服务器全双工 (full-duplex) 通信-允许服务器主动发送信息给客户端. 为什么需要WebSocket? 大家都知道 ...
- SpringBoot+LayUI+MybatisPlus+Echarts图表 前后端分离 实现数据统计功能
前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java快一年时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 首先给各位粉丝朋友 ...
- Springboot+vue 社团管理系统(前后端分离)
Springboot+vue 社团管理系统(前后端分离) zero.项目功能设计图 一.数据库设计(项目准备) 1.建表 2.表目录 二.前端编写(vue) 1.搭建Vue框架 2.放入静态资源(as ...
- 第十六节 springboot 打包vue代码实现前后端统一部署
svbadmin学习日志 本学习日志是使用Springboot和Vue来搭建的后台管理系统: 演示地址:http://118.31.68.110:8081/index.html 账号:root 密码: ...
- 毕设:基于SpringBoot+Vue 实现云音乐(前后端分离)
文章目录 一.简介 2.项目介绍 二.功能 2.功能介绍 三.核心技术 1.系统架构图 2.技术选型 五.运行 3.截图 前端界面 后台管理界面 总结 1.完整工程 2.其他 一.简介 2.项目介绍 ...
- Vue前端和Java后端 联调使用AES 前后端加密解密
Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...
- 商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端需求文档//运输公司管理/产品库管理/资金管理/移动端电商原型文档
商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端prd文档/后台管理系统原型/运输公司管理/产品库管理/资金管理/移 ...
- A19.从零开始前后端react+flask - 删除前后端数据
接上文 A18.从零开始前后端react+flask - 修改前后端数据 一 找到HomePage.js中 <Icon type="close" title="删除 ...
最新文章
- 帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
- Android SDK 2.3/3.0/4.0/4.2 下载与安装教程
- HDU 5238 Calculator 线段树 中国剩余定理
- P2257-YY的GCD【莫比乌斯反演】
- “真还传”即将完结?锤子科技撤回全部破产申请 罗永浩称年后回归科技界
- 引入对抗训练的对比学习
- 部队计算机考试题,2020军队文职计算机知识:计算机考试练习题(1)
- opencv常用函数整理(二)
- tf之static_transform_publisher
- linux内核移植imx8,iMX8模块Ubuntu移植
- 【原】豆瓣电台桌面版插件开发——搜索插件
- HNOI 2009 图的同构记数 题解
- haxm device is not found
- 泊松分布和指数分布,包你学会
- 一些手机APP默认的文件保存位置
- 代码本色 processing编程练习
- 午睡起来发现了很精美的windows壁纸
- 中英双语版Arnold for Cinema 4D 2023(c4d阿诺德渲染器插件)
- PS、Excel快捷键桌面壁纸
- 【modlearts】华为人工智能平台_modelarts平台系列教程3_预置算法_语音处理3