Переведенные атрибуты в сообщениях об ошибках Rails (Rails 2.3.2, I18N) - PullRequest
6 голосов
/ 22 мая 2009

Я определил переведенные атрибуты и имена моделей в файле перевода, и Modelname.human_attribute_name (...) возвращает правильно переведенное имя атрибута, но имена атрибутов в сообщениях об ошибках не переведены. Что нужно для перевода имен атрибутов в сообщениях об ошибках?

Ответы [ 2 ]

14 голосов
/ 23 мая 2009

Из Guide по теме вам потребуется правильно настроить файл локализации с именами моделей и атрибутов:

en: 
  activerecord: 
    models: 
      user: Dude 
    attributes: 
      user: 
        login: "Handle"

Поскольку это YAML, убедитесь, что все ваши "вкладки" на самом деле являются двумя мягкими пробелами. Тогда вы можете получить их с User.human_name и User.human_attribute_name(:login).

Я не принял это за Евангелие - там могла быть ошибка. Я проверил это, и он отлично работает. Я сделал модель с именем Model с атрибутом title. Вот фрагмент моего fr.yml файла в config/locales:

fr:
  activerecord:
    models:
      model: "Sumfink"
    attributes:
      model:
        title: "Tiltile"

Вот соответствующий код вида:

<h1>New <%= Model.human_name %></h1>
<% form_for(@model) do |f| %>
  <%= f.error_messages %>
  <%= Model.human_attribute_name("title") %><br />
  <%= f.text_field :title %>
  <%= f.error_message_on :title %>
...

И скриншот правильно переведенного вывода: http://screencast.com/t/et5FhVe1Gp

1 голос
/ 24 января 2010

Спасибо Иану, просто хотел добавить, что для того, чтобы выделить метку в случае неудачной проверки, вам нужно написать ее так:

  <%= f.label "title", Model.human_attribute_name("title") %><br />

По какой-то причине пишу это так:

  <%= f.label "title" %><br />

не отображает перевод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...