[英]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.