ruby on rails - with - Carriles: almacenar traducciones en base de datos
rails date format spanish (4)
Estaba buscando una solución plugin / gem para ampliar los rieles nativos i18n para almacenar mis traducciones en mi base de datos. Tal vez usé los términos de búsqueda incorrectos, pero todo lo que encontré fue la información, que es realmente posible cambiar el backend y esta entrada de blog que describe cómo escribir mi propio backend.
Es difícil imaginar que todas esas aplicaciones de rieles tienen sus traducciones almacenadas en archivos yml o ¡cada desarrollador escribió sus propios backends!
¿Sabes soluciones de trabajo para esto? ¡Almacenar textos multilínea en yml realmente me deprime! ;)
Gracias y saludos,
Joe
Es posible que desee probar http://github.com/joshmh/globalize2/tree/master
Finalmente encontré lo que estaba buscando con la ayuda de Sven Fuchs:
¡Este increíble complemento de Dylan Stamat hace exactamente lo que su nombre indica y además maneja el almacenamiento en caché!
Sven también mencionó que la rama actual de i18n / active_record también proporciona un backend ActiveRecord:
http://github.com/svenfuchs/i18n/blob/active_record/lib/i18n/backend/active_record.rb
En el grupo de usuarios de goolge i18n se está discutiendo algo sobre este tema:
http://groups.google.com/group/rails-i18n/browse_thread/thread/6b7ba3c401890a7e
Problema resuelto, gracias al Sr. I18n Sven Fuchs! ;)
Tuvimos una buena experiencia con fast_gettext
tiene un backend respaldado por DB que viene con un controlador para hacer las traducciones a través de la web. El almacenamiento en caché está integrado, aunque tuvimos que codificar la precarga de todas las traducciones en el inicio (es mucho más rápido que obtenerlas una por una con el almacenamiento en caché).
i18n tiene soporte incorporado para usar la base de datos como backend de traducción.
Cree una tabla utilizando este código en una migración:
create_table :translations do |t|
t.string :locale
t.string :key
t.text :value
t.text :interpolations
t.boolean :is_proc, :default => false
end
Luego agregue un inicializador en config / initializers / i18n.rb con contenido:
I18n.backend = I18n::Backend::ActiveRecord.new
Y por último ... poner las traducciones en la tabla. Algo como:
locale key value
en Cool Cool
es Cool Frio
en nav.Home home
es nav.Home casa
...
A partir de i18n 0.5.0, creo que movieron este código a su propia gema ... Olvido cómo se llama esa gema.