Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Jul 31, 2012
  1. @davidcelis

    Make ActiveSupport::Inflector locale aware and multilingual

    davidcelis authored
    The Inflector is currently not very supportive of internationalized
    websites. If a user wants to singularize and/or pluralize words based on
    any locale other than English, they must define each case in locale
    files. Rather than create large locale files with mappings between
    singular and plural words, why not allow the Inflector to accept a
    locale?
    
    This patch makes ActiveSupport::Inflector locale aware and uses `:en`` unless
    otherwise specified. Users will still be provided a list of English (:en)
    inflections, but they may additionally define inflection rules for other
    locales. Each list is kept separately and permanently. There is no reason to
    limit users to one list of inflections:
    
        ActiveSupport::Inflector.inflections(:es) do |inflect|
          inflect.plural(/$/, 's')
          inflect.plural(/([^aeéiou])$/i, '\1es')
          inflect.plural(/([aeiou]s)$/i, '\1')
          inflect.plural(/z$/i, 'ces')
          inflect.plural(/á([sn])$/i, 'a\1es')
          inflect.plural(/é([sn])$/i, 'e\1es')
          inflect.plural(/í([sn])$/i, 'i\1es')
          inflect.plural(/ó([sn])$/i, 'o\1es')
          inflect.plural(/ú([sn])$/i, 'u\1es')
    
          inflect.singular(/s$/, '')
          inflect.singular(/es$/, '')
    
          inflect.irregular('el', 'los')
        end
    
        'ley'.pluralize(:es)   # => "leyes"
        'ley'.pluralize(:en)   # => "leys"
        'avión'.pluralize(:es) # => "aviones"
        'avión'.pluralize(:en) # => "avións"
    
    A multilingual Inflector should be of use to anybody that is tasked with
    internationalizing their Rails application.
    
    Signed-off-by: David Celis <david@davidcelis.com>
Something went wrong with that request. Please try again.