Rails引擎ActiveRecord模型I18n

Jac*_*lyn 3 ruby-on-rails rails-i18n rails-activerecord

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

module Foo
  class Bar < ActiveRecord::Base
    # has an attribute bar_attr
  end
end
Run Code Online (Sandbox Code Playgroud)

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

en:
  activerecord:
    attributes:
      bar_attr: "TEST"
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

en:
  activerecord:
    attributes:
      bar:
        bar_attr: "TEST"
Run Code Online (Sandbox Code Playgroud)

和:

en:
  activerecord:
    attributes:
      foo:
        bar:
          bar_attr: "TEST"
Run Code Online (Sandbox Code Playgroud)

但无论如何,当我Foo::Bar.human_attribute_name("bar_attr")从父应用程序调用时,我得到"Bar attr"(例如默认的人类属性名称).请注意,Foo::Bar.model_name.human当我尝试使用以下翻译时会出现同样的问题:

en:
  activerecord:
    models:
      ...
Run Code Online (Sandbox Code Playgroud)

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

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

ric*_*ard 9

它需要一些搜索,但我在另一个问题中找到了答案,在子类中继承Rails i18n验证错误消息,因为我也试图让i18n在Rails引擎中为ActiveRecord工作.

根据上面的例子,答案可能是这样的,

en:
  activerecord:
    attributes:
      foo/bar:
        bar_attr: "TEST"
Run Code Online (Sandbox Code Playgroud)