【发布时间】:2014-10-03 08:21:35
【问题描述】:
我想编写一个将多语言数据存储在数据库中的应用程序。有些帖子具有唯一 ID,它们是用多种语言编写的(至少 2 种语言,可能会添加其他语言)。我已经浏览了几篇 stackoverflow 的帖子,并找到了这些几乎令人满意的答案:
Multi-language Category Titles in Mysql Database
What's the best database structure to keep multilingual data?
Schema for a multilanguage database
他们都建议这样放3张桌子:
[ languages ]
id (INT)
name (VARCHAR)
[ products ]
id (INT)
price (DECIMAL)
[ translation ]
id (INT, PK)
model (VARCHAR) // product
field (VARCHAR) // name
language_id (INT, FK)
text (VARCHAR)
(来自上述链接之一)
我同意该解决方案,但我希望应用程序显示帖子所用的所有可能语言。我已经考虑阅读帖子的所有翻译并仅使用一种来创建页面,但使用另一种翻译以显示其他可能的语言。我不喜欢这个想法,因为这样我会从数据库中检索到太多未使用的数据(因为我检索了许多翻译而只使用一个)。
我还想过检索所有可能的翻译并将它们存储在页面中(例如,在 javascript 代码中,在数据属性中等),但这会使页面变慢,因为我认为大多数用户只想看到帖子只用一种语言。
所以我猜应用程序必须执行 2 个查询:一个获取翻译,一个获取帖子的所有语言。但我认为有一种方法可以将它放在一个查询中,但我不知道如何做到这一点。
有没有一种简单的方法来阅读一种语言的翻译(由用户或默认设置,可能只是第一个数据库条目)和所有其他语言的帖子编写只需一个查询?
提前致谢。
【问题讨论】:
标签: mysql database database-design translation multilingual