[][src]Module icu::plurals

Plural Rules operations

This API provides functionality to determine the plural category appropriate for a given number in a given language.

For example in English language, 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 Plural Category.

Examples

use icu::locid::macros::langid;
use icu::plurals::{PluralRules, PluralRuleType, PluralCategory};

let lid = langid!("en");

let provider = icu_testdata::get_provider();

let pr = PluralRules::try_new(lid, &provider, PluralRuleType::Cardinal)
    .expect("Failed to construct a PluralRules struct.");

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

Plural Rules

The crate provides the main struct PluralRules which handles selection of the correct Plural Category for a given language and Plural Type.

Plural Category

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

Plural Rule Type

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

Data Provider

In order to function, the API requires data from CLDR.

ICU4X is going to use a special API for handling data management called DataProvider. Until that happens, this crate will provide a simple JSON and bincode providers behind a flag. For tests and documentation examples, there is also a DummyDataProvider.

All of the content of the data module is heavily experimental and subject to change.

Modules

rules

APIs and Data Structures for Plural Rules

Structs

PluralOperands

A full plural operands representation of a number. See CLDR Plural Rules for complete operands description. Plural operands in compliance with CLDR Plural Rules.

PluralRules

PluralRules is a struct which provides an ability to retrieve an appropriate Plural Category for a given number.

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.

PluralRulesError

A list of possible error outcomes for the PluralRules struct.