come utilizzare le rotaie i18n caratteristiche di fallback
-
26-09-2019 - |
Domanda
ho questo problema i18n
activerecord:
notices:
messages:
success:
create: "Something was created"
models:
user:
success:
create: "Thanks for registration"
I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"
I18n.t("activerecord.notices.models.book.success.create")
# => "translation missing: de, activerecord, notices, models, book, success, create"
Non so il motivo per cui il modello libro non ottiene il massaggio fallback. Ho impostato config.i18n.fallbacks = true
. Sto usando Rails 3
Soluzione
Quando un : di default è dato, il suo valore verrà restituito se la traduzione non è presente:
I18n.t :missing, :default => 'Not here'
# => 'Not here'
Più informazioni qui
Altri suggerimenti
I set in config / application.rb solito
config.i18n.fallbacks =[:de, :fr, :en]
Così si può rallentare l'ordine del fallback.
Ma mantenere l'attenzione in alcuni ambienti / *. Rb la configurazione viene sovrascritto.
Hai attivato fallback per il vostro back-end? Supponendo E 'semplice (sulla base di yml nell'esempio):
mettere questo in un inizializzatore:
require "i18n/backend/fallbacks"
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
in Rails 3+, questo è impostato nella cartella config / file ambienti:
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation can not be found)
config.i18n.fallbacks = true
Credo che il modo migliore per gestire una stringa mancante, è quello di visualizzare una località di default, piuttosto che un messaggio di errore.
Aggiungi questa linea in application.rb di ripiego per il locale inglese.
config.i18n.fallbacks = [:en]
Nel caso in cui si desidera specificare fallback locale-specifici, è possibile utilizzare il seguente:
config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]}
Si noti inoltre che è possibile abilitare e disabilitare le ricadute in base al proprio ambiente.
Così, mentre sullo sviluppo potrebbe avere un senso di avere un errore visualizzato, è possibile invece abilitare fallback nel environments/production.rb
con la seguente:
config.i18n.fallbacks = true