【问题标题】:Where to store model attribute value translations在哪里存储模型属性值翻译
【发布时间】:2011-04-27 15:54:21
【问题描述】:

我有一个带有 payment_status 属性的模型发票。 payment_status 具有固定值 unpayed|partial_payed|payed,我想将其翻译存储在语言环境文件中。 我认为将它放在模型本地文件中会很好

de:
  activerecord:
    attributes:
      payment_status: Zahlstatus
      payment_status_values:
        unpayed: offen
        partial_payed: teilgezahlt
        payed: ausgeglichen

现在我可以像这样获得最后一张发票的翻译后的 payment_status-value

I18n.t Invoice.last.payment_status , :scope => "activerecord.attributes.invoice.payment_status_values"
=> "offen"

在我看来,这看起来像是经常输入 sopes,是否有一个范围内的方法来获得翻译或更好的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails internationalization translation


    【解决方案1】:

    我们使用了 marcel 的 easy_enums 插件。我找到的最接近的是:https://github.com/mschuerig/easy_enums/

    语法是这样的。然后你只存储范围标识符的最后一部分。

      has_enum :shipping_mode, :default => :not_set, :fallback => :not_set do
        value :not_set
        value :address
        value :self_collect
        define_method(:localize) { I18n.t("models.payment.shipping_mode.#{self.id}") }
      end
    

    这是否达到了您的目标?

    【讨论】: