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:
Modules§
- 🚧 [Unstable] Data provider struct definitions for this ICU4X component.
- 🚧 [Experimental] APIs and Data Structures for Plural Rules
Structs§
ULE
type for PluralCategory- A bag of values for different plural cases.
- A full plural operands representation of a number. See CLDR Plural Rules for complete operands description.
- A struct which provides an ability to retrieve an appropriate
Plural Category
for a given number. - A list of options set by the developer to adjust the behavior of the PluralRules.
- The preferences for plural rules.
- A
PluralRules
that also has the ability to retrieve an appropriatePlural Category
for a range.
Enums§
- The plural categories are used to format messages with numeric placeholders, expressed as decimal numbers.
- A type of a plural rule which can be associated with the
PluralRules
struct.