2011-12-18 6 views
6

Я создал новый проект Rails 3. Я пытаюсь использовать переводы в своих взглядах, как это:Как включить ошибки перевода Rails I18n в представлениях?

= t('.translate_test') 

В моем браузере я выглядит "translate_test" вместо "my test translation" ведьму я установить в en.yml.

Мой главный вопрос - почему я не вижу ошибки, например "Missing translation: en ..."?

+0

Возможный дубликат [Rails: как обрабатывать перевод локалей без ошибок во время теста] (http://stackoverflow.com/questions/8066901/rails-how-to-treat-locale-translation-missing-as-error -during-test) – Besi

ответ

8

В Rails 3 они больше не отображают этот текст. Если вы проверите элемент в источнике html, вы увидите сообщение с отсутствующим переводом.

Вы можете включить резервные объявления от, попробуйте поставить в вашей среде или инициализатор следующего:

config.i18n.fallbacks = false 
11

Я создал этот инициализатор для raise исключение - арг передается, так что вы будете знать, какой ключ i18n пропал, отсутствует!

# 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

Большое спасибо, с этой системой очень легко проверить, что все _missing translates_ запускают тесты. Если у вас есть хорошая тайна, конечно. – fguillen

3

Я использую самый простой и просмотреть конкретное решение для отображения ошибок в виду, когда перевод отсутствует, добавив этот стиль в вашем application.css.scss или любой глобальной таблицы стилей:

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

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

Nice и прагматичный. Другие подходы выше не работали для меня с Rails 4.x. Я создал 'debug.css' и условно включил его в свой шаблон:' = stylesheet_link_tag 'debug', если Rails.env.production? ' – Besi

Смежные вопросы