Как перевести полные сообщения об ошибках ActiveRecord? - PullRequest
4 голосов
/ 09 февраля 2012

Как можно перевести ActiveRecord полные сообщения об ошибках ?Например, я хочу показать их на испанском.

Я создаю этот файл config/locales/es.yml:

es:
  errors:
    attributes:
      email:
        blank: "El email no puede estar en blanco"

Но при отправке формы с presence: true проверка включает атрибутвсегда в начале сообщения:

Email El email no puede estar en blanco

Первое слово «Email» не обязательно.Как от этого избавиться?

Ответы [ 2 ]

7 голосов
/ 09 февраля 2012

Хорошо, после долгого чтения и перечитывания официального руководства по i18n я обнаружил в разделе 5.2.2 следующее:

ActiveModel :: Errors # full_messages добавляет имя атрибута к сообщению об ошибкеиспользуя разделитель, который будет найден в файле errors.format (и по умолчанию он равен «% {attribute}% {message}»).

Итак, решение состоит в том, чтобы настроить формат следующим образом:

es:
  errors:
    format: "%{message}"
    attributes:
      email:
        blank: "El email no puede estar en blanco"
3 голосов
/ 13 марта 2013

Вместо включения имени поля в сообщение об ошибке и необходимости переводить каждое сообщение для каждого поля, вы можете предоставить переводы для общих сообщений и самих имен полей.Сгенерированный config / locales / en.yml имеет ссылку на другие переводы: https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale Используйте соответствующие файлы, загруженные оттуда, и предоставьте переводы для имен полей, как показано в руководстве по Rails I18n: http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

См. Этот ответ для примера: https://stackoverflow.com/a/2859275/18038

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