多语言设计是国际化系统设计的第一步,也是最基本的内容。很多时候,我们会认为多语言设计非常简单。
对于静态资源来说确实如此,通过加载一个语言包即可,但是对于一些动态内容而言却不太一样。
这些动态内容可能是消息通知、服务器生成的导出内容等。 这里我整理了一个完整的清单,用来指导多语言的方案设计:
- 前端文案。例如菜单、表单提示信息等。
- 错误信息。表单验证或者服务器报错信息的提示。
- 导出文件。导出 Excel 或者 PDF 文件,往往为后端生成。
- 邮件和消息通知。为用户发送通知时,也需要使用对应语言的模板文件。
- 关键主数据。例如在电商系统中,管理员需要为支持的语言都添加一份商品数据、商品分类等。
- 业务数据快照。在交易数据中,为了搜索和存档的目的,有时候需要将一些主数据持久化下来用于搜索或者查看,例如订单中,需要持久化对应的商品数据。
为了支持这些需求,在方案上我们需要考虑这些问题:
- 如何选择合适的 I18N 框架为前端展示加载合适的语言包?
- 用户如何设置自己的语言选项?
- 如何在上下文中传递语言标识?
- 如何为主数据的多语言数据结构建模?
下面我们逐个讨论。
多语言的基础知识
在开始进入详细的内容之前,先了解几个基本的概念。
I18N
语言代码
多语言设计场景检查清单
参考资料
- 多语言系统搭建 https://zhuanlan.zhihu.com/p/548263662
- 多语言系统的数据库设计 https://developer.aliyun.com/article/39819
- 网址多语言设计 https://learnku.com/articles/58725