Enum icu_plurals::PluralCategory
source · pub enum PluralCategory {
Zero,
One,
Two,
Few,
Many,
Other,
}
Expand description
The plural categories are used to format messages with numeric placeholders, expressed as decimal numbers.
The fundamental rule for determining plural categories is the existence of minimal pairs: whenever two different numbers may require different versions of the same message, then the numbers have different plural categories.
All languages supported by ICU4X
can match any number to one of the categories.
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);
Variants§
Zero
CLDR “zero” plural category. Used in Arabic and Latvian, among others.
Examples of numbers having this category:
- 0 in Arabic (ar), Latvian (lv)
- 10~20, 30, 40, 50, … in Latvian (lv)
One
CLDR “one” plural category. Signifies the singular form in many languages.
Examples of numbers having this category:
- 0 in French (fr), Portuguese (pt), …
- 1 in English (en) and most other languages
- 2.1 in Filipino (fil), Croatian (hr), Latvian (lv), Serbian (sr)
- 2, 3, 5, 7, 8, … in Filipino (fil)
Two
CLDR “two” plural category. Used in Arabic, Hebrew, and Slovenian, among others.
Examples of numbers having this category:
- 2 in Arabic (ar), Hebrew (iw), Slovenian (sl)
- 2.0 in Arabic (ar)
Few
CLDR “few” plural category. Used in Romanian, Polish, Russian, and others.
Examples of numbers having this category:
- 0 in Romanian (ro)
- 1.2 in Croatian (hr), Romanian (ro), Slovenian (sl), Serbian (sr)
- 2 in Polish (pl), Russian (ru), Czech (cs), …
- 5 in Arabic (ar), Lithuanian (lt), Romanian (ro)
Many
CLDR “many” plural category. Used in Polish, Russian, Ukrainian, and others.
Examples of numbers having this category:
- 0 in Polish (pl)
- 1.0 in Czech (cs), Slovak (sk)
- 1.1 in Czech (cs), Lithuanian (lt), Slovak (sk)
- 15 in Arabic (ar), Polish (pl), Russian (ru), Ukrainian (uk)
Other
CLDR “other” plural category, used as a catch-all. Each language supports it, and it is also used as a fail safe result for in case no better match can be identified.
In some languages, such as Japanese, Chinese, Korean, and Thai, this is the only plural category.
Examples of numbers having this category:
- 0 in English (en), German (de), Spanish (es), …
- 1 in Japanese (ja), Korean (ko), Chinese (zh), Thai (th), …
- 2 in English (en), German (de), Spanish (es), …
Implementations§
source§impl PluralCategory
impl PluralCategory
sourcepub fn all() -> impl ExactSizeIterator<Item = Self>
pub fn all() -> impl ExactSizeIterator<Item = Self>
Returns an ordered iterator over variants of Plural Categories
.
Categories are returned in alphabetical order.
Examples
use icu::plurals::PluralCategory;
let mut categories = PluralCategory::all();
assert_eq!(categories.next(), Some(PluralCategory::Few));
assert_eq!(categories.next(), Some(PluralCategory::Many));
assert_eq!(categories.next(), Some(PluralCategory::One));
assert_eq!(categories.next(), Some(PluralCategory::Other));
assert_eq!(categories.next(), Some(PluralCategory::Two));
assert_eq!(categories.next(), Some(PluralCategory::Zero));
assert_eq!(categories.next(), None);
sourcepub fn get_for_cldr_string(category: &str) -> Option<PluralCategory>
pub fn get_for_cldr_string(category: &str) -> Option<PluralCategory>
Returns the PluralCategory corresponding to given TR35 string.
sourcepub fn get_for_cldr_bytes(category: &[u8]) -> Option<PluralCategory>
pub fn get_for_cldr_bytes(category: &[u8]) -> Option<PluralCategory>
Returns the PluralCategory corresponding to given TR35 string as bytes
Trait Implementations§
source§impl Clone for PluralCategory
impl Clone for PluralCategory
source§fn clone(&self) -> PluralCategory
fn clone(&self) -> PluralCategory
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for PluralCategory
impl Debug for PluralCategory
source§impl<'de> Deserialize<'de> for PluralCategory
impl<'de> Deserialize<'de> for PluralCategory
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl Hash for PluralCategory
impl Hash for PluralCategory
source§impl Ord for PluralCategory
impl Ord for PluralCategory
source§fn cmp(&self, other: &PluralCategory) -> Ordering
fn cmp(&self, other: &PluralCategory) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq for PluralCategory
impl PartialEq for PluralCategory
source§fn eq(&self, other: &PluralCategory) -> bool
fn eq(&self, other: &PluralCategory) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for PluralCategory
impl PartialOrd for PluralCategory
source§fn partial_cmp(&self, other: &PluralCategory) -> Option<Ordering>
fn partial_cmp(&self, other: &PluralCategory) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more