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      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.

Leave a Comment