Как вы локализуете имена полей в сообщениях об ошибках ActiveModel? - PullRequest
1 голос
/ 19 января 2011
# in the login form in new.html.haml
= f.label :email, t('.email')

# in fi.yml
fi:
  activemodel:
    errors:
      models:
        user:
          attributes:
            email: 
              taken: "on jo käytössä." # means "is in use"

# The actual error message generated
=>"Email on jo käytössä."

Таким образом, он добавляет имя поля до остальной части сообщения об ошибке ... но имя поля не переводится ..

Могу ли я добавить перевод для метки электронной почты, и если да, куда он должен идти, чтобы ActiveModel нашел его? Если нет, то каково решение?

Ответы [ 4 ]

4 голосов
/ 13 июня 2011

У меня была похожая проблема

fi:
  activemodel:
    attributes:
      user:
        email: "Sähköposti"

Ваш пример не сработал для меня, но отправил меня на правильный путь.Я изменил activemodel: для activerecord: который работал в моем случае.

Я также понял, что могу изменить

f.label :email, t('.email')

на

f.label :email

и при этом сохранить свой перевод.

Не пробовал с хамлом.Я использовал erb в моем случае.Не знаю, есть ли что сказать.

3 голосов
/ 03 июня 2013

В Rails 3.2 вы должны изменить ключ activemodel на activerecord:

fi:
  activerecord:
    attributes:
      user:
        email: "Sähköposti"
    errors:
      models:
        user:
          attributes:
            email:
              taken: "on jo käytössä."

Также учтите, что если модель находится внутри модуля, вы должны указать ее:

    attributes:
      a_module/user:

Вот ссылка на официальную документацию по Rails .

2 голосов
/ 19 января 2011

Видимо, вот так

fi:
  activemodel:
    attributes:
      user:
        email: "Sähköposti"
    errors:
      models:
        user:
          attributes:
            email:
              taken: "on jo käytössä."
1 голос
/ 30 ноября 2011

Следующее работает для меня, чтобы перевести f.label в _form моей модели.

В файле config / locales / yourlanguage.yml:

fr:
  helpers:
    label:
      mymodel:
        attribute1: 'translation1'
        attribute2: 'translation2'
...