如何翻译Rails引擎的模型和属性名称?

时间:2013-02-01 20:28:46

标签: ruby-on-rails model attributes internationalization rails-engines

翻译Rails项目的模型和属性名称的常用方法是:

MyModel.model_name.human

MyModel.human_attribute_name :myattribute

或者,当您使用MyModel的表单时:

form.label :myattribute

语言环境文件config/locales/en.yml如下所示:

en:
  activerecord:
    models:
      mymodel:
        one: TranslatedMyModel
        other: TranslatedMyModels
  attributes:
    mymodel:
      myattribute: translated attribute

这适用于常规的Rails项目。当同一模型成为名为MyEngine的引擎的一部分时,相同的模型将被放入引擎的config/locales/en.yml并以my_engine为前缀:

en:
  my_engine:
      activerecord:
        models:
          mymodel:
            one: TranslatedMyModel
            other: TranslatedMyModels
      attributes:
        mymodel:
          myattribute: translated attribute

当尝试通过上述方法获取模型或属性名称时,my_engine前缀适用于各种翻译,

我已经设置了一个新的Rails项目和使用Rails 3.2.11的引擎进行测试,但没有成功。

有人知道如何使这项工作吗?

1 个答案:

答案 0 :(得分:6)

我在github的Rails问题部分得到了帮助。这就是答案:

en:
  activerecord:
    models:
      'my_engine/mymodel':
        one: TranslatedMyModel
        other: TranslatedMyModels
    attributes:
      'my_engine/mymodel':
        myattribute: translated attribute