View Source MyApp.Cldr.Number.Cardinal (Cldr v2.40.1)
Implements cardinal plural rules for numbers.
Summary
Functions
The locale names for which plural rules are defined.
The configured locales for which plural rules are defined.
Return the plural key for a given number in a given locale
Returns all the plural rules defined in CLDR.
Return the plural rules for a locale.
Pluralize a number using cardinal plural rules and a substitution map.
Functions
The locale names for which plural rules are defined.
@spec known_locale_names() :: [Cldr.Locale.locale_name(), ...]
The configured locales for which plural rules are defined.
Returns the intersection of MyApp.Cldr.known_locale_names/0 and
the locales for which Cardinal plural rules are defined.
There are many Cldr locales which don't have their own plural
rules so this list is the intersection of Cldr's configured
locales and those that have rules.
@spec plural_rule( Cldr.Math.number_or_decimal(), Cldr.Locale.locale_name() | Cldr.LanguageTag.t(), atom() | pos_integer() ) :: Cldr.Number.PluralRule.plural_type() | {:error, {module(), String.t()}}
Return the plural key for a given number in a given locale
Returns which plural key (:zero, :one, :two, :few,
:many or :other) a given number fits into within the
context of a given locale.
Note that these key names should not be interpreted
literally.  For example, the key returned from
Cldr.Number.Ordinal.plural_rule(0, "en") is actually
:other, not :zero.
This key can then be used to format a number, date, time, unit, list or other content in a plural-sensitive way.
Arguments
- numberis any- integer,- floator- Decimal
- localeis any locale returned by- Cldr.Locale.new!/2or any- locale_namereturned by- MyApp.Cldr.known_locale_names/0
- roundingis one of- [:down, :up, :ceiling, :floor, :half_even, :half_up, :half_down]. The default is- :half_even.
Examples
iex> MyApp.Cldr.Number.Cardinal.plural_rule 0, "fr"
:one
iex> MyApp.Cldr.Number.Cardinal.plural_rule 0, "en"
:other@spec plural_rules() :: %{ required(Cldr.Locale.locale_name()) => [ {plural_type :: Cldr.Number.PluralRule.plural_type(), plural_rules :: [Cldr.Number.PluralRule.plural_rule(), ...]}, ... ] }
Returns all the plural rules defined in CLDR.
@spec plural_rules_for(Cldr.Locale.locale_name() | Cldr.LanguageTag.t()) :: [ {atom(), list()}, ... ]
Return the plural rules for a locale.
Arguments
- localeis any locale returned by- MyApp.Cldr.Locale.new!/1or any- locale_namereturned by- MyApp.Cldr.known_locale_names/0
The rules are returned in AST form after parsing.
@spec pluralize( Cldr.Math.number_or_decimal() | Range.t(), Cldr.Locale.locale_reference(), %{} ) :: any()
Pluralize a number using cardinal plural rules and a substitution map.
Arguments
- numberis an integer, float or Decimal
- localeis any locale returned by- MyApp.Cldr.Locale.new!/1or any- locale_namereturned by- MyApp.Cldr.known_locale_names/0
- substitutionsis a map that maps plural keys to a string. The valid substitution keys are- :zero,- :one,- :two,- :few,- :manyand- :other.
See also MyApp.Cldr.Number.Cardinal.Cardinal.plural_rule/3.
Examples
iex> MyApp.Cldr.Number.Cardinal.pluralize 1, "en", %{one: "one"}
"one"
iex> MyApp.Cldr.Number.Cardinal.pluralize 2, "en", %{one: "one"}
nil
iex> MyApp.Cldr.Number.Cardinal.pluralize 2, "en", %{one: "one", two: "two", other: "other"}
"other"
iex> MyApp.Cldr.Number.Cardinal.pluralize 22, "en", %{one: "one", two: "two", other: "other"}
"other"
iex> MyApp.Cldr.Number.Cardinal.pluralize Decimal.new(1), "en", %{one: "one"}
"one"
iex> MyApp.Cldr.Number.Cardinal.pluralize Decimal.new(2), "en", %{one: "one"}
nil
iex> MyApp.Cldr.Number.Cardinal.pluralize Decimal.new(2), "en", %{one: "one", two: "two"}
nil
iex> MyApp.Cldr.Number.Cardinal.pluralize 1..10, "ar", %{one: "one", few: "few", other: "other"}
"few"
iex> MyApp.Cldr.Number.Cardinal.pluralize 1..10, "en", %{one: "one", few: "few", other: "other"}
"other"