--- /dev/null
+# A simple exception handler that behaves like the default exception handler
+# but additionally logs missing translations to a given log.
+#
+# Useful for identifying missing translations during testing.
+#
+# E.g.
+#
+# require 'globalize/i18n/missing_translations_log_handler
+# I18n.missing_translations_logger = RAILS_DEFAULT_LOGGER
+# I18n.exception_handler = :missing_translations_log_handler
+#
+# To set up a different log file:
+#
+# logger = Logger.new("#{RAILS_ROOT}/log/missing_translations.log")
+# I18n.missing_translations_logger = logger
+
+module I18n
+ @@missing_translations_logger = nil
+
+ class << self
+ def missing_translations_logger
+ @@missing_translations_logger ||= begin
+ require 'logger' unless defined?(Logger)
+ Logger.new(STDOUT)
+ end
+ end
+
+ def missing_translations_logger=(logger)
+ @@missing_translations_logger = logger
+ end
+
+ def missing_translations_log_handler(exception, locale, key, options)
+ if MissingTranslationData === exception
+ missing_translations_logger.warn(exception.message)
+ return exception.message
+ else
+ raise exception
+ end
+ end
+ end
+end
\ No newline at end of file