我正在使用带有 i18n 的 Rails 2.3.5。我有没有办法在所有 View 中找到所有尚未翻译的语言环境? 也许应用程序 Controller 中有一个 after_filter,但是我可以使用哪些代码来完成这项工作?
谢谢
最佳答案
当使用 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
(例如将其放入 RAILS_ROOT/config/initializers/i18n.rb)
现在,每当您尝试翻译未指定翻译的 key 时,都会在 RAILS_ROOT/log/missing_translations.log 中打印一条警告。
希望这有帮助!
关于ruby-on-rails - 在 Rails 中查找未翻译的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409512/