Каков наилучший способ отслеживать сообщения проверки ActiveRecord i18n? - PullRequest
2 голосов
/ 01 июля 2011

Я постоянно забываю переводить такие вещи, как activerecord.errors.models.user.attributes.name.blank, на все языки моего приложения. У кого-нибудь есть советы по отслеживанию отсутствия переводов?

Ответы [ 4 ]

3 голосов
/ 27 июля 2011

Одна вещь, которую вы можете сделать, это установить I18n.config.exception_handler = :raise_i18n_exception в вашей тестовой среде. Это не поймает все, но это супер легко и лучше, чем ничего.

(в config / environment / test.rb это будет просто I18n.exception_handler = :raise_i18n_exception )

2 голосов
/ 27 июля 2011

Вы можете проверить плагин translate , который добавляет небольшую веб-консоль управления для ваших ключей перевода (и показывает, какие ключи отсутствуют и где).

Вероятно, он немного староват, но работает с Rails 2 и должен работать даже с 3, если вам нужно решить некоторые проблемы с конфигурацией (или просто получить запрос на извлечение, который уже доступен там).

2 голосов
/ 21 июля 2011

Gettext является де-факто стандартом в переводах. Это очень многофункциональный и, откровенно говоря, я ненавижу приложения, пытающиеся изобрести велосипед. Вот почему я всегда переключаюсь на плагины gettext-rails (или fastgettext).

Хорошо работает с моделями: http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html#Models

И ... это решает твою проблему. Gettext может помочь вам отслеживать непереведенные строки - вы можете настроить кричать на вас или просто вернуть непереведенную строку (по умолчанию).

1 голос
/ 28 июля 2011

Некоторое время назад я думал о простом способе делиться всеми общими переводами во всех приложениях.Этот эпизод с Railscasts дал мне представление о том, как это сделать.

Короче говоря, вы можете связать разные бэкэнды перевода, и гем i18n будет использовать их в определенном порядке, поэтому я подумал использоватьбэкэнд Redis * для хранения всех распространенных переводов (таких как сообщения проверки AR) и использования его в качестве резервного бэкенда для всех моих приложений, которым требуется i18n.

Этот подход может решить вашу проблему, если принять его с другой точки зрения: пишите переводы один раз и делитесь ими навсегда.Более того, каждый раз, когда вы находите отсутствующий перевод, вы исправляете его для всех приложений, использующих общий бэкэнд.

Я еще не реализовал это, потому что у меня не было времени сделать это, но моя идея состояла в том, чтобысделайте что-то вроде упомянутого интерфейса перевода , чтобы управлять переводами и делиться ими, используя подход, показанный в railscast.

Надеюсь, это поможет.

* Redis или любое другое постоянное сетевое хранилище ключей будет в порядке для этой задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...