Module: I18n::Backend::Pluralization

### Home Classes Methods

### In Files

- lib/i18n/backend/pluralization.rb

### Methods

- #pluralize
- #pluralizer
- #pluralizers

### Class/Module Index

Quicksearch

- I18n
- I18n::ArgumentError
- I18n::Backend
- I18n::Backend::Base
- I18n::Backend::Cache
- I18n::Backend::Cascade
- I18n::Backend::Chain
- I18n::Backend::Chain::Implementation
- I18n::Backend::Fallbacks
- I18n::Backend::Flatten
- I18n::Backend::Gettext
- I18n::Backend::Gettext::PoData
- I18n::Backend::InterpolationCompiler
- I18n::Backend::InterpolationCompiler::Compiler
- I18n::Backend::KeyValue
- I18n::Backend::KeyValue::Implementation
- I18n::Backend::Memoize
- I18n::Backend::Metadata
- I18n::Backend::Pluralization
- I18n::Backend::Simple
- I18n::Backend::Simple::Implementation
- I18n::Config
- I18n::ExceptionHandler
- I18n::Gettext
- I18n::Gettext::Helpers
- I18n::InvalidLocale
- I18n::InvalidLocaleData
- I18n::InvalidPluralizationData
- I18n::Locale
- I18n::Locale::Fallbacks
- I18n::Locale::Tag
- I18n::Locale::Tag::Parents
- I18n::Locale::Tag::Rfc4646
- I18n::Locale::Tag::Rfc4646::Parser
- I18n::Locale::Tag::Simple
- I18n::MissingInterpolationArgument
- I18n::MissingTranslation
- I18n::MissingTranslation::Base
- I18n::MissingTranslationData
- I18n::ReservedInterpolationKey
- I18n::Tests
- I18n::Tests::Basics
- I18n::Tests::Defaults
- I18n::Tests::Link
- I18n::Tests::Localization
- I18n::Tests::Lookup
- I18n::Tests::Pluralization
- I18n::Tests::Procs
- I18n::UnknownFileType
- GetText
- GetText::PoParser
- Hash
- Kernel

No matching classes.

# I18n::Backend::Pluralization

### Public Instance Methods

pluralize(locale, entry, count) click to toggle source

Overwrites the Base backend translate method so that it will check the translation meta data space (:i18n) for a locale specific pluralization rule and use it to pluralize the given entry. I.e. the library expects pluralization rules to be stored at I18n.t(:'i18n.plural.rule')

Pluralization rules are expected to respond to call(count) and return a pluralization key. Valid keys depend on the translation data hash (entry) but it is generally recommended to follow CLDR's style, i.e., return one of the keys :zero, :one, :few, :many, :other.

The :zero key is always picked directly when count equals 0 AND the translation data has the key :zero. This way translators are free to either pick a special :zero translation even for languages where the pluralizer does not return a :zero key.

    # File lib/i18n/backend/pluralization.rb, line 29
    def pluralize(locale, entry, count)
      return entry unless entry.is_a?(Hash) and count

      pluralizer = pluralizer(locale)
      if pluralizer.respond_to?(:call)
        key = count == 0 && entry.has_key?(:zero) ? :zero : pluralizer.call(count)
        raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key)
        entry[key]
      else
        super
      end
    end

### Protected Instance Methods

pluralizer(locale) click to toggle source

    # File lib/i18n/backend/pluralization.rb, line 48
    def pluralizer(locale)
      pluralizers[locale] ||= I18n.t(:'i18n.plural.rule', :locale => locale, :resolve => false)
    end

pluralizers() click to toggle source

    # File lib/i18n/backend/pluralization.rb, line 44
    def pluralizers
      @pluralizers ||= {}
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.