Crates.io | icu_plurals |
lib.rs | icu_plurals |
version | 1.5.0 |
source | src |
created_at | 2020-10-15 15:34:13.001103 |
updated_at | 2024-05-28 20:02:44.558482 |
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 | 197,534 |
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
].
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);
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:
PluralRuleType
Plural 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
.