icu_plurals
is one of the ICU4X
components.
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
.
```rust use iculocidmacros::langid; use icu_plurals::{PluralRules, PluralRuleType, PluralCategory};
let lid = langid!("en");
let provider = icutestdata::getprovider();
let pr = PluralRules::try_new(lid, &provider, PluralRuleType::Cardinal) .expect("Failed to construct a PluralRules struct.");
asserteq!(pr.select(5usize), 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:
One
: 1 miesiąc
Few
: 2 miesiące
Many
: 5 miesięcy
Other
: 1.5 miesiąca
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
For more information on development, authorship, contributing etc. please visit ICU4X home page
.