在rails中找到未翻译的语言环境

xav*_*r23 2 ruby ruby-on-rails internationalization

我正在使用带有i18n的rails 2.3.5.我有办法在所有视图中找到所有尚未翻译的区域设置吗?也许是应用程序控制器中的after_filter,但是我可以使用哪个代码来完成这项工作?

谢谢

sev*_*rin 5

当使用i18n gem(Rails确实如此)时,您可以指定自己的异常处理程序.试试这段代码:

# A simple exception handler that behaves like the default exception handler
# but additionally logs missing translations to a given log.
#
module I18n
  class << self
    def missing_translations_logger
      @@missing_translations_logger ||= Logger.new("#{RAILS_ROOT}/log/missing_translations.log")
    end

    def missing_translations_log_handler(exception, locale, key, options)
      if MissingTranslationData === exception # use MissingTranslation in Rails 3.x !!!
        puts "logging #{exception.message}"
        missing_translations_logger.warn(exception.message)
        return exception.message
      else
        raise exception
      end
    end
  end
end

I18n.exception_handler = :missing_translations_log_handler
Run Code Online (Sandbox Code Playgroud)

(例如把它放到RAILS_ROOT/config/initializers/i18n.rb中)

现在,每当您尝试翻译未指定翻译的密钥时,都会在RAILS_ROOT/log/missing_translations.log中打印一条警告.

希望这可以帮助!