Pull to refresh

Валидационные сообщения на русском в Rails 3

Reading time2 min
Views11K
Тема простая, но мне пришлось потратить некоторое время, прежде чем из разрозненных источников я понял, как наиболее быстро и просто получить сообщения об ошибках валидации на русском. Этот пост поможет сэкономить немного времени новичкам.

Файлы локализации лежат в 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.
Tags:
Hubs:
+19
Comments16

Articles

Change theme settings