versión traducidas traducción play notas idiomas idioma falta ruby-on-rails internationalization

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:

https://rails.lighthouseapp.com/projects/8994/tickets/2637-patch-i18n-look-up-a-translation-with-the-default-locale-when-its-missed-with-another-specific-locale

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''}