2010-06-06 56 views
1

在Rails应用程序中,我有两个模型:FoodDrink
食物和饮料都有一个name,它必须存储在两种语言。
如何更好地实现这些表格的翻译?Rails:表列的翻译

我意识到的第一个解决方案是用name_enname_ru替换name列。
另一种解决方案是使用YAML哈希编码,如{ :en => 'eng', :ru => 'rus' }并将yaml作为名称存储。

假设内容不是静态的,你会推荐什么?
也许有好文章?

回答

1

第一个选项(name_enname_ru)是最容易实现的。

您可以包含一个名称方法,根据所选语言环境返回正确的值。你甚至可以创建一个模块,如果你要使用这个在很多车型/字段:

class Food < ActiveRecord::Base 
... 
    def name 
    self.send("name_#{I18n.locale}") 
    end 
end 

如果将来您必须包括一个额外的语言,你将不得不增加迁移,当然。但是这不应该太麻烦。

第二个(使用YAML编码)看起来有点麻烦 - 你不需要做额外的迁移,但是你没有其他的功能。例如,搜索变得更加困难 - 您不能再使用SQL来查看描述,因为它们在YAML上编码而不是纯文本。

所以我建议有两个领域。