我们有一个小的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
答案 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)并存储各种语言。显然,您必须增加现有字段的大小才能考虑增长。