在MySQL数据库中存储翻译的最佳方式

4
我正在处理多语言网站相关的工作。
例如,一个语言的数据库表 pages 如图所示:

enter image description here

现在,我有两个翻译的想法:
  1. 使用默认语言英语的所有表,并创建第二个表translations,只在需要时使用。

  2. 或在现有的表中添加列,如title_ru、title_en......

哪种方法更快、更有效呢?请解释您的想法(为什么这样想)。
1个回答

4
我不会选择你提供的两个解决方案。为每种语言创建一个新表并不是最优解,因为这样你需要修改每个查询以便根据所选语言进行查询。此外,添加新语言应该是一个相当简单的任务,但是这将意味着添加新表模式并更新整个代码库。
同样,为每种语言添加一个新列也存在同样的问题。
为什么不只是拥有一个字典表,并将语言ID作为主键的一部分。编写您的网站以根据当前语言ID(1 = 英语,2 = 俄语等)选择文本。
然后,在运行时切换到另一种语言,只需在代码中将语言ID从1设置为2,所有查询都将继续工作。

好的,这是个好主意。 但是,你想要在“名称”和“标题”字段中插入id(基于字典表),对吗? 但是这将使数据库表难以阅读(人为因素)。 - Tural Ali
有多种方法可以引入字典查找,但最简单的想法就是将语言ID添加到您的“页面”表中,并为每种语言存储一个ID对应的页面。 - carpii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接