【问题标题】:localizing existing database本地化现有数据库
【发布时间】:2013-06-06 18:08:06
【问题描述】:

我们有一个包含大约 20 个表的小型 mySQL 数据库(全部为英文)。

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

我们有哪些选择?

谢谢

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

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

我们以 products 表为例。

产品标题和产品描述字段(以及任何其他需要翻译的文本字段)应移至第二个表 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

【问题讨论】:

  • 取决于您需要本地化什么?仅在几个表中的产品名称? cmets等所有条目?
  • 好吧,我想这只是产品表

标签: mysql database-design localization


【解决方案1】:

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

【讨论】:

  • 是的,我想到了。我想知道我刚刚添加到帖子中的方案是否可行?
  • 这不是我要找的,我没有使用你的答案,但我知道它会起作用,而且由于你是唯一一个回答明显答案的人,我会给你打勾和 1 起来! - 感谢您的回复
  • 感谢您的积分。为什么这不是您想要的?您的解决方案也很好,如果您需要动态添加新语言则更好,但如果您的应用确实只需要一定数量的翻译,则速度会更慢且更复杂。
【解决方案2】:

我会提供其他选项只是为了好玩。 =)

您可以简单地确保您的 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)并存储各种语言。不过,您显然必须增加现有字段的大小才能实现增长。

【讨论】:

  • MY mySQL 正在使用 UTF8,而我用于输入数据的管理面板已经采用 UTF-8
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2017-11-12
  • 2012-04-19
  • 2020-05-03
  • 2012-09-02
相关资源
最近更新 更多