pipe理数据库国际化的最佳方法
我有一些麻烦,在我的数据库中pipe理我的i18n
现在我的应用程序中只有两种语言可用,但为了可扩展性,我希望以“最好”的方式来实现。
我可以重复像description_fr, description_en
所有字段description_fr, description_en
但我完全没有这个舒适。 我现在所做的是一个外部表格,将其称为content
,其架构如下所示:
id_ref => entity referenced id (2) type => table name (university) field => field of the specific table (description) lang => which lang (fr, en, es…) content => and finally the appropriate content.
我认为精确可以是重要的,我使用sequelizeJS作为ORM。 所以我可以使用一个有用的钩子afterFind,afterCreate和afterUpdate。 所以每当我想find一个资源的例子,find它后,我的钩子检索这个资源的所有内容,并确定我的对象与货物价值。 它的工作,但我不爱这个。
但是我有这个麻烦:
-
这大大增加了我对数据库的请求数量:例如,如果我select50行,我必须做50个请求更多..,而只是一个特定的模型。 如果我有嵌套模型,它是指数…
-
那么,通过内容提取数据是非常复杂的。 示例find具有特定名称的大学很复杂。
-
而且这是更新等很多工作…
所以我想知道,如果这是一个好主意,直接在相关表中保存为JSON,数据。 就像是
{ fr : { 'name':'Ma super université' }, en : { 'name':'My kick ass university' } }
并继续使用Sequelize挂钩build立和插入适当的数据到我的对象。
你怎么看 ? 你如何pipe理这个?
编辑
-
我使用一个MySQL数据库
-
它涉及20个领域(交叉模型)
-
如果没有内容设置,我必须使用我的default_lang来设置默认值(例如,如果没有内容设置,法语中的event.description将与英语中的相同)