Подтвердить что ты не робот

Как перевести проверку активной модели записи

Когда я отправляю форму с ошибкой в ​​нее, она возвращает сообщение об ошибке. Как я могу перевести эти сообщения об ошибках с помощью i18n? У меня уже есть перевод для всех других текстов в моих взглядах, поэтому я знаю, как l18n работает в Rails. Теперь я получаю следующее:

2 errors prohibited this user from being saved:

Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank

Я хочу перевести как заголовок, так и ошибки.

4b9b3361

Ответ 1

Перевод для названия будет следующим:

nl:
  activerecord:
    errors:
      template:
        header:
          one:   "1 error prohibited this %{model} from being saved"
          other: "%{count} errors prohibited this %{model} from being saved"
        body:    "There were problems with the following fields:"

Для перевода сообщений об ошибках Rails будет использовать следующий порядок переводов:

activerecord.errors.models.user.attributes.name.blank
activerecord.errors.models.user.blank
activerecord.errors.messages.blank
errors.attributes.name.blank
errors.messages.blank

Итак, вы можете добавить:

nl:
  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              blank: "foo blank in nl bar baz"

Он задокументирован в API-интерфейсе API Rails (I18n), который может дать вам дополнительную информацию.

Ответ 2

Просто используйте файл голландских переводов, который вы можете найти здесь. Он содержит переводы для большинства (если не всех) сообщений проверки подлинности ActiveRecord.

Скопируйте файл в config/locales/ в свой проект.

Альтернативный метод

Если вы хотите воспользоваться обновленными переводами, добавьте следующее в свой Gemfile вместо копирования файлов перевода вручную:

gem 'rails-i18n'

Ответ 3

Руководство rails I18n охватывает это довольно хорошо.

В config/locales/nl.yml вы можете поместить следующие значения:

nl:
  activerecord:
    models:
      user: "User"
    attributes:
      email: "Email"

Для сообщений об ошибках ActiveRecord будет искать их в следующих пространствах имен:

activerecord.errors.models.[model_name].attributes.[attribute_name]
activerecord.errors.models.[model_name]
activerecord.errors.messages
errors.attributes.[attribute_name]
errors.messages

model, attribute и value интерполируются и доступны в ваших переводах, например:

nl:
  errors:
    messages:
      blank: "Please fill the %{model} %{attribute}"