icu_plurals

Crates.ioicu_plurals
lib.rsicu_plurals
version1.5.0
sourcesrc
created_at2020-10-15 15:34:13.001103
updated_at2024-05-28 20:02:44.558482
descriptionUnicode Plural Rules categorizer for numeric input
homepagehttps://icu4x.unicode.org
repositoryhttps://github.com/unicode-org/icu4x
max_upload_size
id300039
size197,534
icu4x-release (github:unicode-org:icu4x-release)

documentation

README

icu_plurals crates.io

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:

  • Cardinal: 3 doors, 1 month, 10 dollars
  • Ordinal: 1st place, 10th day, 11th floor

More Information

For more information on development, authorship, contributing etc. please visit ICU4X home page.

Commit count: 3247

cargo fmt