Тема простая, но мне пришлось потратить некоторое время, прежде чем из разрозненных источников я понял, как наиболее быстро и просто получить сообщения об ошибках валидации на русском. Этот пост поможет сэкономить немного времени новичкам.
Файлы локализации лежат в config/locales. Как может выглядеть для русского языка можно посмотреть тут github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ru.yml
Если мы скопируем этот файл к себе в проект и пропишем в config/application.rb по-умолчанию русский язык:
То мы будем получать сообщения вида:
Но Name и Phone тоже хотелось бы видеть на русском. Для этого создадим в config/locale папку models с файликом ru.yml:
Таким образом мы задали русские названия для модели и ее свойств. Для того чтобы Рельсы подхватили файл в application.rb добавим строку:
И теперь наше сообщение об ошибке будет таким:
Если вас по каким-то причинам не устраивают встроенные сообщения об ошибках, то можно добавить свои:
Типы валидационных сообщений можно посмотреть тут: guides.rubyonrails.org/i18n.html#error-message-interpolation
Вот собственно и все основы локализации валидационных сообщений в RoR.
Файлы локализации лежат в config/locales. Как может выглядеть для русского языка можно посмотреть тут github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ru.yml
Если мы скопируем этот файл к себе в проект и пропишем в config/application.rb по-умолчанию русский язык:
config.i18n.default_locale = :ru
То мы будем получать сообщения вида:
Name не может быть пустым
Phone не может быть пустым
Но Name и Phone тоже хотелось бы видеть на русском. Для этого создадим в config/locale папку models с файликом ru.yml:
ru:
activerecord:
models:
user: Пользователь
attributes:
profile:
name: "Отображаемое имя"
phone: Телефон
Таким образом мы задали русские названия для модели и ее свойств. Для того чтобы Рельсы подхватили файл в application.rb добавим строку:
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
И теперь наше сообщение об ошибке будет таким:
Отображаемое имя не может быть пустым
Собственные сообщения об ошибках
Если вас по каким-то причинам не устраивают встроенные сообщения об ошибках, то можно добавить свои:
#encoding: utf-8
#первая строчка «волшебный коммент»
class User < ActiveRecord::Base
validates :name, :presence => {:message => 'Хей! Здесь должно быть твое имя!'}
validates_length_of :phone,
:minimum => 7,
:maximum => 10,
:too_short => "должен содержать не менее %{count} символов",
:too_long => "должен содержать не менее %{count} символов"
end
Типы валидационных сообщений можно посмотреть тут: guides.rubyonrails.org/i18n.html#error-message-interpolation
Вот собственно и все основы локализации валидационных сообщений в RoR.