我正在创建一个应用程序,产品将由我的客户创建(类似于电子商务网站),所以我显然需要存储在数据库中的翻译描述,我不能强迫我的客户学习 git/yml。
关于如何正确本地化描述(以及最终产品名称)并将它们存储在数据库中,我有两个想法,但如果有一种我应该使用的众所周知的方法,我会很高兴知道它。
第一个想法对我来说似乎最合乎逻辑,但我想让它对我“透明”,我不想到处写连接,所以如果它是正确的,一些关于如何实现这一点的建议是赞赏。
想法1:
创建一个数据库表products
(其中name
和description
字段可能设置为默认语言环境),然后是一个products_translations
包含以这种方式构造的表的表:
products_translations
- id
- locale
- product_id
- name
- description
举个例子:product_translation: { id: 1, locale: 'en', product_id: 3, name: 'toy', description: 'play' }
但我想访问翻译而不需要到处写很多 IF。所以如果我写 product.name 它应该返回 en 或者它基于当前的语言环境。
奖励:是否有任何宝石可以帮助我实现这一目标?
想法2:另一个想法是有一个表name_locale1
,name_it
等等,但我不喜欢这种方法,因为会污染我的模型对象与字段,我将有一个巨大的表。
但是,通过这种方式,我可以避免加入该对象的每个查询。
如果有一种我不知道的更好的方法(数据库模式或类似方法),那也没关系,我不会被迫只对这两个想法严格,但是我必须在两者之间做出选择,我真的不知道哪个会更好。
重要提示:我想将翻译保存在 yml 文件中,动态内容除外,这显然需要在数据库中进行翻译。