ruby-on-rails - traducción - notas de la versión traducidas a 0 idiomas
Volver al idioma predeterminado si falta la traducción (4)
Creo que lo más fácil es agregar esto a tus archivos de configuración (por ejemplo, application.rb):
config.i18n.fallbacks = true
Es muy útil para entornos regionales como en-US, en-CA, etc., ya que pueden recurrir automáticamente a locale en.
Como señala Jimmy, incluso puede alterar el mecanismo de respaldo con:
I18n.fallbacks.map(''es'' => ''en'')
en una aplicación internacionalizada de Rails (2.3.5), me gustaría mostrar una traducción de la configuración regional predeterminada en lugar de "traducción faltante"; hay una entrada para ella, pero parece que todavía está pendiente:
Por ejemplo (tomado del ticket), con dos archivos de traducción, en.yml y es.yml:
en:
hello: ''hello''
hello_world: ''hello world''
es:
hello_world: ''hola mundo''
Cuando ejecuto este código:
I18n.t :hello, :locale => :es
Rails devuelve "hola" en lugar de un lapso con "traducción faltante".
Como el ticket aún está pendiente, ¿cómo podría implementar esta funcionalidad? Sé que podría revisar y cambiar todas mis llamadas I18n.t para tener la opción: predeterminada, pero preferiría no tener que pasar por todas las vistas si puedo evitarlo. Como es un parche, supongo que podría aplicarlo a las gemas congeladas de Rails, pero preferiría evitar eso si pudiera.
Si está utilizando Rails 2 , siempre que use la última joya I18n, agregue esto a un inicializador:
I18n.backend.class.send(:include, I18n::Backend::Fallbacks)
Entonces puedes agregar tus retrocesos de esta manera:
I18n.fallbacks.map(''es'' => ''en'')
Si no quieres aplicar el parche a tu gema Rails, puedes crear tu propio código que contenga los parches y mezclarlos con la gema.
Al mirar el parche, debe actualizar el código en dos lugares (el tercer lugar es la parte de prueba).
La primera parte ( i18n.rb ) es un módulo, por lo que al escribir un archivo que contenga algo como esto
module I18n
@@use_default_locale_on_missing_translation = false
...etc...
end
puedes agregar el código modificado. El segundo archivo ( simple.rb ) se puede actualizar de manera similar, excepto que es una clase que está actualizando.
Después de crear los 2 archivos que contienen las modificaciones, debe incluir estos dos archivos en application.rb o en una ubicación similar. Y el código de la gema Rails debe actualizarse con su código personalizado.
Hoy en día no hay necesidad de utilizar una gema i18n por separado, en la instalación de Rails 3.0.6 y superior (5.0 incluidos), el valor de los fallbacks
puede ser uno de los siguientes :
# application.rb
# rails will fallback to config.i18n.default_locale translation
config.i18n.fallbacks = true
# rails will fallback to en, no matter what is set as config.i18n.default_locale
config.i18n.fallbacks = [:en]
# fallbacks value can also be a hash - a map of fallbacks if you will
# missing translations of es and fr languages will fallback to english
# missing translations in german will fallback to french (''de'' => ''fr'')
config.i18n.fallbacks = {''es'' => ''en'', ''fr'' => ''en'', ''de'' => ''fr''}