跨境电商系统多语言内容的设计方案
方案1:一个表设计一个多语言内容关联表
表解构
1 | - product_categories |
数据
product_categories:
category_id |
---|
1 |
2 |
product_categorie_l10ns:
category_id | locale | name |
---|---|---|
1 | en | food |
1 | zh-CN | 食物 |
1 | zh-TW | 食物 |
2 | en | cage |
2 | zh-CN | 笼子 |
2 | zh-TW | 籠子 |
products:
id | category_id |
---|---|
1 | 1 |
2 | 1 |
product_l10ns:
product_id | locale | title | desciption | detail |
---|---|---|---|---|
1 | en | millet | desc 1 | detail 1 |
1 | zh-CN | 小米 | 简介 1 | 详情1 |
1 | zh-TW | 小米 | 簡介 1 | 詳情1 |
2 | en | maize | desc 2 | detail 2 |
2 | zh-CN | 玉米 | 简介 2 | 详情2 |
2 | zh-TW | 玉米 | 簡介 2 | 詳情2 |
方案2:共用一个多语言内容表
优点:只需要一个表来保存多语言数据。
缺点:数据量过大时性能拉胯。
本地化内容中的数据在访客端查询的时候,属于非实时关键数据(无价格、库存等数据),都是可以缓存的,所以只要系统本地化数据量不是超级大,都可以优先考虑使用此方案。
数据操作时需要增加参数:able_type、able_id、column,封装一下增加复杂度不多。
表解构
1 | - product_categories |
able_type + able_id 多态关联
数据
product_categories:
category_id |
---|
1 |
2 |
products:
id | category_id |
---|---|
1 | 1 |
2 | 1 |
l10ns:
able_type | able_id | name | locale | title | body |
---|---|---|---|---|---|
product_categories | 1 | name | en | food | NULL |
product_categories | 1 | name | zh-CN | 食物 | NULL |
product_categories | 1 | name | zh-TW | 食物 | NULL |
product_categories | 2 | name | en | cage | NULL |
product_categories | 2 | name | zh-CN | 笼子 | NULL |
product_categories | 2 | name | zh-TW | 籠子 | NULL |
products | 1 | title | en | millet | NULL |
products | 1 | title | zh-CN | 小米 | NULL |
products | 1 | title | zh-TW | 小米 | NULL |
products | 1 | desciption | en | desc 1 | NULL |
products | 1 | desciption | zh-CN | 简介1 | NULL |
products | 1 | desciption | zh-TW | 簡介1 | NULL |
products | 1 | detail | en | NULL | detail 1 |
products | 1 | detail | zh-CN | NULL | 详情1 |
products | 1 | detail | zh-TW | NULL | 詳情1 |
跨境电商系统多语言内容的设计方案