Как включить ошибки перевода Rails I18n в представлениях? - PullRequest
6 голосов
/ 18 декабря 2011

Я создал новый проект Rails 3. Я пытаюсь использовать переводы в моих представлениях, как это:

= t('.translate_test')

В моем браузере я смотрю "translate_test" вместо "my test translation", который я установил в en.yml .

Мой главный вопрос - почему я не вижу ошибки вроде "Missing translation: en ..."?

Ответы [ 4 ]

10 голосов
/ 13 марта 2012

Я создал этот инициализатор для raise исключения - переданы аргументы, чтобы вы знали, какой ключ i18n отсутствует!

# only for development and test
if Rails.env.development? || Rails.env.test?

  # raises exception when there is a wrong/no i18n key
  module I18n
    class JustRaiseExceptionHandler < ExceptionHandler
      def call(exception, locale, key, options)
        if exception.is_a?(MissingTranslationData)
          raise exception.to_exception
        else
          super
        end
      end
    end
  end

  I18n.exception_handler = I18n::JustRaiseExceptionHandler.new

end

Источник

8 голосов
/ 18 декабря 2011

В Rails 3 они больше не показывают этот текст.Если вы проверите элемент в html-источнике, вы увидите сообщение об отсутствии перевода.

Вы можете отключить откат, попробуйте добавить в вашу среду или инициализатор следующее:

config.i18n.fallbacks = false
4 голосов
/ 17 апреля 2013

Я использую простейшее и просматриваемое конкретное решение для отображения ошибок в View, когда отсутствует перевод, добавив этот стиль в ваш application.css.scss или в любую глобальную таблицу стилей:

.translation_missing{
  font-size: 30px;
  color: red;
  font-family: Times;

  &:before{
   content: "Translation Missing :: ";
   font-size: 30px;
   font-family: Times;
   color: red;
 }
}
0 голосов
/ 10 декабря 2018

Добавьте monkeypatch в ваш application.rb, чтобы при отсутствии перевода возникло исключение:

module ActionView::Helpers::TranslationHelper
  def t_with_raise(*args)
    value = t_without_raise(*args)

    if value.to_s.match(/title="translation missing: (.+)"/)
      raise "Translation missing: #{$1}"
    else
      value
    end
  end
  alias_method :translate_with_raise, :t_with_raise

  alias_method_chain :t, :raise
  alias_method_chain :translate, :raise
end
...