Как показать все запрашиваемые строки перевода в Rails? - PullRequest
6 голосов
/ 22 июня 2010

Когда функции Rails запрашивают перевод (I18n.translate), я не хочу анализировать их код для получения точных областей и т. Д.

Как добавить выходные данные отладки вконсоль для каждой запрашиваемой строки?

Примеры:

I18n.t 'errors.messages.invalid', :scope => :active_record 
# Translation for 'activerecord.errors.messages.invalid' (not) found

label(:post, :title)
# Translation for 'activerecord.attributes.post.title' not found
# Translation for 'views.labels.post.title' not found

Ответы [ 2 ]

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

Это не очень элегантное решение, но оно работает для меня.Я создал инициализатор:

require 'i18n'

if (Rails.env.development? || Rails.env.test?) && ENV['DEBUG_TRANSLATION']
  module I18n
    class << self
      def translate_with_debug(*args)
        Rails.logger.debug "Translate : #{args.inspect}"
        translate_without_debug(*args)
      end
      alias_method_chain :translate, :debug
    end
  end
end

Затем вы можете запустить команды, подобные следующим:

$ DEBUG_TRANSLATION=true rake cucumber

... и вы увидите, что все попытки перевода сбрасываются в STDOUT,Однако я не рассматриваю этот производственный код, поэтому я сохранил его в Gist и не проверял его в своем основном контроле исходного кода на данном этапе.

Нодди, но этоделает работу.

2 голосов
/ 04 января 2013

Небольшое изменение для помещения отладочных сообщений I18n в журнал:

заменить эту строку:

puts "Translate: #{args.inspect}"

с

Rails.logger.debug "Translate : #{args.inspect}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...