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]
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 LanguageIdentifier
[src]impl AsMut<LanguageIdentifier> for Locale
[src]
impl AsMut<LanguageIdentifier> for Locale
[src]fn as_mut(&mut self) -> &mut LanguageIdentifier
[src]
impl AsRef<LanguageIdentifier> for LanguageIdentifier
[src]
impl AsRef<LanguageIdentifier> for LanguageIdentifier
[src]impl AsRef<LanguageIdentifier> for Locale
[src]
impl AsRef<LanguageIdentifier> for Locale
[src]fn as_ref(&self) -> &LanguageIdentifier
[src]
impl Clone for LanguageIdentifier
[src]
impl Clone for LanguageIdentifier
[src]fn clone(&self) -> LanguageIdentifier
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Default for LanguageIdentifier
[src]
impl Default for LanguageIdentifier
[src]fn default() -> LanguageIdentifier
[src]
impl Eq for LanguageIdentifier
[src]
impl Eq for LanguageIdentifier
[src]impl From<LanguageIdentifier> for Locale
[src]
impl From<LanguageIdentifier> for Locale
[src]fn from(id: LanguageIdentifier) -> Self
[src]
impl FromStr for LanguageIdentifier
[src]
impl FromStr for LanguageIdentifier
[src]impl Hash for LanguageIdentifier
[src]
impl Hash for LanguageIdentifier
[src]impl Ord for LanguageIdentifier
[src]
impl Ord for LanguageIdentifier
[src]impl PartialEq<&'_ str> for LanguageIdentifier
[src]
impl PartialEq<&'_ str> for LanguageIdentifier
[src]impl PartialEq<LanguageIdentifier> for LanguageIdentifier
[src]
impl PartialEq<LanguageIdentifier> for LanguageIdentifier
[src]fn eq(&self, other: &LanguageIdentifier) -> bool
[src]
fn ne(&self, other: &LanguageIdentifier) -> bool
[src]
impl PartialEq<str> for LanguageIdentifier
[src]
impl PartialEq<str> for LanguageIdentifier
[src]impl PartialOrd<LanguageIdentifier> for LanguageIdentifier
[src]
impl PartialOrd<LanguageIdentifier> for LanguageIdentifier
[src]fn partial_cmp(&self, other: &LanguageIdentifier) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl StructuralEq for LanguageIdentifier
[src]
impl StructuralEq for LanguageIdentifier
[src]impl Writeable for LanguageIdentifier
[src]
impl Writeable for LanguageIdentifier
[src]Auto Trait Implementations
impl RefUnwindSafe for LanguageIdentifier
impl RefUnwindSafe for LanguageIdentifier
impl Send for LanguageIdentifier
impl Send for LanguageIdentifier
impl Sync for LanguageIdentifier
impl Sync for LanguageIdentifier
impl Unpin for LanguageIdentifier
impl Unpin for LanguageIdentifier
impl UnwindSafe for LanguageIdentifier
impl UnwindSafe for LanguageIdentifier