2010-06-22 12 views
6

Quando Rails funzioni chiedono una traduzione (I18n.translate), non voglio analizzare il proprio codice al fine di ottenere gli scopi esatte eccCome mostrare tutte le stringhe di traduzione richieste in Rails?

Come posso aggiungere un output di debug nella console per ogni stringa che è stato chiesto?

Esempi:

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

Fino ad ora, non ho potuto una risposta migliore di "leggi il codice Rails" o "Usa le tue stringhe di traduzione" (come nel primo esempio). – giraff

risposta

8

Questa non è una soluzione molto elegante, ma ha funzionato per me. Ho creato un initialiser:

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 

È quindi possibile eseguire i comandi come il seguente:

$ DEBUG_TRANSLATION=true rake cucumber 

... e vedrete tutte le traduzioni di essere tentato di dumping a STDOUT. Tuttavia, non considero questo codice di produzione, quindi l'ho conservato in un Gist e non l'ho controllato nel mio controllo del codice sorgente del progetto principale in questa fase.

Noddy, ma fa il lavoro.

+0

Ho aggiornato per includere i cambiamenti da Andrea D'Amico (vedi altra risposta). Grazie Andrea, non sono sicuro del motivo per cui non l'ho fatto in primo luogo! –

2

Solo un piccolo cambiamento per mettere i messaggi di debug I18n nel registro:

sostituto questa linea:

puts "Translate: #{args.inspect}" 

con

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

Grazie Andrea; Ho incluso questo cambiamento nella risposta sopra. +1. –

Problemi correlati