【问题标题】:Multilang Webites : Where to store the langs list?Multilang 网站:在哪里存储肺列表?
【发布时间】:2011-05-03 09:12:26
【问题描述】:

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

我想知道实现这一点的最佳 Rails 方法是什么。用这样的东西创建一个完整的模型语言:

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

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

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

这两种方法都有效,但是最好的导轨方式和最清洁的维护方式是什么?

感谢您的意见!

【问题讨论】:

    标签: ruby ruby-on-rails-3 localization internationalization


    【解决方案1】:

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

    我认为语言模型太过分了,没有真正的收获。

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

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

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

    【讨论】:

    • 是的,我知道 i18n 功能,但它似乎更多的是面向视图和帮助程序,而不是处理模型中的语言的方式。
    • 好的,我几乎看不出您所说的将模型扩展为处理语言的实例方法的模块是什么意思?
    • 在 Rails 中,您可以创建一个不是实际模型的模块,而是一些已定义的方法。假设您将其命名为 language_setter.rb 并将其放在 /lib (标准位置)中。您可以在那里为语言创建所有逻辑,然后将模块包含在您的文章模型中,该模块可以将其方法用作类或实例方法(取决于您是包含还是扩展)。 postal-code.com/mrhappy/blog/2007/02/06/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2011-06-28
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2019-04-21
    • 2017-09-05
    相关资源
    最近更新 更多