当前位置: 首页 > news >正文

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。


总结

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

http://www.cnnetsun.cn/news/653525.html

相关文章:

  • python基于django+vue房屋租赁系统
  • openpi0.5 自定义数据集的训练参数配置
  • 靠谱的汽车模型生产厂家
  • 医疗AI多智能体资源调度:用Python构建高性能MCU资源池
  • 大模型RAG技术全解析:从原理到实践的完整指南
  • 鸿蒙 HarmonyOS 6 | 逻辑核心 (06):本地 关系型数据库 (RDB) 的 CRUD 与事务处理
  • 2026年降AI率工具红黑榜:踩雷3款,真香1款叫比话
  • 一时兴起学网安前必看!15 条建议,帮你判断是否真的适合
  • PLC物流分拣系统设计服务|支持西门子S7-1200(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【图像加密解密】Logistic混沌+Arnold置乱图像加密解密【含Matlab源码 14952期】
  • Python+Vue的大数据相关岗位招聘信息分析及可视化 django Pycharm flask
  • 0x3f第33天复习 (16;45-18:00)
  • dnf包管理器使用指南与技巧总结
  • 搭载RK3588处理器,IM1-707核心板撑起建筑机器人“精准+高效”
  • 【MIMO通信】低分辨率ADCDAC大规模MIMO协调多单元波束成形与功率分配【含Matlab源码 14950期】
  • Acrel-2000T系统:35kV开关柜无线测温优选方案
  • 在config全局配置
  • WSL正常访问Github配置
  • UE5 C++(36-2):
  • 导师严选2026 TOP8一键生成论文工具:专科生毕业论文写作全攻略
  • 你以为的生病,其实是身体在救你
  • 如何科学评估软件人力外包服务商?5大核心维度深度解析
  • 宏智树 AI:ChatGPT 学术版驱动的全流程学术创作智能助手
  • 苹果手机照片怎么导入电脑?苹果手机传输照片的5大技巧
  • 展厅多屏联动推动智慧展示创新​
  • 好写作AI|你的大脑需要“操作系统升级”:AI如何让你学会“思考自己的思考”
  • Docker部署
  • 大模型开发者的福音:XML提示工程让你从代码小白变身AI大神!附完整实战代码
  • 10.吴恩达机器学习——无监督学习01聚类与异常检测算法
  • SEO新手必看:7天搞懂Google蜘蛛抓取原理(附避坑指南)