Crate icu::locid_transform
source · [−]Expand description
Canonicalization of locale identifiers based on CLDR
data.
This module is published as its own crate (icu_locid_transform
)
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
.
Examples
use icu::locid::Locale;
use icu::locid_transform::{LocaleCanonicalizer, TransformResult};
let lc = LocaleCanonicalizer::try_new_unstable(&icu_testdata::unstable())
.expect("create failed");
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::try_new_unstable(&icu_testdata::unstable())
.expect("create failed");
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::try_new_unstable(&icu_testdata::unstable())
.expect("create failed");
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"));
Modules
Data provider struct definitions for this ICU4X component.
Structs
The LocaleCanonicalizer provides methods to canonicalize Locales and
LanguageIdentifiers based upon CLDR
data.
LocaleExpander supports the minimize
and maximize
likely subtags
algorithms as described in UTS #35: Unicode LDML 3. Likely Subtags
.
Enums
A list of error outcomes for various operations in the icu_timezone
crate.
A list of error outcomes for various operations in the icu_timezone
crate.
Used to track the result of a transformation operation that potentially modifies its argument in place.