Determine the plural category appropriate for a given number in a given language.
This module is published as its own crate (icu_plural)
and as part of the icu crate. See the latter for more details on the ICU4X project.
For example in English language, when constructing a message
such as { num } items, the user has to prepare
two variants of the message:
1 item0 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].
```rust use icu::locid::locale; use icu::plurals::{PluralCategory, PluralRuleType, PluralRules};
let provider = icutestdata::getprovider();
let pr = PluralRules::trynewwithbufferprovider(&provider, &locale!("en").into(), PluralRuleType::Cardinal) .expect("Failed to construct a PluralRules struct.");
asserteq!(pr.categoryfor(5_usize), PluralCategory::Other); ```
The crate provides the main struct [PluralRules] which handles selection
of the correct [Plural Category] for a given language and [Plural Type].
Every number in every language belongs to a certain [Plural Category].
For example, Polish language uses four:
Plural rules depend on the use case. This crate supports two types of plural rules:
For more information on development, authorship, contributing etc. please visit ICU4X home page.