简体   繁体   中英

How can I translate model and attribute names of an Rails Engine?

The usual way to translate model and attribute names of a Rails project are:

MyModel.model_name.human

MyModel.human_attribute_name :myattribute

or, when you are using a form for MyModel:

form.label :myattribute

The locale file config/locales/en.yml looks like this:

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

And this works for a regular Rails project. When the same model would be part of an Engine called MyEngine , the same would be put into config/locales/en.yml of the Engine and prefixed with my_engine:

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

The my_engine prefix works for various translations, except when trying to get model or attribute names via the above mentioned methods.

I have set up a fresh Rails project and Engine with Rails 3.2.11 to test that, but without success.

Does anybody know how to make this work?

I got help on the Rails issues section on github. This is the answer:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM