2011-12-18 3 views
6

Ho creato un nuovo progetto Rails 3. Io cerco di usare traduzioni in mio punto di vista come questo:Come abilitare gli errori di traduzione di Rails I18n nelle viste?

= t('.translate_test') 

Nel mio browser mi sembra "translate_test" invece "my test translation" strega ho impostato in en.yml.

La mia domanda principale - perché non riesco a vedere l'errore come "Missing translation: en ..."?

+0

possibile duplicato di [Rails: come trattare la traduzione locale mancante come errore durante il test] (http://stackoverflow.com/questions/8066901/rails-how-to-treat-locale-translation-missing-as-error -during-test) – Besi

risposta

8

In Rails 3 non mostrano più questo testo. Se controlli l'elemento nel sorgente HTML vedrai il messaggio di traduzione mancante.

È possibile attivare ricadute fuori, provare a mettere nel proprio ambiente o un inizializzatore il seguente:

config.i18n.fallbacks = false 
11

Ho creato questo initializer a raise un'eccezione - args sono passati in modo da sapere quale tasto i18n manca!

# only for development and test 
if Rails.env.development? || Rails.env.test? 

    # raises exception when there is a wrong/no i18n key 
    module I18n 
    class JustRaiseExceptionHandler < ExceptionHandler 
     def call(exception, locale, key, options) 
     if exception.is_a?(MissingTranslationData) 
      raise exception.to_exception 
     else 
      super 
     end 
     end 
    end 
    end 

    I18n.exception_handler = I18n::JustRaiseExceptionHandler.new 

end 

Source

+0

Grazie mille, con questo sistema è molto facile controllare tutti i _missing traduce_ eseguendo i test .. se hai un buon coverture, ovviamente. – fguillen

3

Io uso il più semplice e visualizzare soluzione specifica per visualizzare gli errori in Vista quando la traduzione non è presente con l'aggiunta di questo stile nel vostro application.css.scss o qualsiasi foglio di stile globale:

.translation_missing{ 
    font-size: 30px; 
    color: red; 
    font-family: Times; 

    &:before{ 
    content: "Translation Missing :: "; 
    font-size: 30px; 
    font-family: Times; 
    color: red; 
} 
} 
+0

Bello e pragmatico. Gli altri approcci di cui sopra non hanno funzionato per me con Rails 4.x. Ho creato un 'debug.css' e lo includo condizionalmente nel mio modello:' = stylesheet_link_tag 'debug' a meno che Rails.env.production? ' – Besi