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_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);
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
sourceimpl PluralCategory
impl PluralCategory
sourcepub fn all() -> impl ExactSizeIterator
pub fn all() -> impl ExactSizeIterator
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
sourceimpl Clone for PluralCategory
impl Clone for PluralCategory
sourcefn clone(&self) -> PluralCategory
fn clone(&self) -> PluralCategory
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for PluralCategory
impl Debug for PluralCategory
sourceimpl<'de> Deserialize<'de> for PluralCategory
impl<'de> Deserialize<'de> for PluralCategory
sourcefn deserialize<__D>(
__deserializer: __D
) -> Result<PluralCategory, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<PluralCategory, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl Hash for PluralCategory
impl Hash for PluralCategory
sourceimpl Ord for PluralCategory
impl Ord for PluralCategory
sourceimpl PartialEq<PluralCategory> for PluralCategory
impl PartialEq<PluralCategory> for PluralCategory
sourceimpl PartialOrd<PluralCategory> for PluralCategory
impl PartialOrd<PluralCategory> for PluralCategory
sourcefn partial_cmp(&self, other: &PluralCategory) -> Option<Ordering>
fn partial_cmp(&self, other: &PluralCategory) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl Serialize for PluralCategory
impl Serialize for PluralCategory
sourcefn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Copy for PluralCategory
impl Eq for PluralCategory
impl StructuralEq for PluralCategory
impl StructuralPartialEq for PluralCategory
Auto Trait Implementations
impl RefUnwindSafe for PluralCategory
impl Send for PluralCategory
impl Sync for PluralCategory
impl Unpin for PluralCategory
impl UnwindSafe for PluralCategory
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Serialize for T where
T: Serialize + ?Sized,
impl<T> Serialize for T where
T: Serialize + ?Sized,
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more