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

Комментарии 16

>«должен содержать не менее %{count} символов»

Это ведь в самой модели пишется, а значит английский вариант будет недоступен? Как сделать, чтобы в зависимости от пользовательской локали выводились разные сообщения? Сходу не нашёл, а скоро понадобится.
попробуй в модели писать сразу на англ.
а перевод соответственно в yml-файле
Я делал следующим образом.
В представлении (ну или в модели, как угодно):
<%= t( 'activerecord.errors.template.header', :count => @transaction.errors.count ) %>


В ru.yml:
 activerecord:
    errors:
      template:
        header:
          one:   "Cохранение не удалось из-за %{count} ошибки"
          other: "Cохранение не удалось из-за %{count} ошибок"

ну тема, как вы сами заметили, даже неприлично простая
Да, но не очевидная. Когда первый раз с этим сталкиваешься сначала попадаешь на gem russian Но там нет понимания стоит ли его использовать для 3.1. Немного полазив по нему понимаешь, что скорее всего не стоит.

На русский yml случайно наткнулся, мог бы и не заметить. Так что пусть будет)
А какие проблемы с russian? я его во всех проектах использую вместе с r18n-rails. А вообще для себя сделал правилом вообще весь текст загонять в файлы переводов, даже если не планирую использовать несколько языков.
Меня смутило, что нигде явно не заявляется поддержка версии 3, только в одном из коммитов:
March 25, 2010 0.2.6: minimal support of Rails 3.0b / i18n 0.3.x

Хотя, конечно, может зря я отказался от его использования.
зря, он вполне рабочий. единственное что если пользуете версию не с гитхаба с rubygems.org — придется сменить yaml-парсер на Syck. либо указывайте github-репозиторий в гемфайле.
В геме russian на данный момент нет необходимости. Все его фичи бэкпортированы или имплеменчены в i18n.
Но это ещё и плюс в сторону того, чтобы поизучать Rails новичкам. Я одно время именно из за этой штуки бросил ковырять то, что Rails наскаффолдил — так и не смогу побороть «Name не может быть пустым».

Особенно меня зацепило в раилскастах: «А сейчас мы будем защищаться от XSS атак. Готовы? Начнём. Ну в общем, ничего делать не надо, оно само всё делает что надо.».
Ну в этом же вся идея RoR — сконцентрироваться на бизнес-задачах, а в рутине положиться на фреймворк
Можно еще через кастом-валидаторы делать:

validate :name_validator

def name_validator
  errors.add(:name,:name_required) if self.name.blank?
end

А в локализации писать здесь:
  activerecord:
    errors:
      models:
        message:
          attributes:
            name:
              name_required: "Введите Ваше ФИО"
Благодарю за совет
Писать сообщения об ошибках прямо в моделе – не очень хорошо.
Пишите все в yml файлах локализаций, даже если у вас и преполагается использовать только один язык.
Рассказали бы про названия моделей в нестед формах при ошибках валидации, те
gallery has_many :images
image belongs_to :gallery
accepts_nested_attributes_for images
Когда в нестед форме галереи всплывает ошибка у картинки, image называется как image.
Как с этим бороться?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации