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.