7

I18n fallback est chargé:fallback i18n désactiver temporaire dans Rails

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

Toute idée maintenant désactiver temporairement? J'ai des formulaires, où je veux éditer diverses versions linguistiques, et avec fallback je reçois des champs avec la langue par défaut, si la traduction donnée n'est pas encore présente.

Répondre

0

Utilisez-vous globaliser? J'utilise I18n fallback pour mes chaînes système et globalize3 pour mes traductions d'attributs. Je veux que les chaînes du système se replient, mais pas les attributs. Je simplement des solutions de repli pour handicapés Globalize seulement avec un petit patch de singe:

config/Initialiseur/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

Vous pouvez passer l'option fallback: true-I18n.t, ce qui empêchera I18n de regarder en d'autres lieux (see implementation here). Mais cela ne fait probablement pas partie de l'API publique ...

2

Vous pouvez passer :fallback => 'false' sur vos appels I18n.translate, mais cela ne fait pas partie de l'API publique.

Une autre façon que vous pourriez vouloir essayer est la suivante:

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

Ce sera essentiellement faire la solution de repli pour chaque paramètre régional disponible pour inclure uniquement lui-même. Donc, si la traduction n'est pas trouvée en elle-même, il n'y a pas de repli à faire.

Toutefois, vous devez alors trouver un moyen de restaurer la solution de secours par défaut.

Vous pouvez le faire par exemple avec une déclaration comme: si quelqu'un se demande encore comment faire cela, vous pouvez changer le I18n.fallbacks à la volée

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

:

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

Je ne sais pas comment est-ce que c'est sûr.