13 releases (6 stable)
1.4.0 | Nov 16, 2023 |
---|---|
1.3.0 | Sep 23, 2023 |
1.2.0 | Apr 14, 2023 |
1.1.0 | Jan 26, 2023 |
0.1.0 | Oct 15, 2020 |
#279 in Internationalization (i18n)
21,642 downloads per month
Used in 36 crates
(13 directly)
1.5MB
22K
SLoC
icu_plurals
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::locid::locale;
use icu::plurals::{PluralCategory, PluralRuleType, PluralRules};
let pr =
PluralRules::try_new(&locale!("en").into(), PluralRuleType::Cardinal)
.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:
More Information
For more information on development, authorship, contributing etc. please visit ICU4X home page
.
Dependencies
~0.9–1.5MB
~31K SLoC