I was searching for a plugin/gem solution to extend the native rails i18n for storing my translations into my database. Maybe I used the wrong search terms, but all I found
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 value
en Cool Cool
es Cool Frio
en nav.Home home
es 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.
You might want to try http://github.com/joshmh/globalize2/tree/master
We had a good experience with fast_gettext
it has a DB-backed backend that comes with a controller to do the translations over the web. The caching is built-in, though we had to code pre-loading of all of the translations on boot (it is much faster then get them one-by-one with caching).
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! ;)