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.