【问题标题】:Database design for multiple language website多语言网站的数据库设计
【发布时间】:2012-09-06 13:01:55
【问题描述】:

我需要创建支持多种语言的网站,但是我从来没有这样做过,我需要帮助来为我的应用程序创建数据库。

网站将是商业的,所以我们以 ITEM 表为例。我唯一能很快想到的就是这个模型,但我认为这不是很好,因为 Language 表与 Item 表相关联,但我也会有 Company 表,也许还有其他人。

Item
    ID
    Price

Language
    ID
    ItemID
    Language (example: en-US)
    Field (example: title)
    Value (example: Good Title)

有人可以帮我设计支持多种语言的优秀数据库吗?

【问题讨论】:

  • Language.ID - 没必要。使用LangCode, ItemId作为PK。

标签: database database-design relational-database


【解决方案1】:

如何在数据库中存储多语言数据有多种方式,我通常是这样的:

Item
  ID
  price
  title_translation_key_id (is a TranslationKey foreign key)
  desc_translation_key_id (is a TranslationKey foreign key)

TranslationKey
  ID
  key (string)

Translation
  ID
  translation_key_id (is a TranslationKey foreign key)
  content (string)
  language_id (is a Language foreign key)

Language 
  ID
  code

如何检索数据?

您可以使用子选择,或者如果您的数据库性能不佳,您可以从中生成特定于语言的表。

【讨论】:

【解决方案2】:

另一种可能的方法是将翻译保存为 json 对象。例如

Item
  Id   Price                       Name
   1    100     {"en":"Car", "fr":"voiture", "am":"մեքենա"}

这很简单,您不需要实现任何连接来检索数据。但是,您始终必须获得所有翻译。如果您支持多种语言,这可能不太好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2010-10-30
    相关资源
    最近更新 更多