Rails引擎ActiveRecord模型I18n

时间:2013-07-10 19:29:15

标签: ruby-on-rails rails-activerecord rails-i18n

我有一个Rails应用程序依赖于一个单独的引擎(存储在vendor/engine_name中)。该引擎具有ActiveRecord对象Bar

module Foo
  class Bar < ActiveRecord::Base
    # has an attribute bar_attr
  end
end

在该引擎的config/locales/en.yml文件中,我尝试过:

en:
  activerecord:
    attributes:
      bar_attr: "TEST"

我也试过了:

en:
  activerecord:
    attributes:
      bar:
        bar_attr: "TEST"

en:
  activerecord:
    attributes:
      foo:
        bar:
          bar_attr: "TEST"

但无论怎样,当我从父应用程序调用{​​{1}}时,我会得到“Bar attr”(例如默认的人类属性名称)。请注意,当我尝试使用以下语言进行翻译时,Foo::Bar.human_attribute_name("bar_attr")会出现同样的问题:

Foo::Bar.model_name.human

我不确定应用/引擎结构是否相关,因为我在父应用的翻译文件中也尝试了上述三种en: activerecord: models: ... 格式,但没有运气。

为了正确翻译这些模型名称/属性,我缺少什么?

1 个答案:

答案 0 :(得分:9)

我花了一些时间进行了搜索,但是我在另一个问题Inheriting Rails i18n validation error messages in the subclass中找到了答案,因为我还试图让i18n在Rails引擎中为ActiveRecord工作。

基于上面的例子,答案可能是,

en:
  activerecord:
    attributes:
      foo/bar:
        bar_attr: "TEST"