Сообщения об ошибках ActiveRecord: перевод полей

Я использовал инструкции, указанные в http://guides.rubyonrails.org/i18n.html. перевести поля моей модели, но метки не переводятся. Что я делаю неправильно.

У меня есть модель User с полем name, и я хотел бы, чтобы она была переведена на бразильские португальские языки (pt_br), поэтому я получил свой pt_br.yml:

pt_br:
    errors: "Erro!"
    activerecord:
        models:
            user: "Usuário"
        attributes:
            name: "Nome"
            address: "Endereço"
        errors:
            template:
                body: "Por favor, corrija os campos assinalados"
                header: "Dados inválidos"
            messages:
                blank: "é obrigatório"
                taken: "já existe"
                too_short: "incompleto"

когда я попал на страницу с формой:

<% form_for(@usuario) do |f| %>
<%= f.error_messages %>
<%= f.label :name %>
<%= f.text_field :name %>
<% end %>

У меня все еще есть поле, помеченное как «имя», а не как «Номер», как мне бы хотелось. у меня тоже есть

config.i18n.default_locale = :pt_br 

в моем окружении.rb

Чего не хватает?


person Daniel Cukier    schedule 06.09.2009    source источник


Ответы (3)


Вам нужно указать пространство имен ваших атрибутов под user, то есть:

pt_br:
  activerecord:
    attributes:
      user:
        name: "Nome"
        address: "Endereço"

Вы также можете установить плагин i18n_label для автоматического перевода меток.

person eremite    schedule 07.09.2009
comment
Отлично! Это сработало, но что-то не так с вашей ссылкой (вероятно, с подчеркиванием) - person Daniel Cukier; 08.09.2009

Вы можете попробовать <%= f.label :name, t('activerecord.attributes.name') %>.

person theIV    schedule 06.09.2009
comment
Это работает для поля, но я все еще получаю непереведенные тексты в рамке ошибок (например, когда я оставляю пустым обязательное поле) - person Daniel Cukier; 07.09.2009

А как насчет human_attribute_name? Существует ли с Rails 2.1.0.

Я думаю, что это лучше, чем любые другие решения:

<%= f.label :name, User.human_attribute_name(:name) %>
person KARASZI István    schedule 05.10.2011