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 online protection

Rails Long Term Support

Rails LTS provides security patches for old versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2)

  • Prevents you from data breaches and liability risks
  • Upgrade at your own pace
  • Works with modern Rubies
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)