簡體   English   中英

在Rails中找到未翻譯的語言環境

[英]find untranslated locales in rails

我正在i18n上使用Rails 2.3.5。 我有辦法在所有視圖中查找所有尚未翻譯的語言環境嗎? 也許是應用程序控制器中的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)

現在,每當您嘗試翻譯未指定翻譯的鍵時,都會在RAILS_ROOT / log / missing_translations.log中打印警告。

希望這可以幫助!

我找不到執行此操作的簡單技巧,所以我做到了。 首先在application_controller.rb中實現一個“ before_filter”

before_filter :set_user_language

# set the language, 'zen' is a special URL parameter that makes localizations the use the 't' method visible
def set_user_language
  # turn on 'zen' to see localization by adding 'zen=true' to query string, will stay on until a query with 'zen=false'
  session[:zen] = (session[:zen] || params[:zen] == "true") && params[:zen] != "false"
  I18n.locale = 'en'
end

上面在查詢字符串中找到“ zen = true”和“ zen = false”。 然后將此方法添加到您的application_helper.rb中:

def t(*args)
  result = super(*args)
  result = "[#{result}]" if session[:zen] && result.is_a?(String)
  result
end

使用此方法,“ zen = true”使“ t”方法在方括號[]中顯示本地化的字符串。 要關閉它,請輸入帶有“ zen = false”的查詢字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM