Struct icu_locid::LanguageIdentifier[][src]

pub struct LanguageIdentifier {
    pub language: Language,
    pub script: Option<Script>,
    pub region: Option<Region>,
    pub variants: Variants,
}

A core struct representing a Unicode BCP47 Language Identifier.

Examples

use icu::locid::LanguageIdentifier;

let li: LanguageIdentifier = "en-US".parse()
    .expect("Failed to parse.");

assert_eq!(li.language, "en");
assert_eq!(li.script, None);
assert_eq!(li.region.unwrap(), "US");
assert_eq!(li.variants.len(), 0);
assert_eq!(li, "en-US");

Parsing

Unicode recognizes three levels of standard conformance for any language identifier:

  • well-formed - syntactically correct
  • valid - well-formed and only uses registered language, region, script and variant subtags…
  • canonical - valid and no deprecated codes or structure.

At the moment parsing normalizes a well-formed language identifier converting _ separators to - and adjusting casing to conform to the Unicode standard.

Any bogus subtags will cause the parsing to fail with an error. No subtag validation is performed.

Examples

use icu::locid::LanguageIdentifier;

let li: LanguageIdentifier = "eN_latn_Us-Valencia".parse()
    .expect("Failed to parse.");

assert_eq!(li.language, "en");
assert_eq!(li.script.unwrap(), "Latn");
assert_eq!(li.region.unwrap(), "US");
assert_eq!(li.variants.get(0).unwrap(), "valencia");

Fields

language: Language

Language subtag of the language identifier.

script: Option<Script>

Script subtag of the language identifier.

region: Option<Region>

Region subtag of the language identifier.

variants: Variants

Variant subtags of the language identifier.

Implementations

impl LanguageIdentifier[src]

pub fn from_bytes(v: &[u8]) -> Result<Self, ParserError>[src]

A constructor which takes a utf8 slice, parses it and produces a well-formed LanguageIdentifier.

Examples

use icu::locid::LanguageIdentifier;

let li = LanguageIdentifier::from_bytes(b"en-US")
    .expect("Parsing failed.");

assert_eq!(li.to_string(), "en-US");

pub fn from_locale_bytes(v: &[u8]) -> Result<Self, ParserError>[src]

A constructor which takes a utf8 slice which may contain extension keys, parses it and produces a well-formed LanguageIdentifier.

Examples

use icu::locid::LanguageIdentifier;

let li = LanguageIdentifier::from_locale_bytes(b"en-US-x-posix")
    .expect("Parsing failed.");

assert_eq!(li.to_string(), "en-US");

This method should be used for input that may be a locale identifier. All extensions will be lost.

pub const fn und() -> Self[src]

Returns the default undefined language “und”. Same as default(), but is const.

Examples

use icu::locid::LanguageIdentifier;

const langid: LanguageIdentifier = LanguageIdentifier::und();
assert_eq!(LanguageIdentifier::default(), langid);
assert_eq!("und", langid.to_string());

pub fn canonicalize<S: AsRef<[u8]>>(input: S) -> Result<String, ParserError>[src]

This is a best-effort operation that performs all available levels of canonicalization.

At the moment the operation will normalize casing and the separator, but in the future it may also validate and update from deprecated subtags to canonical ones.

Examples

use icu::locid::LanguageIdentifier;

assert_eq!(LanguageIdentifier::canonicalize("pL_latn_pl"), Ok("pl-Latn-PL".to_string()));

Trait Implementations

impl AsMut<LanguageIdentifier> for LanguageIdentifier[src]

impl AsMut<LanguageIdentifier> for Locale[src]

impl AsRef<LanguageIdentifier> for LanguageIdentifier[src]

impl AsRef<LanguageIdentifier> for Locale[src]

impl Clone for LanguageIdentifier[src]

impl Debug for LanguageIdentifier[src]

impl Default for LanguageIdentifier[src]

impl Display for LanguageIdentifier[src]

impl Eq for LanguageIdentifier[src]

impl From<LanguageIdentifier> for Locale[src]

impl From<Locale> for LanguageIdentifier[src]

impl FromStr for LanguageIdentifier[src]

type Err = ParserError

The associated error which can be returned from parsing.

impl Hash for LanguageIdentifier[src]

impl Ord for LanguageIdentifier[src]

impl PartialEq<&'_ str> for LanguageIdentifier[src]

impl PartialEq<LanguageIdentifier> for LanguageIdentifier[src]

impl PartialEq<str> for LanguageIdentifier[src]

impl PartialOrd<LanguageIdentifier> for LanguageIdentifier[src]

impl StructuralEq for LanguageIdentifier[src]

impl StructuralPartialEq for LanguageIdentifier[src]

impl Writeable for LanguageIdentifier[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.