ruby-on-rails - 在 Rails 中查找未翻译的语言环境

标签 ruby-on-rails ruby internationalization

我正在使用带有 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/

相关文章:

javascript - 如何在 Elixir Phoenix 中向客户端提供翻译?

ruby-on-rails - method_missing 当 `rake test` 加载模型时,尽管如果 Rails 加载模型则正确加载

mysql - 无法使用 ActiveRecord 从 Rake 任务执行 MySQL sql "source"命令

ruby-on-rails - 升级到 rails 5.2.0 后无法指定测试目录

ruby - Ruby 中的朴素贝叶斯

java - Wicket 的枚举值国际化

ruby-on-rails - 将类添加到 link_to block

ruby-on-rails - 单元测试需要 attr_accessor,但会阻止字段被写入

ruby 哈希 : ordering a hash based on the values (which are arrays of values)

c# - ASP.Net:使用 Javascript 和 AJAX 构建多语言网站的方法