| Crates.io | icu_plurals |
| lib.rs | icu_plurals |
| version | 2.0.0 |
| created_at | 2020-10-15 15:34:13.001103+00 |
| updated_at | 2025-05-07 20:59:22.205451+00 |
| description | Unicode Plural Rules categorizer for numeric input |
| homepage | https://icu4x.unicode.org |
| repository | https://github.com/unicode-org/icu4x |
| max_upload_size | |
| id | 300039 |
| size | 245,720 |
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 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].
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);
The crate provides the main struct [PluralRules] which handles selection
of the correct [PluralCategory] for a given language and [PluralRuleType].
Every number in every language belongs to a certain [PluralCategory].
For example, the Polish language uses four:
PluralRuleTypePlural rules depend on the use case. This crate supports two types of plural rules:
For more information on development, authorship, contributing etc. please visit ICU4X home page.