Как я могу перевести имя атрибута 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/...