Read more

Rails - Multi Language with Fast_Gettext

Deleted user #6
August 25, 2010Software engineer
  • sudo gem install gettext --no-ri --no-rdoc
  • sudo gem install fast_gettext --no-ri --no-rdoc
  • script/plugin install git://github.com/grosser/gettext_i18n_rails.git (didn't work as gem)
  • environment.rb: see code example at the bottom
  • if this is your first translation: cp locale/app.pot locale/de/app.po for every locale you want to use
  • use method "_" like _('text') in your rails code
  • run rake gettext:find to let GetText find all translations used
  • translate messages in 'locale/de/app.po' (leave msgstr blank and msgstr == msgid) new translations will be marked "fuzzy", search for this and remove it, so that they will be used. Obsolete translations are marked with ~#, they usually can be removed since they are no longer needed
  • touch tmp/restart.txt to apply the translations

Be careful using unicode characters!

Illustration money motivation

Opscomplete powered by makandra brand

Save money by migrating from AWS to our fully managed hosting in Germany.

  • Trusted by over 100 customers
  • Ready to use with Ruby, Node.js, PHP
  • Proactive management by operations experts
Read more Show archive.org snapshot

The time running rake gettext:find grows exponentially with the number of unicode characters between two write outs (<%= %>). So up 5 unicode characters may still be o.k.

Variables inside Strings

puts _("Welcome, %{name}") % { :name => current_user.name }

Plural

puts n_("A file was removed", "%{num} files were removed", n) % { :num => n }

environment.rb:

    require 'fast_gettext'
    FastGettext.available_locales = [ 'en', 'de' ]
    FastGettext.add_text_domain('app', :path=>'locale', :type=>:po)
    FastGettext.text_domain = 'app'

    Rails::Initializer.run do |config|
      # Versionsnummern selber rausfinden:
      config.gem 'spreadsheet', :version => '=0.6.4.1'
      config.gem "fast_gettext", :version => "=0.5.7"
      config.gem "gettext", :version => '=2.1.0'
Posted to makandra dev (2010-08-25 14:56)