7

i18n dự phòng được nạp:tạm thời vô hiệu hóa dự phòng i18n trong Rails

I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) 

Bất kỳ ý tưởng nay đến vô hiệu hóa tạm thời nó? Tôi có các biểu mẫu, nơi tôi muốn chỉnh sửa các phiên bản ngôn ngữ khác nhau và với dự phòng, tôi nhận được các trường có ngôn ngữ mặc định, nếu bản dịch được cung cấp chưa có.

Trả lời

0

Bạn đang sử dụng toàn cầu hóa?

Tôi đang sử dụng dự phòng I18n cho chuỗi hệ thống của mình và globalize3 cho bản dịch thuộc tính của tôi. Tôi muốn chuỗi hệ thống để dự phòng, nhưng không phải thuộc tính. Tôi chỉ đơn giản là fallbacks tàn tật cho toàn cầu hoá chỉ với một miếng vá khỉ nhỏ:

config/initializers/i18n.rb:

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) 

# monkey patch globalize3 to not use fallbacks 
module Globalize 
    def self.fallbacks? 
    false 
    end 
end 
4

Bạn có thể vượt qua các tùy chọn fallback: true-I18n.t, mà sẽ ngăn chặn i18n từ nhìn lên miền địa phương khác (see implementation here). Nhưng có thể không phải là một phần của API công khai ...

2

Bạn có thể chuyển :fallback => 'false' vào các cuộc gọi I18n.translate của mình, nhưng đây không phải là một phần của API công khai.

Một cách khác bạn có thể muốn thử như sau:

I18n.available_locales.each do 
    |al| I18n.fallbacks.merge!({al => [al]}) 
end 

này về cơ bản sẽ làm cho dự phòng cho mỗi miền địa phương có sẵn để chỉ bao gồm chính nó. Vì vậy, nếu bản dịch không được tìm thấy trong chính nó, sau đó không có dự phòng để rơi trở lại.

Tuy nhiên, bạn cần phải tìm cách khôi phục về dự phòng mặc định.

Bạn có thể làm điều đó ví dụ với một tuyên bố như:

I18n.available_locales.each do 
    |al| I18n.fallbacks.merge!({al => [al, I18n.default_locale]}) 
end 
1

nếu có ai vẫn đang tự hỏi làm thế nào để làm điều đó, bạn có thể thay đổi I18n.fallbacks on the fly:

def foo 
    I18n.fallbacks[:at] = [:at] 
    # do stuff with I18n#t 
ensure 
    I18n.fallbacks[:at] = [:at, :de] # or whatever is was before 
end 

Không chắc mặc dù thế nào là an toàn.

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