Тема простая, но мне пришлось потратить некоторое время, прежде чем из разрозненных источников я понял, как наиболее быстро и просто получить сообщения об ошибках валидации на русском. Этот пост поможет сэкономить немного времени новичкам.
Файлы локализации лежат в 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.