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:
Unicode Extensions- marked asu.Transform Extensions- marked ast.Private Use Extensions- marked asx.Other Extensions- marked as anya-zexcept ofu,tandx.
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::locid::extensions::unicode::{Key, Value};
use icu::locid::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));Modules§
- other
 - Other Use Extensions is a list of extensions other than unicode, transform or private.
 - private
 - Private Use Extensions is a list of extensions intended for private use.
 - transform
 - Transform Extensions provide information on content transformations in a given locale.
 - unicode
 - Unicode Extensions provide information about user preferences in a given locale.
 
Structs§
- Extensions
 - A map of extensions associated with a given 
Locale. 
Enums§
- Extension
Type  - Defines the type of extension.