Как я могу перевести имя атрибута ActiveRecord в Rails 3.2?
У меня есть следующая проверка в моей модели (User):
validates :first_name,:length => {:minimum => 2,:maximum => 50},:format => { :with => /[a-zA-Z]+/ }
В моем файле yml locales есть следующее:
attributes:
first_name:
too_short: "First name is too short"
too_long: "First name is too long"
invalid: "First name is not valid"
Теперь, если я запустил a rails console
и напишу следующее:
a = User.new
a.valid?
a.errors.full_messages
Я увижу следующие ошибки:
["First name First name is too short", "First name First name is not valid"]
Как вы можете видеть, имя атрибута также добавляется к ошибке поля. До сих пор везде в моем коде я использовал model.errors[:field]
, и это всегда будет показывать мне строку, содержащуюся в файле yml, но я бы хотел изменить строки:
attributes:
first_name:
too_short: " is too short"
too_long: " is too long"
invalid: " is not valid"
И используйте версию full_messages. Проблема в том, что я не знаю, как перевести имя атрибута. Скажем, например, что вместо первого имени я бы хотел иметь имя сначала. Как мне это сделать?
Ответы
Ответ 1
Здесь вы можете найти ответ http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
в вашем config/locale/(your_lang).yml
en:
activerecord:
models:
user: Dude
attributes:
user:
first_name: "Name first"
измените "en:" на символ языка, который вам нужно использовать
веселит
Ответ 2
В Rails 5 после attributes
мне пришлось пространство имен с моим именем модели в подчеркивании. Вот так:
pt-BR:
activerecord:
attributes:
my_model_name_in_underscore:
attribute_name: 'String'
Источник: fooobar.com/info/480386/...