19 releases (10 stable)
| 2.1.1 | Oct 28, 2025 |
|---|---|
| 2.0.0 | May 7, 2025 |
| 2.0.0-beta2 | Feb 26, 2025 |
| 2.0.0-beta1 | Nov 23, 2024 |
| 0.1.0 | Oct 15, 2020 |
#231 in Internationalization (i18n)
187,549 downloads per month
Used in 123 crates
(20 directly)
1MB
20K
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 item0 items,2 items,5 items,0.5 itemsetc.
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:
More Information
For more information on development, authorship, contributing etc. please visit ICU4X home page.
Dependencies
~1–2MB
~38K SLoC