[−][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:
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 |
|
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 |
PluralRulesError | A list of possible error outcomes for the |