Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров11K
Тема простая, но мне пришлось потратить некоторое время, прежде чем из разрозненных источников я понял, как наиболее быстро и просто получить сообщения об ошибках валидации на русском. Этот пост поможет сэкономить немного времени новичкам.

Файлы локализации лежат в 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.
Теги:
Хабы:
Всего голосов 37: ↑28 и ↓9+19
Комментарии16

Публикации

Истории

Работа

Ruby on Rails
7 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань