2011-12-18 22 views
6

Tôi đã tạo dự án Rails 3 mới. Tôi cố gắng sử dụng bản dịch trong quan điểm của tôi như thế này:Làm cách nào để bật các lỗi dịch Rails I18n trong chế độ xem?

= t('.translate_test') 

Trong trình duyệt của tôi trông "translate_test" thay "my test translation" phù thủy tôi đặt trong en.yml.

Câu hỏi chính của tôi - tại sao tôi không thể thấy lỗi như "Missing translation: en ..."?

+0

bản sao có thể có của [Đường ray: Cách xử lý bản dịch ngôn ngữ bị thiếu là lỗi trong khi kiểm tra] (http://stackoverflow.com/questions/8066901/rails-how-to-treat-locale-translation-missing-as-error -during-test) – Besi

Trả lời

8

Trong Rails 3, chúng không hiển thị cho bạn văn bản này nữa. Nếu bạn kiểm tra phần tử trong nguồn html, bạn sẽ thấy thông báo thiếu bản dịch.

Bạn có thể bật fallbacks tắt, hãy thử để đưa vào môi trường của bạn hoặc một initializer sau:

config.i18n.fallbacks = false 
11

Tôi đã tạo initializer này để raise một ngoại lệ - args được thông qua, do đó bạn sẽ biết được chính i18n bị thiếu!

# 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

Cảm ơn rất nhiều, với hệ thống này nó rất dễ dàng để kiểm tra tất cả các _missing dịch _ chạy các bài kiểm tra .. nếu bạn có một coverture tốt của khóa học. – fguillen

3

tôi sử dụng đơn giản nhất và xem giải pháp cụ thể để hiển thị các lỗi trong Xem khi bản dịch là mất tích bằng cách thêm phong cách này trong application.css.scss của bạn hoặc bất kỳ kiểu toàn cầu:

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

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

Đẹp và thực dụng. Các cách tiếp cận khác ở trên không hiệu quả với Rails 4.x. Tôi đã tạo một 'debug.css' và có điều kiện bao gồm nó trong mẫu của tôi:' = stylesheet_link_tag 'debug' trừ khi Rails.env.production? ' – Besi

Các vấn đề liên quan