Browse the Ruby on Rails Community.

You are here: Browse Railsplugins Localization

Localization

= Localization Plugin for Rails

This plugin provides a simple, gettext-like method to provide localizations.

Features * Any number of languages or locales * Simple method to defines singluar/plural translations * Can use lambdas to provide Ruby-code based dynamic translations * Customizable for different instances of the application Usage

If the localization plugin is installed, it is used automatically.

You need to create a /lang dir in your RAILS_ROOT.

The recommended way to use it is to create files that are named like the languages you define in them (but you can put everything in one big file too.)

For instance-customizable strings, add overrides in files you put in /lang/custom.

=== Simple example:

Create a file /lang/translations.rb:

Localization.define('de') do |l|
  l.store 'yes', 'Ja'
  l.store 'no', 'Nein'
end
Localization.define('fr') do |l|
  l.store 'yes', 'oui'
  l.store 'no', 'non'
end

In your controller or application.rb:

Localization.lang = 'de' # or 'fr'

In your view:

<%=_ 'yes' %>
<%=_ 'no' %>

Because the _ method is simply an extension to Object, you can use it anywhere (models/controllers/views/libs).

=== Extended example:

Create a file /lang/default.rb with following contents:

Localization.define do |l|
  l.store '(time)', lambda { |t| t.strftime('%I:%M%p') }
end

Create a file /lang/de_DE.rb with following contents:

Localization.define('de_DE') do |l|
  l.store '%d entries', ['Ein Eintrag', '%d Einträge']
  l.store '(time)', lambda { |t| t.strftime('%H:%M') }
end

In your controller or application.rb:

Localization.lang = 'de_DE'

In your view:

<%=_ '%d entries', 1 %>     # singular variant is chosen 
<%=_ '%d entries', 4 %>     # plural variant is chosen
<%=_ '(time)', Time.now %>  # call the block with a parameter

== Translation file guesstimation

You can generate a guesstimation of all strings needed to be translated in your views by first adding the _(‘blah’) syntax everywhere and then calling:

puts Localization.generate_l10n_file

in the Rails console.

NOTE: This description has been extracted from the Plugin README and so the formatting may need updating to make browser friendly