最近注意到许多项目都是支持语种切换的,于是用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后端多语言化(前后端分离)相关推荐

  1. 计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码

    计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码 注意:该项目只展示部分功能,如需了解,联系咨询即可. 作者:IT跃迁谷 1.开发环境 ...

  2. springboot websocket_SpringBoot 集成 WebSocket 实现前后端消息互传

    WebSocket 协议是基于 TCP 的一种新的网络协议.它实现了浏览器与服务器全双工 (full-duplex) 通信-允许服务器主动发送信息给客户端. 为什么需要WebSocket? 大家都知道 ...

  3. SpringBoot+LayUI+MybatisPlus+Echarts图表 前后端分离 实现数据统计功能

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java快一年时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 首先给各位粉丝朋友 ...

  4. Springboot+vue 社团管理系统(前后端分离)

    Springboot+vue 社团管理系统(前后端分离) zero.项目功能设计图 一.数据库设计(项目准备) 1.建表 2.表目录 二.前端编写(vue) 1.搭建Vue框架 2.放入静态资源(as ...

  5. 第十六节 springboot 打包vue代码实现前后端统一部署

    svbadmin学习日志 本学习日志是使用Springboot和Vue来搭建的后台管理系统: 演示地址:http://118.31.68.110:8081/index.html 账号:root 密码: ...

  6. 毕设:基于SpringBoot+Vue 实现云音乐(前后端分离)

    文章目录 一.简介 2.项目介绍 二.功能 2.功能介绍 三.核心技术 1.系统架构图 2.技术选型 五.运行 3.截图 前端界面 后台管理界面 总结 1.完整工程 2.其他 一.简介 2.项目介绍 ...

  7. Vue前端和Java后端 联调使用AES 前后端加密解密

    Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...

  8. 商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端需求文档//运输公司管理/产品库管理/资金管理/移动端电商原型文档

    商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端prd文档/后台管理系统原型/运输公司管理/产品库管理/资金管理/移 ...

  9. A19.从零开始前后端react+flask - 删除前后端数据

    接上文 A18.从零开始前后端react+flask - 修改前后端数据 一 找到HomePage.js中 <Icon type="close" title="删除 ...

最新文章

  1. 帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
  2. Android SDK 2.3/3.0/4.0/4.2 下载与安装教程
  3. HDU 5238 Calculator 线段树 中国剩余定理
  4. P2257-YY的GCD【莫比乌斯反演】
  5. “真还传”即将完结?锤子科技撤回全部破产申请 罗永浩称年后回归科技界
  6. 引入对抗训练的对比学习
  7. 部队计算机考试题,2020军队文职计算机知识:计算机考试练习题(1)
  8. opencv常用函数整理(二)
  9. tf之static_transform_publisher
  10. linux内核移植imx8,iMX8模块Ubuntu移植
  11. 【原】豆瓣电台桌面版插件开发——搜索插件
  12. HNOI 2009 图的同构记数 题解
  13. haxm device is not found
  14. 泊松分布和指数分布,包你学会
  15. 一些手机APP默认的文件保存位置
  16. 代码本色 processing编程练习
  17. 午睡起来发现了很精美的windows壁纸
  18. 中英双语版Arnold for Cinema 4D 2023(c4d阿诺德渲染器插件)
  19. PS、Excel快捷键桌面壁纸
  20. 【modlearts】华为人工智能平台_modelarts平台系列教程3_预置算法_语音处理3

热门文章

  1. HEVC标准(draft)翻译--解码过程
  2. Cortex-A7的中断系统总结
  3. 谷歌相册将于2021年6月告别不限量高品质云照片与视频存储
  4. 云盘存储 教学反思_《基于云服务的数字化校园建设与应用研究》
  5. 智能家居中的毫米波雷达人体存在传感器
  6. 财务机器人实现高效赋能财务精细化运营
  7. 小程序ios禁用页面上下拖动
  8. symbian 搭建 carbide c++环境
  9. android动画(十四)
  10. VS(C#)调用Basler相机SDK采集图像及基本功能设定