完整的多语言解决方案包括前端多语言,后端多语言,数据多语言。该文主要提供数据多语言的实现思路。
表上加上语言代码字段
create table xxxx (
...
xxxx1 varchar(100), /* 字段1 */
xxxx2 varchar(100), /* 字段2 */
created_lang varchar(10), /* 创建时的语言代码 */
...
);
创建对应的多语言表
create table xxxx_i18n (
id bigint, /* 对应原表的ID */
lang_code varchar(10), /* 语言代码 */
default_lang tinyint, /* 默认标志 */
xxxx1 varchar(100), /* 字段1的多语言内容 */
xxxx2 varchar(100) /* 字段2的多语言内容 */
...
)
维护多语言的规则
| 操作 | 策略 |
|---|---|
| 新增 | 多语言表新增记录(default_lang值为1) |
| 修改 | 若多语言表存在当前语言的记录则修改,否则修改默认多语言记录 |
参考代码
可以参考开源项目MoLiHua的 jasmine-framework 模块,相关代码是实现在 jasmine.framework.i18n 包中。