Module icu_locale::extensions

Expand description

Unicode Extensions provide a mechanism to extend the LanguageIdentifier with additional bits of information - a combination of a LanguageIdentifier and Extensions is called Locale.

There are four types of extensions:

One can think of extensions as a bag of extra information on top of basic 4 subtags.

Notice: Other extension type is currently not supported.

§Examples

use icu::locale::extensions::unicode::{Key, Value};
use icu::locale::Locale;

let loc: Locale = "en-US-u-ca-buddhist-t-en-us-h0-hybrid-x-foo"
    .parse()
    .expect("Failed to parse.");

assert_eq!(loc.id.language, "en".parse().unwrap());
assert_eq!(loc.id.script, None);
assert_eq!(loc.id.region, Some("US".parse().unwrap()));
assert_eq!(loc.id.variants.len(), 0);

let key: Key = "ca".parse().expect("Parsing key failed.");
let value: Value = "buddhist".parse().expect("Parsing value failed.");
assert_eq!(loc.extensions.unicode.keywords.get(&key), Some(&value));

§Syntactic vs Semantic Extension Handling

This module is useful when you need to work with Locale extensions at a syntactic level, perhaps for parsing or generating locale identifiers that include any syntactically valid extensions. For handling and validating known CLDR values with semantic meaning, see the crate::preferences::extensions module.

Modules§

  • Other Use Extensions is a list of extensions other than unicode, transform or private.
  • Private Use Extensions is a list of extensions intended for private use.
  • Transform Extensions provide information on content transformations in a given locale.
  • Unicode Extensions provide information about user preferences in a given locale.

Structs§

Enums§