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
].
```rust use iculocidtransform::{TransformResult, LocaleCanonicalizer}; use icu_locid::Locale;
let provider = icutestdata::getprovider(); let lc = LocaleCanonicalizer::trynewwithbufferprovider(&provider).expect("create failed");
let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc" .parse() .expect("parse failed"); asserteq!( lc.canonicalize(&mut locale), TransformResult::Modified ); asserteq!(locale.to_string(), "ja-Latn-alalc97-fonipa"); ```
```rust use iculocidtransform::{TransformResult, LocaleExpander}; use icu_locid::Locale;
let provider = icutestdata::getprovider(); let lc = LocaleExpander::trynewwithbufferprovider(&provider).expect("create failed");
let mut locale: Locale = "zh-CN".parse().expect("parse failed"); asserteq!(lc.maximize(&mut locale), TransformResult::Modified); asserteq!(locale.to_string(), "zh-Hans-CN");
let mut locale: Locale = "zh-Hant-TW".parse().expect("parse failed"); asserteq!(lc.maximize(&mut locale), TransformResult::Unmodified); asserteq!(locale.to_string(), "zh-Hant-TW"); ```
```rust use iculocidtransform::{TransformResult, LocaleExpander}; use icu_locid::Locale;
let provider = icutestdata::getprovider(); let lc = LocaleExpander::trynewwithbufferprovider(&provider).expect("create failed");
let mut locale: Locale = "zh-Hans-CN".parse().expect("parse failed"); asserteq!(lc.minimize(&mut locale), TransformResult::Modified); asserteq!(locale.to_string(), "zh");
let mut locale: Locale = "zh".parse().expect("parse failed"); asserteq!(lc.minimize(&mut locale), TransformResult::Unmodified); asserteq!(locale.to_string(), "zh"); ```
For more information on development, authorship, contributing etc. please visit ICU4X home page
.