Ruby 多语言网站:在哪里存储语言列表?

Ruby 多语言网站:在哪里存储语言列表?,ruby,ruby-on-rails-3,localization,internationalization,Ruby,Ruby On Rails 3,Localization,Internationalization,我们有一个网站被翻译成将近三十种语言。每篇文章都有一个字段,说明它是为哪种语言写的 我想知道rails实现这一点的最佳方式是什么。使用以下内容创建完整的模型语言: Class Language has_many :article end Class Article belongs_to :language end 或者直接在articles表的字段中使用常量硬编码,以列出所有可用的语言。(主要在下拉列表中显示): 这两种方法都可以,但是什么是最好的rails方式和最干净的维护方

我们有一个网站被翻译成将近三十种语言。每篇文章都有一个字段,说明它是为哪种语言写的

我想知道rails实现这一点的最佳方式是什么。使用以下内容创建完整的模型语言:

Class Language
    has_many :article
end
Class Article
    belongs_to :language
end
或者直接在articles表的字段中使用常量硬编码,以列出所有可用的语言。(主要在下拉列表中显示):

这两种方法都可以,但是什么是最好的rails方式和最干净的维护方式呢


谢谢你的意见

您可以在文章模型上创建一个语言属性来存储信息,您的第二个选项可能就足够了

我认为,语言模型太多了,没有真正的好处

如果您想进一步封装它,可以创建一个模块,将模型扩展到处理语言的实例方法。如果你想让事情变得干净,那可能是你首选的方式

如果您希望坚持使用模型,请记住,您可以使用委托帮助器使事情对您的语言模型透明。因此,您可以直接调用article.language\u locale(一种非常微妙但重要的设计模式),而不是article.language.locale


您可以做很多事情,但我可能会在这里使用一个模块来保持简单。

是的,我知道i18n的功能,但它似乎更面向视图和助手,而不是处理模型内部语言的方法。好吧,我几乎不明白您所说的将模型扩展到处理语言的实例方法的模块是什么意思?在Rails中,您可以创建一个不是实际模型的模块,而是一些已定义的方法。假设您将其命名为language_setter.rb,并将其放在/lib(标准位置)中。您可以为那里的语言创建所有逻辑,然后在文章模型中包含模块,该模块可以将其方法用作类或实例方法(取决于您是包含还是扩展)。
LANG_LIST = {:en => 'english', :de => 'german', :fr => 'french' ...}