Find
C
ase-sensitive
R
egexp search
Path
comm-central
/
third_party
/
rust
/
icu_locid_transform
/
src
Navigation
Enable keyboard shortcuts
Name
Description
Size
canonicalizer.rs
The collection of code for locale canonicalization.
27643
directionality.rs
8522
error.rs
809
expander.rs
28870
fallback
lib.rs
Canonicalization of locale identifiers based on [`CLDR`] data. This module is published as its own crate ([`icu_locid_transform`](https://docs.rs/icu_locid_transform/latest/icu_locid_transform/)) and as part of the [`icu`](https://docs.rs/icu/latest/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`]. # Examples ``` use icu::locid::Locale; use icu::locid_transform::{LocaleCanonicalizer, TransformResult}; let lc = LocaleCanonicalizer::new(); 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::locid::locale; use icu::locid_transform::{LocaleExpander, TransformResult}; let lc = LocaleExpander::new(); let mut locale = locale!("zh-CN"); assert_eq!(lc.maximize(&mut locale), TransformResult::Modified); assert_eq!(locale, locale!("zh-Hans-CN")); let mut locale = locale!("zh-Hant-TW"); assert_eq!(lc.maximize(&mut locale), TransformResult::Unmodified); assert_eq!(locale, locale!("zh-Hant-TW")); ``` ``` use icu::locid::locale; use icu::locid_transform::{LocaleExpander, TransformResult}; use writeable::assert_writeable_eq; let lc = LocaleExpander::new(); let mut locale = locale!("zh-Hans-CN"); assert_eq!(lc.minimize(&mut locale), TransformResult::Modified); assert_eq!(locale, locale!("zh")); let mut locale = locale!("zh"); assert_eq!(lc.minimize(&mut locale), TransformResult::Unmodified); assert_eq!(locale, locale!("zh")); ``` [`ICU4X`]: ../icu/index.html [`CLDR`]: http://cldr.unicode.org/ [`UTS #35: Unicode LDML 3. Likely Subtags`]: https://www.unicode.org/reports/tr35/#Likely_Subtags. [`UTS #35: Unicode LDML 3. LocaleId Canonicalization`]: http://unicode.org/reports/tr35/#LocaleId_Canonicalization,
4167
provider