2011-05-03 52 views
0

我们有一个翻译成近三十种语言的网站。每篇文章都会有一个字段,说明它是为哪种语言编写的。Multilang Webites:在哪里存储langs列表?

我不知道什么是最好的rails方法来实现这一点。创建一个完整的模型语言如下所示:

Class Language 
    has_many :article 
end 
Class Article 
    belongs_to :language 
end 

或者直接在文章表的字段中用常量硬编码以列出所有可用的langs。 (主要是显示它在一个下拉列表):

LANG_LIST = {:en => 'english', :de => 'german', :fr => 'french' ...} 

两个工作,但什么是最好的方式导轨和清洁保养?

感谢您的意见!

回答

1

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

我认为,语言模型只是太多而没有真正的收益。

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

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

很多事情你可以做,但我可能会在这里保持简单的模块。

+0

是的,我知道i18n的功能,但它似乎更多的意见和帮助者,而不是一种方式来处理模型内的语言。 – Hartator 2011-05-03 09:23:59

+0

你可以使用globalize2 :) https://github.com/joshmh/globalize2 – Spyros 2011-05-03 09:27:59

+0

好的,我很难看到你的模块将模型扩展为处理语言的实例方法的意思吗? – Hartator 2011-05-03 09:30:53