Rails: store translations in database Rails: store translations in database database database

Rails: store translations in database


i18n has built-in support for using the database as a translation backend.

Create a table using this code in a migration:

   create_table :translations do |t|     t.string :locale     t.string :key     t.text   :value     t.text   :interpolations     t.boolean :is_proc, :default => false   end

Then add an initializer in config/initializers/i18n.rb with contents:

   I18n.backend = I18n::Backend::ActiveRecord.new

And last... put translations in the table. Something like:

locale key      valueen     Cool     Cooles     Cool     Frioen     nav.Home homees     nav.Home casa...

As of i18n 0.5.0 I believe they moved this code out into it's own gem... I forget what that gem is called.


I finally found what I was looking for with the help of Sven Fuchs:

http://github.com/dylanz/i18n_backend_database/tree/master

This quite awesome plugin by Dylan Stamat does exactly what the name indicates and additionally handles the caching!

Sven also mentioned, that the current branch of i18n/active_record provides an ActiveRecord backend as well:

http://github.com/svenfuchs/i18n/blob/active_record/lib/i18n/backend/active_record.rb

Some discussion about this topic is going on in the goolge i18n user group:

http://groups.google.com/group/rails-i18n/browse_thread/thread/6b7ba3c401890a7e

Issue solved, thanks to Mr I18n Sven Fuchs! ;)