本地化现有数据库

时间:2013-06-06 18:08:06

标签: mysql database-design localization

我们有一个小的mySQL数据库,大约有20个表(全英文)。

现在它已经被设计并且有数千条记录,是否可以本地化这个数据库?

我们有什么选择?

由于

更新 - 06-08-13 - 我想知道这个解决方案是否有效?

每个需要保存本地化数据的表应该分成2个表:primary_table和table_locale

我们以产品表为例。

应将产品标题和产品描述字段(以及需要翻译的任何其他文本字段)移动到第二个表products_locale中。此本地化表将包含具有以下模式的产品的所有翻译数据:

Id(PK)    Prod_Id(FK)   Locale_Id(FK)    Prod_Title (VARCHAR)   Prod_Desc (BLOB) 
1              1                   1     My product                     My product is awesome
2              1                   2     Mon produit                    Mon produit est génial
3              1                   3     Mi producto                    Mi producto es impresionante

2 个答案:

答案 0 :(得分:1)

好的,在这种情况下,我只想为每种语言添加一个新列。例如。 product_en,product_de等。简单,快速,干净 只要您不需要动态添加和删除语言。

答案 1 :(得分:0)

我会给出其他选择只是为了好玩。 =)

您可以简单地确保您的MySQL实例使用UTF8(http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html)。您还可以查看用于存储文本的国家字符集(http://dev.mysql.com/doc/refman/5.0/en/charset-national.html)。

这个想法是创建行而不是列,然后引入一个语言字段 - 或者有一个外部映射表,将语言映射到各种产品。

这种方法有一些明显的缺点,但它是可能的。

另一个选项是序列化产品描述的对象(可能是JSON)并存储各种语言。显然,您必须增加现有字段的大小才能考虑增长。