方案一:每个表设计一个翻译表
数据库国际化的应用场景用到的比较少,主要用于对数据库的具体数据进行翻译,在需要有大量数据翻译的场景下使用,举个例子来说,力扣题目的中英文切换。参考方案可见:
https://blog.csdn.net/fxtxz2/article/details/107770364https://gitee.com/link?target=https%3A%2F%2Fblog.csdn.net%2Ffxtxz2%2Farticle%2Fdetails%2F107770364优点:
- 灵活,能够为不同实体类型或者字段提供翻译支持,并可以很方便的对语言种类进行扩展
- 方便逆向查询:即根据翻译语言查出原始数据
缺点:
- 查询和管理可能更复杂,可能需要较多的联合查询
方案二:映射转换
使用映射的形式转换语言实现,绝大多数国际化程序的应用方案。举个例子说明映射式的翻译:你好 -> Hello。通过使用配置文件式存储对应关系,这种场景适用于国际化内容不怎么变化的场景,例如登录成功的提示信息,服务器出错的提示信息等。参考实现方案见下说明:
SpringBoot实现i18n国际化配置(超详细之跟着走就会系列)_springboot i18n-CSDN博客文章浏览阅读2.9w次,点赞24次,收藏121次。一、新增国际化资源文件在resources文件下新建i18n文件,并新建国际化资源文件。如图:点击新增Resource Bundle文件。我们在Resource bundle base name处填写国际化文件的名称,笔者此处填“messages”。并点击中间偏右的“+”号,新增国际化语言,此处新增两个语言“zh_CN”,“en_US”。点击ok保存,看到这样的文件结构,就表示创建成功了:分别在两个文件中添加zh_CN:A00001=你好,世界A00002=你好,JAVAen_US:_springboot i18nhttps://blog.csdn.net/weixin_44248000/article/details/124061184优点:
- 实现简单
缺点:
- 不够灵活,不方便对数据库的数据进行翻译,在添加新翻译数据时,需要修改代码。
虽然也可以对数据库的数据进行映射式的翻译,但是存在非常多的问题,比如线程安全和高并发情况下的效率过低问题。
方案三:JSON 存储
实现方式是通过对应翻译记录的表,新增一个国际化JSON字段来保存对应语言的翻译结果值。参考实现如下:
mysql国际化存储方案_大厂国际化数据存储怎么做-CSDN博客文章浏览阅读6.3k次,点赞5次,收藏11次。之前第一次做国际化项目,前期数据库是同事设计的,他的想法是,需要多语言的字段,全部用多个字段,如 name 存储中文姓名,english_name存储英文姓名,如果项目始终固定两种语言,这种设计完全没问题,但一旦需要新增语言,所有涉及到国际化的字段,全部要新增一个字段!后来重新想了个方案,mysql5.7支持json数据类型,需要国际化的字段,全部使用json类型,存储的数据示例:name..._大厂国际化数据存储怎么做https://blog.csdn.net/u013727805/article/details/82809991表设计参考:
CREATE TABLE Products (id INT PRIMARY KEY,translations JSONB
);
示例JSON字段:
{"en": {"name": "Product Name", "description": "Product Description"},"zh": {"name": "产品名称", "description": "产品描述"}
}
优点:
- 灵活,能够存储任意数量的语言。
缺点:
- 查询和索引可能不如关系型字段高效,需要数据库支持 JSON 数据类型(当然也可以把翻译数据放在 MongoDB 中)
- 这种方式同样存在根据翻译字段查询原始数据不方便的问题
方案四:拦截器统一处理
实现解决方案,参考以下链接。
Java后端实现动态数据国际化多语言自由切换技术方案 _ 潘子夜个人博客现在很多企业业务系统可能要支持多语言情形,你是否有考虑过Java后端如何实现动态数据国际化多语言自由切换技术方案?以下是Bivin网友在最近的项目中遇到的一个需求:为了更好地扩展海外业务,我们需要让平台的动态数据能够在中文简体、中文繁体和英语三种语言之间自由切换。这种情况类似于国际化的要求。虽然我之前在一些大型平台上见过类似的功能,但却从未有机会亲自进行设计。一时间,我感受到了巨大的压力,幸运的是,通过反复思考,我终于构思出了一种应对动https://www.panziye.com/java/7674.html
方案五:自定义注解转换
【SpringBoot】自定义注解<约定式i18n国际化>终极升级版方案源码Copy_springboot i18n 注解-CSDN博客文章浏览阅读1k次,点赞14次,收藏16次。@I18n 这个自定义注解,优点:无需写多余代码,包含(国际化与转换Bean逻辑),I18nManager 管理类,优点直接定位逻辑,速度快。码云地址:https://gitee.com/binbinbui/i18n/tree/master/_springboot i18n 注解https://blog.csdn.net/qq_42470947/article/details/140968852