8

Sto usando Rails 3 con Globalize3 0.2.0.beta4E 'possibile rendere i binari i18n localback a cascata?

Idealmente ho bisogno di: fr per fallback a: en e viceversa.

Ci sono casi in cui è disponibile solo una traduzione francese e ho bisogno di mostrarla anche se la locale è: en.

Ho provato

config.i18n.fallbacks = { :fr => :en, :en => :fr } 

ma piuttosto sorprende che provoca un livello di stack errore troppo in profondità.

risposta

1

Se si passa un array di impostazioni locali, verranno impostate come fallback di default per tutte le impostazioni internazionali.

config.i18n.fallbacks = [:en, :fr] 

Sfortunatamente, non ho trovato il modo di impostare solo due impostazioni locali per ricadere l'una sull'altra.

1

Alla fine ho rattoppato Globalize3. Non eccezionale visto che devo aggiornare la patch ogni volta che il sito ha bisogno di una nuova localizzazione, ma hey, ha funzionato.

module Globalize 

    class << self 

    def fallbacks(locale = self.locale) 
     case locale 
     when :en then [:en, :fr] 
     when :fr then [:fr, :en] 
     end 
    end 

    end 
end 
5

Sto cambiando la mia risposta.

Per abilitare ricadute, aggiungere il seguente al file environment.rb:

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

Quindi, è possibile attivare ricadute circolari come si stava tentando di, ad esempio:

config.i18n.fallbacks = {'en' => 'fr', 'fr' => 'en'} 

In questo caso , se manca qualcosa nella versione locale, controllerà il locale fr, e viceversa. Non ricevo errori durante l'esecuzione.

Fonte: http://batsov.com/articles/2012/09/12/setting-up-fallback-locale-s-in-rails-3/

0

In ultima i18n gemma (0.7.0) che ho trovato è necessario definire impostazioni locali di fallback come questa (in config/application.rb):

# Custom I18n fallbacks 
config.after_initialize do 
    I18n.fallbacks = I18n::Locale::Fallbacks.new(at: :"de-DE", ch: :"de-DE", gb: :"en-US") 
end 

È inoltre necessario impostare config.i18n.fallbacks = true in tutti i file config/environments/*.rb.

Problemi correlati