在查找表中处理I18N的最佳方法是什么?

Dan*_*ski 8 database-design internationalization

在具有查找表的多语言应用程序中,处理翻译的最佳方法是什么?

例如,对于国家/地区查找表,美国用户应该看到英语国家/地区名称,因为德语应该看到德语名称.但他们的ID仍应相同.

我能想到以下几点:

  • 为每种语言添加不同的查找表
  • 使用单个查找表,其中包含根据其语言标记的同一国家/地区的多个条目.
  • 摆脱所有查找表并按程序代码执行所有查找
  • [我没有想到的任何其他想法?]

Chs*_*y76 9

这里最大的问题是 - 最终用户可以改变翻译吗?

如果答案是"否",则资源包比表更容易,更快速地使用.而不是实际文本,您的表将包含资源键(或者您可以使用主键,如果它是文本而不是数字),并且适当的资源包将包含翻译.

如果答案为"是",则必须将翻译存储在数据库中.但是,我发现在这种情况下最简单的方法是模仿数据库中的上述资源包功能 - 例如,有一个表"locale","resource key","resource value"列,所有其他表将用于查找实际的本地化文本.