icu_plurals 1.2.0

Unicode Plural Rules categorizer for numeric input
Documentation

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_plural) 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_unstable(
    &icu_testdata::unstable(),
    &locale!("en").into(),
    PluralRuleType::Cardinal,
)
.expect("Failed to construct a PluralRules struct.");

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.