Canonicalization of locale identifiers based on CLDR
data.
This module is published as its own crate (icu_locale
) and as part of the icu
crate. See the latter for more details on the ICU4X project.
It currently supports locale canonicalization based upon the canonicalization algorithm from UTS #35: Unicode LDML 3. LocaleId Canonicalization
, as well as the minimize and maximize likely subtags algorithms as described in UTS #35: Unicode LDML 3. Likely Subtags
.
The maximize method potentially updates a passed in locale in place depending up the results of running the ‘Add Likely Subtags’ algorithm from UTS #35: Unicode LDML 3. Likely Subtags
.
This minimize method returns a new Locale that is the result of running the ‘Remove Likely Subtags’ algorithm from UTS #35: Unicode LDML 3. Likely Subtags
.
use icu::locale::Locale; use icu::locale::{LocaleCanonicalizer, TransformResult}; let lc = LocaleCanonicalizer::new_extended(); let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc" .parse() .expect("parse failed"); assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified); assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse::<Locale>().unwrap());
use icu::locale::{locale, LocaleExpander, TransformResult}; let lc = LocaleExpander::new_common(); let mut locale = locale!("zh-CN"); assert_eq!(lc.maximize(&mut locale.id), TransformResult::Modified); assert_eq!(locale, locale!("zh-Hans-CN")); let mut locale = locale!("zh-Hant-TW"); assert_eq!(lc.maximize(&mut locale.id), TransformResult::Unmodified); assert_eq!(locale, locale!("zh-Hant-TW"));
use icu::locale::{locale, LocaleExpander, TransformResult}; use writeable::assert_writeable_eq; let lc = LocaleExpander::new_common(); let mut locale = locale!("zh-Hans-CN"); assert_eq!(lc.minimize(&mut locale.id), TransformResult::Modified); assert_eq!(locale, locale!("zh")); let mut locale = locale!("zh"); assert_eq!(lc.minimize(&mut locale.id), TransformResult::Unmodified); assert_eq!(locale, locale!("zh"));
For more information on development, authorship, contributing etc. please visit ICU4X home page
.