Crate icu_plurals

Source
Expand description

Determine the plural category appropriate for a given number in a given language.

This module is published as its own crate (icu_plurals) and as part of the icu crate. See the latter for more details on the ICU4X project.

For example in English, when constructing a message such as { num } items, the user has to prepare two variants of the message:

  • 1 item
  • 0 items, 2 items, 5 items, 0.5 items etc.

The former variant is used when the placeholder variable has value 1, while the latter is used for all other values of the variable.

Unicode defines Language Plural Rules as a mechanism to codify those variants and provides data and algorithms to calculate appropriate PluralCategory.

§Examples

use icu::locale::locale;
use icu::plurals::{PluralCategory, PluralRules};

let pr = PluralRules::try_new(locale!("en").into(), Default::default())
    .expect("locale should be present");

assert_eq!(pr.category_for(5_usize), PluralCategory::Other);

§Plural Rules

The crate provides the main struct PluralRules which handles selection of the correct PluralCategory for a given language and PluralRuleType.

§Plural Category

Every number in every language belongs to a certain PluralCategory. For example, the Polish language uses four:

§PluralRuleType

Plural rules depend on the use case. This crate supports two types of plural rules:

  • Cardinal: 3 doors, 1 month, 10 dollars
  • Ordinal: 1st place, 10th day, 11th floor

Modules§

provider
🚧 [Unstable] Data provider struct definitions for this ICU4X component.

Structs§

PluralCategoryULE
ULE type for PluralCategory
PluralElements
A bag of values for different plural cases.
PluralOperands
A full plural operands representation of a number. See CLDR Plural Rules for complete operands description.
PluralRules
A struct which provides an ability to retrieve an appropriate Plural Category for a given number.
PluralRulesOptions
A list of options set by the developer to adjust the behavior of the PluralRules.
PluralRulesPreferences
The preferences for plural rules.
PluralRulesWithRanges
A PluralRules that also has the ability to retrieve an appropriate Plural Category for a range.
RawPluralOperands
🚧 [Experimental] A struct for low-level users who want to construct a PluralOperands directly based on the LDML Plural Operand definitions.

Enums§

PluralCategory
The plural categories are used to format messages with numeric placeholders, expressed as decimal numbers.
PluralRuleType
A type of a plural rule which can be associated with the PluralRules struct.