【问题标题】:Rails: translations for table's columnRails:表格列的翻译
【发布时间】:2010-06-06 15:24:58
【问题描述】:
在 Rails 应用程序中,我有两个模型:Food 和 Drink。
食物和饮料都有一个name,必须以两种语言存储。
如何更好地实现这些表格的翻译?
我意识到的第一个解决方案是将name 列替换为name_en 和name_ru。
另一种解决方案是使用 { :en => 'eng', :ru => 'rus' } 之类的 YAML 哈希进行编码,并将 yaml 存储为名称。
如果内容不是静态的,您会推荐什么?
也许有好文章?
【问题讨论】:
标签:
ruby-on-rails
database
internationalization
translation
【解决方案1】:
第一个选项(name_en、name_ru)最容易实现。
您可以包含一个名称方法,该方法根据所选的语言环境返回正确的值。如果您要在大量模型/字段上使用它,您甚至可以创建一个模块:
class Food < ActiveRecord::Base
...
def name
self.send("name_#{I18n.locale}")
end
end
如果将来您必须添加其他语言,那么您当然必须添加迁移。但这应该不会太麻烦。
第二个(使用 YAML 编码)似乎有点麻烦 - 您不必使用它进行额外的迁移,但您会失去其他功能。例如,搜索变得更加困难 - 您不能再使用 SQL 来查看描述,因为它们是在 YAML 上编码而不是纯文本。
所以我建议有两个字段。