代码之家  ›  专栏  ›  技术社区  ›  giraff

如何在Rails中显示所有要求翻译的字符串?

  •  6
  • giraff  · 技术社区  · 14 年前

    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 回复  |  直到 14 年前
        1
  •  9
  •   Paul Russell    11 年前

    这不是一个非常优雅的解决方案,但它对我很有效。我创建了一个初始化器:

    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
  •  2
  •   Andrea D'Amico    11 年前

    只需在日志中添加I18n调试消息:

    替换此行:

    puts "Translate: #{args.inspect}"
    

    Rails.logger.debug "Translate : #{args.inspect}"