在数据库中设置 i8n 的最佳方法

Best way to setup a i8n in a database

我面临开发一个支持多语言的数据库的问题。 我的第一个方法是,为每种语言编写一个额外的 table。 比如我处理食谱,所以我根据语言创建了各种模板:

- enRecipe
- deRecipe
- frRecipe

这是正确的还是他们的方法更好?

当需要将其他语言添加到设计中时,当您需要添加更多 tables 时,将显示设计的主要问题。
也很难找到 语言没有实现特定的配方键。

我建议采用如下设计:

关于评论:
要推广其他实体(如配料)的解决方案,可能有替代方案:

  1. 拥有包含 sting 资源密钥的资源 table,它将 很可能在你的应用程序中有资源文件(文件是 替换为 tables)。
    请注意,在此设计中,文本键是 与 Recipe 和 Ingredient 等业务实体分开。
  2. 更具体的设计将有一个基础 table 可能需要多语言支持的业务实体,这个基础 table 将具有必须翻译的名称键。