2011-12-18 8 views
6

Stworzyłem nowy projekt Rails 3. Staram się korzystać z tłumaczenia w moich poglądów tak:Jak włączyć błędy tłumaczeń I18n w Railsach w widokach?

= t('.translate_test') 

w przeglądarce i wygląda "translate_test" zamiast "my test translation" czarownicę ustawić w en.yml.

Moje główne pytanie - dlaczego nie widzę błędu podobnego do "Missing translation: en ..."?

+0

możliwy duplikat [Rails: Jak traktować tłumaczenie locale jako błąd podczas testu] (http://stackoverflow.com/questions/8066901/rails-how-to-treat-locale-translation-missing-as-error -during-test) – Besi

Odpowiedz

8

W Rails 3 nie wyświetlają już tego tekstu. Jeśli sprawdzasz element w źródle html, zobaczysz komunikat o brakującym tłumaczeniu.

Można włączyć fallbacks off, spróbuj umieścić w swoim środowisku lub inicjator następujący:

config.i18n.fallbacks = false 
11

Utworzyłem ten inicjator do raise wyjątek - args zapadają więc będziesz wiedzieć, które klucz i18n brakuje!

# 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

Wielkie dzięki, dzięki temu systemowi bardzo łatwo jest sprawdzić wszystkie _missing translates_, które wykonują testy. Jeśli oczywiście masz dobrą tajemnicę. – fguillen

3

używam najprostszym i zobaczyć konkretne rozwiązanie do wyświetlania błędów w widoku, gdy tłumaczenie brakuje dodając ten styl w application.css.scss lub globalnego arkusza stylów:

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

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

Ładne i pragmatyczne. Inne podejścia powyżej nie działały dla mnie z Railsami 4.x. Stworzyłem 'debug.css' i warunkowo dołączam go do mojego szablonu:' = stylesheet_link_tag 'debugowanie', chyba że Rails.env.production? ' – Besi