2010-06-22 13 views
6
fonksiyonları bir çeviri ( I18n.translate) talep ediyorlar Raylar, Ben tam kapsamları vb almak için kodlarını analiz etmek istemiyoruz

Her dize için konsola içine bir hata ayıklama çıktısını ekleyebilir nasılRails'deki tüm Çeviri Dizeleri nasıl gösterilir?

o istendi?

Örnekler:

I18n.t 'errors.messages.invalid', :scope => :active_record 
# Translation for 'activerecord.errors.messages.invalid' (not) found 

label(:post, :title) 
# Translation for 'activerecord.attributes.post.title' not found 
# Translation for 'views.labels.post.title' not found 
+0

ile Şu ana kadar, daha iyi bir yanıt daha yapamadım "Rails kodunu oku" veya "Kendi çeviri dizelerinizi kullanın" (ilk örnekte olduğu gibi). – giraff

cevap

8

Bu çok şık bir çözüm değildir, ancak benim için yaradı. Ben Başlatıcı bir oluşturduk:

$ DEBUG_TRANSLATION=true rake cucumber 

... ve tüm çevirileri STDOUT terk yapılmaya çalışılan görürsünüz:

require 'i18n' 

if (Rails.env.development? || Rails.env.test?) && ENV['DEBUG_TRANSLATION'] 
    module I18n 
    class << self 
     def translate_with_debug(*args) 
     Rails.logger.debug "Translate : #{args.inspect}" 
     translate_without_debug(*args) 
     end 
     alias_method_chain :translate, :debug 
    end 
    end 
end 

Sonra aşağıdaki gibi komutları çalıştırabilir. Bu üretim kodunu dikkate almıyorum, bu yüzden onu bir Gist içinde tuttum ve bu aşamada ana proje kaynak kontrolüne bakmadım.

Noddy, ama iş yapıyor. Sadece küçük bir değişiklik

+0

Andrea D'Amico'daki değişiklikleri eklemek için güncelledim (diğer yanıtlara bakın). Teşekkürler Andrea - ilk etapta bunu neden yapmadığımı bilmiyorum! –

2

günlüğüne I18n ayıklama iletileri koymak için:

yerine bu satırı:

puts "Translate: #{args.inspect}" 

Rails.logger.debug "Translate : #{args.inspect}" 
+0

Teşekkürler Andrea; Yukarıdaki değişikliği bu değişime dahil ettim. +1. –

İlgili konular