Ruby on Rails
InternationalizationComparison

Options available February 2008

Most probably dead

“Multilingual is a project by Per Wigren that does not seem to have been in active development for some time. Globalize took many ideas from Multilingual and was at one early stage called “Multilingual”, but the two projects have little in common now.” (Josh Harvey)

Feature Comparison

feature Globalize Ruby-GetText-Package Localize GLoc Localization Simplified Ri18n Simple Localization ActiveCulture
type plugin gem library plugin plugin plugin gem/plugin plugin plugin
version edge 1.90.0 ? 1.1 0.9 ? 2.3.3 0.1
Last Updated Dec. 2007 Feb. 2008 Oct. 2005 Feb. 2007 Jan. 2008 May. 2005 Jan 2008 Feb 2008
Rails 1.1 ready yes yes yes yes yes ? yes no
Rails 1.2 ready yes yes ? yes yes ? yes no more
Rails 2.x ready 2.0.1 yes yes ? ? ? yes yes
JRuby 1.1 ready ? yes ? ? ? ? ? ?
Currently supported locales4 7599 languages and 239 countries bs, ca, cs, de, el, en, eo, es, et, fr, hr, it, ja, ko, nb, nl, pt_BR, ru, sv, vi, zh(zh_CN), zh_TW ? ? da, de, en, se, fr, ca_fr, cf, fi, it, ko, nl, no, pt, ru, se, sr (+ swedish chef and pirate talk) ? de, en, nl, fr en, ru, uk
L10n of rails views yes yes ? yes no (not needed) ? yes yes
L10n of rails error messages most yes no most yes ? yes yes
L10n of rails models and attributes ? yes ? no, maybe soon partly7 ? yes yes
L10n of date formats yes yes13 yes yes yes ? yes yes
L10n of numbers yes yes13 yes no yes ? yes yes
L10n of rails helpers2 yes (except for to_sentence, Time#to_formatted_s, Date#to_formatted_s, date_select) yes3 no yes (except for countries, time-zones, to_sentence ) yes ? yes yes
Translatable model data yes yes9 ? no no ? no no
Support for multi-lingual content in same view yes yes ? yes no ? yes yes
Extract strings automaticaly no1 yes yes no no (not needed) ? no no
Stored messages in DB file (.po) file(.rb) file(.yml) file(.rb) ? file(.yml) files(.yml)
Support tools to maintain rake for db setup/cleanup yes(as rake task, and others) [14] ? yes no ? no none
Multi textdomain yes yes ? yes no ? ? yes
Plural/Singular messages yes yes5 yes yes5 yes ? yes yes5
Auto finding the client locale ? yes ? yes no ? no no
Caching in memory yes yes ? yes yes ? yes yes
Page Caching ? no ? ? ? ? ? no
Action Caching ? yes ? ? ? ? ? no
Fragment Caching ? yes ? ? ? ? ? no
Work without DB no yes ? yes yes ? yes yes
Work without Rails no yes ? yes no yes no yes
App still works without plugin/gem no yes6 no no yes yes yes10 no
Localized values can be other formats such as Procs ? no ? yes (1.2 onwards) no ? no yes
Scaffolding ? yes8 ? ? ? ? no no
GetText based no yes no no no yes no no
DB dependency PostgreSQL, MySQL, Sqlite3 and Oracle no no no no ? no no
Haml l10n ? yes11 ? ? ? ? no ?
ActiveScaffold l10n ? yes12 ? ? ? ? ? ?
Documentation good (wiki) excellent! (Tutorials, complete Rdocs) scarce good (complete Rdocs) good good (complete Rdocs) good (detailed documentation, complete RDocs) evolving (wiki)
License MIT Ruby’s ? MIT MIT GPL MIT MIT

1 Stores untranslated text to database dynamically.

2 select_date(), distance_of_time_in_words(), Date.to_formatted_s, Time.to_formatted_s, Number.to_currency , etc.

3 distance_of_time_in_words() only

4 Have the locale data in the package(plugin/library).

5 Pluralization rules definable by translator so langs with complicated pluralization rules like Russian work too

6 To make your app work without Ruby-GetText-Package:
See: http://www.yotabanana.com/hiki/ruby-gettext-howto-rails.html#Make+Ruby-GetText+as+an+option+of+your+app

7 Localization/translation of models provided via Rails’ standard Inflector mechanism

8 With GettextScaffold plugin
http://rubyforge.org/projects/gettextscaffold

fn9.

$ ruby script/plugin install svn://rubyforge.org/var/svn/gettextscaffold/gettext_scaffold

$ rake script/generate gettext_scaffold foo

9 With “Act as Translatable plugin”
http://blog.wireless.org.ua/articles/2006/10/30/acts-as-translatable-ruby-on-rails-plugin

10 Some extended features can not be used to not break the application without the plugin.

11 Haml Parsing for Ruby-GetText
http://blog.teamschnitzel.com/2007/05/14/haml-parsing-for-ruby-gettext/

12 ActiveScaffold Localization
http://wiki.activescaffold.com/wiki/published/Integrating+Ruby-GetText

13 Gettext Localize Plugin
http://gettextlocalize.rubyforge.org/

14 Utitlities for GetText families to maintain translation files.

http://www.gnu.org/software/gettext/manual/gettext.html

References

Blogs