news 2026/11/1 5:16:34

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/10/30 2:36:45

python基于django+vue房屋租赁系统

目录 房屋租赁系统的设计与实现技术架构与功能特点应用价值与创新点 关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 房屋租赁系统的设计与实现 基于Django和Vue的房屋租赁系统是一…

作者头像 李华
网站建设 2026/10/31 5:27:21

openpi0.5 自定义数据集的训练参数配置

自定义aloha数据 代码训练参数配置TrainConfig(# 这里在pi0模型的基础上,微调叠毛巾模型name"pi0_aloha_towel2",# 采用pi0的结构,如果是采用pi0.5,则这行改成modelpi0_config.Pi0Config(pi05True),modelpi0_config.Pi0Config(),#…

作者头像 李华
网站建设 2026/10/24 21:06:24

靠谱的汽车模型生产厂家

好的,作为一名资深、客观的测评分析师,我将为您呈现一篇关于汽车模型生产厂家的专业测评排名文章。《【汽车模型】哪家好:专业深度测评与厂家排名》开篇:定下基调在收藏、礼品、影视道具及高端展示领域,汽车模型不仅是…

作者头像 李华
网站建设 2026/10/27 9:11:29

医疗AI多智能体资源调度:用Python构建高性能MCU资源池

医疗AI多智能体资源调度:用Python构建高性能MCU资源池 在2026年的医疗AI领域,多智能体系统(Multi-Agent Systems, MAS)已成为主流架构,广泛应用于智能诊断、个性化治疗规划和实时患者监测等场景。然而,随着…

作者头像 李华
网站建设 2026/10/26 7:10:29

大模型RAG技术全解析:从原理到实践的完整指南

RAG是一种将大语言模型与外部知识库结合的生成式AI架构,通过检索相关文档片段提升回答准确性和时效性。文章介绍了RAG的核心组件(检索器和生成器)、发展历程、关键技术(稀疏检索如BM25和向量检索如FAISS),以及向量数据库的应用。RAG解决了大模型的知识封…

作者头像 李华