Cldr v0.8.3 Cldr.Number.Ordinal View Source
Implements ordinal plural rules for numbers.
Link to this section Summary
Functions
The configured locales for which plural rules are defined
The locales for which cardinal rules are defined
Lookup the plural cardinal category for a given number in a given locale
The plural rules defined in CLDR
Return the plural rules for a locale
Pluralize a number using plural rules and a substition map
Link to this section Types
Link to this section Functions
The configured locales for which plural rules are defined
This is the intersection of the Cldr.known_locales and the locales for which 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.
The locales for which cardinal rules are defined
Lookup the plural cardinal category for a given number in a given locale
Identify which category (zero, one, two, few, many or other) a given number in a given locale fits into. This category can then be used to format the number or currency
The plural rules defined in CLDR.
plural_rules_for(Locale.name()) :: Map.t()
Return the plural rules for a locale.
The rules are returned in AST form after parsing. This function
is primarilty to support Cldr.Gettext
.
pluralize(Cldr.Math.number_or_decimal(), Cldr.LanguageTag.t(), Map.t()) :: String.t() | nil
Pluralize a number using plural rules and a substition map.
number
is an integer, float or Decimallocale
is a%LanguageTag.t
substitutions
is a map that maps plural keys to a string. Per the CLDR defintion of plural rules, the valid substitution keys are:zero
,:one
,:two
,:few
,:many
and:other
.
See also Cldr.Ordinal.plural_rule/3
and Cldr.Cardinal.plural_rule/3
.
Examples
iex> Cldr.Number.Ordinal.pluralize 1, Locale.new("en"), %{one: "one"}
"one"
iex> Cldr.Number.Ordinal.pluralize 2, Locale.new("en"), %{one: "one"}
nil
iex> Cldr.Number.Ordinal.pluralize 2, Locale.new("en"), %{one: "one", two: "two"}
"two"
iex> Cldr.Number.Ordinal.pluralize 22, Locale.new("en"), %{one: "one", two: "two", other: "other"}
"other"
iex> Cldr.Number.Ordinal.pluralize Decimal.new(1), Locale.new("en"), %{one: "one"}
"one"
iex> Cldr.Number.Ordinal.pluralize Decimal.new(2), Locale.new("en"), %{one: "one"}
nil
iex> Cldr.Number.Ordinal.pluralize Decimal.new(2), Locale.new("en"), %{one: "one", two: "two"}
"two"