【发布时间】:2011-01-14 17:45:31
【问题描述】:
这是一个例子:
[ products ]
id (INT)
name-en_us (VARCHAR)
name-es_es (VARCHAR)
name-pt_br (VARCHAR)
description-en_us (VARCHAR)
description-es_es (VARCHAR)
description-pt_br (VARCHAR)
price (DECIMAL)
问题:每种新语言都需要修改表结构。
这是另一个例子:
[ products-en_us ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)
[ products-es_es ]
id (INT)
name (VARCHAR)
description (VARCHAR)
price (DECIMAL)
问题:每种新语言都需要创建新表,并且“价格”字段在每个表中都重复。
这是另一个例子:
[ languages ]
id (INT)
name (VARCHAR)
[ products ]
id (INT)
price (DECIMAL)
[ translation ]
id (INT, PK)
model (VARCHAR) // product
field (VARCHAR) // name
language_id (INT, FK)
text (VARCHAR)
问题:难吗?
【问题讨论】:
-
第三种方法或多或少是正确的——有什么难的?
-
问题是,你找到的每一个解决方案,当你需要修改表格时,你总会找到一个案例——即更多的语言、不同的语言、另一个字段......
-
由于用户很可能一次只使用一种语言,我认为应该考虑为每种语言使用单独的数据库。这种方法会占用更多的存储空间,但不会带来性能问题,而且设置起来相对容易。
标签: mysql database localization translation multilingual