news 2026/9/3 4:01:21

Spring项目国际化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring项目国际化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、都有哪几类信息需要国际化改造

二、示例代码

三、MessageSource工作原理

总结


前言

当国内的业务到达瓶颈的时候,业务就会寻求出海,那么系统就要升级,做国际化改造。

国际化改造,指的是针对地区和语言,对客展示的文案、提示语等要做切换。


提示:以下是本篇文章正文内容,下面案例可供参考

一、都有哪几类信息需要国际化改造

1、可预见性的文案、提示语

例如:登录的时候提示手机号非法、验证码错误等等

这种改造相对简单,因为其可穷举性,逐一人工翻译,然后配置在对应的语言的配置文件中,当需要的时候,根据错误码(配置文件key)+语言+地区,选择对应的value返回

比如登录成功,英文会返回:login success,他加禄语会返回:Matagumpay ang pag-login!

2、业务人员在业务后台配置的一些宣传文案、数据

例如:弹窗文案、首页宣传语

这种需要业务人员针对不同的国家,不同的语言,进行多语种配置并落库存储,需要的时候,通过条件+地区+语言,从数据库中筛选记录。一般不选择用自动翻译API,因为翻译出来的结果不确定性+不准确性太强了。

3、关联系统、交互系统返回的结果

对于单一语种的地区来说,一般用当地的三方服务,都会返回统一的语言。对于多语种的地区,如果三方能根据语种适配,是最好的。如果不能,则需要在调用端,提前根据码值翻译成对应的文案,配到配置文件里。如果有更新,也需要补充兼容。

二、示例代码

messages.properties配置文件

LOGIN_SUCCESS=login success

messages_en_PH.properties配置文件

LOGIN_SUCCESS=Matagumpay ang pag-login!

messages_zh_CN.properties配置文件

LOGIN_SUCCESS=登录成功

测试代码

@Resource private MessageSource messageSource; @Test public void getMessageTest(){ String message = messageSource.getMessage("LOGIN_SUCCESS", null, Locale.CHINA); System.out.println(message); message = messageSource.getMessage("LOGIN_SUCCESS", null, Locale.ROOT); System.out.println(message); Locale locale = new Locale("en", "PH"); message = messageSource.getMessage("LOGIN_SUCCESS", null, locale); System.out.println(message); }

效果展示

三、MessageSource工作原理

使用方法说完之后,我们得说一下配置文件怎么命名,框架查找的原理

MessageSource查找配置文件,是根据以下优先级进行的

优先通过language+region的方式,最精准的方式,示例如图

如果上一步没找到,则通过language进行查找,示例如图

如果上一步也没找到,则找默认的配置文件

说完查找逻辑,接下来要跟App串起来,那么前端得给后端提供language+region信息,可以直接提供Locale,也可以在请求头里添加语种,约定好就行,比如zh_CN,我们可以将其解析为zh+CN的组合,可以根据这两个信息构建Locale对象,然后调用MessageSource 的Api。


总结

国际化,听起来高大上,实际上就是搬运工,把预先准备好的不同语种的文字提取出来,对客展示。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:56:35

PMP知识--十大知识域(下)

六 项目资源管理规划资源管理&估算活动资源规划资源管理估算活动资源获取资源&建设团队获取资源建设团队塔克曼阶梯理论(重点)建设团队的工具与技术管理团队&控制资源管理团队冲突管理情商控制资源七 项目沟通管理概述&规划沟通管理概述…

作者头像 李华
网站建设 2026/9/2 21:37:29

基于Spring Boot的酒店管理系统_n4w99n6v-java毕业设计

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 该系统基于Spring Boot框架开发,旨在为酒店行业提供高效、智能化的管理解决方案。采用B/S架构&#xff0c…

作者头像 李华
网站建设 2026/9/2 23:02:40

随想-关于光速极限

其实说到这里,为啥不能超过光速,这事已经没啥可说的了。答案就是不为啥,也没有说宇宙把速度限制到了光速。其实放下各种复杂的理论不谈,就只是说这个想法,是不是有点自大。宇宙之大无奇不有,为啥非得去限制…

作者头像 李华
网站建设 2026/9/2 22:22:54

unity 资源导入 godot

文章目录 unity 资源导入 godot 大多数你有权限就行,比如免费商店 对于2D 游戏手工搬运 texture 就行,也有Unidot Importer这样的工具(GameFromScratch的视频介绍)不过适合项目迁移,自己搞的话自己搭建最好 主要是 uni…

作者头像 李华
网站建设 2026/9/2 22:24:11

Redis:Redis键值淘汰策略

文章目录键值淘汰策略使用 maxmemory 配置指令为复制或持久化实例设置 maxmemory淘汰策略使用 INFO 命令近似 LRU 算法LFU 淘汰键值淘汰策略 Redis 常被用作缓存,以加速对较慢服务器或数据库的读取访问。由于缓存条目是持久存储数据的副本,当缓存内存不…

作者头像 李华
网站建设 2026/9/2 2:00:20

CC工具箱使用指南:【遍历图斑】

一、简介 之前做过一个遍历图斑的工具: 有点过于简陋了。 主要平时自己也不用,就没去动它。 最近看好几个小伙伴都做了类似的工具,功能很完善。 于是这个工具看着就有点碍眼,优化一下吧。 旧工具将会移除,要用就用…

作者头像 李华