Cldr Territories v2.0.1 TestBackend.Cldr.Number.Ordinal View Source

Implements ordinal plural rules for numbers.

Link to this section 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 ordinal plural rules and a substition map

Link to this section Functions

Link to this function available_locale_names() View Source

The locale names for which plural rules are defined.

Link to this function known_locale_names() View Source
known_locale_names() :: [Cldr.Locale.locale_name(), ...]

The configured locales for which plural rules are defined.

Returns the intersection of TestBackend.Cldr.known_locale_names/0 and the locales for which Ordinal 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.

Link to this function plural_rule(number, locale, rounding \\ Math.default_rounding()) View Source

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

Examples

iex> TestBackend.Cldr.Number.Ordinal.plural_rule 0, "fr"
:other

iex> TestBackend.Cldr.Number.Ordinal.plural_rule 1, "en"
:one
Link to this function plural_rules() View Source
plural_rules() :: map()

Returns all the plural rules defined in CLDR.

Link to this function plural_rules_for(locale_name) View Source
plural_rules_for(Cldr.Locale.locale_name() | Cldr.LanguageTag.t()) :: [
  {atom(), list()},
  ...
]

Return the plural rules for a locale.

Arguments

The rules are returned in AST form after parsing.

Link to this function pluralize(number, locale_name, substitutions) View Source
pluralize(
  Cldr.Math.number_or_decimal() | %Range{first: term(), last: term()},
  Cldr.LanguageTag.t() | Cldr.Locale.locale_name(),
  %{}
) :: any()

Pluralize a number using ordinal plural rules and a substition map.

Arguments

  • number is an integer, float or Decimal or a Range.t{}. When a range, The is that in any usage, the start value is strictly less than the end value, and that no values are negative. Results for any cases that do not meet these criteria are undefined.

  • locale is any locale returned by TestBackend.Cldr.Locale.new!/1 or any locale_name returned by TestBackend.Cldr.known_locale_names/0

  • substitutions is a map that maps plural keys to a string. The valid substitution keys are :zero, :one, :two, :few, :many and :other.

See also TestBackend.Cldr.Number.Ordinal.Ordinal.plural_rule/3.

Examples

iex> TestBackend.Cldr.Number.Ordinal.pluralize 1, "en", %{one: "one"}
"one"

iex> TestBackend.Cldr.Number.Ordinal.pluralize 2, "en", %{one: "one"}
nil

iex> TestBackend.Cldr.Number.Ordinal.pluralize 2, "en", %{one: "one", two: "two"}
"two"

iex> TestBackend.Cldr.Number.Ordinal.pluralize 22, "en", %{one: "one", two: "two", other: "other"}
"two"

iex> TestBackend.Cldr.Number.Ordinal.pluralize Decimal.new(1), "en", %{one: "one"}
"one"

iex> TestBackend.Cldr.Number.Ordinal.pluralize Decimal.new(2), "en", %{one: "one"}
nil

iex> TestBackend.Cldr.Number.Ordinal.pluralize Decimal.new(2), "en", %{one: "one", two: "two"}
"two"

iex> TestBackend.Cldr.Number.Ordinal.pluralize 1..10, "ar", %{one: "one", few: "few", other: "other"}
"other"

iex> TestBackend.Cldr.Number.Ordinal.pluralize 1..10, "en", %{one: "one", few: "few", other: "other"}
"other"