5 releases (breaking)
0.6.0 | May 17, 2022 |
---|---|
0.5.0 | Jan 31, 2022 |
0.4.0 | Nov 2, 2021 |
0.3.0 | Aug 2, 2021 |
0.2.0 | Apr 29, 2021 |
#466 in Internationalization (i18n)
71 downloads per month
Used in icu_provider_cldr
1MB
20K
SLoC
icu_locale_canonicalizer
icu_locale_canonicalizer
is one of the ICU4X
components.
This API provides functionality to canonicalize locale identifiers based
upon CLDR
data.
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_locale_canonicalizer::{CanonicalizationResult, LocaleCanonicalizer};
use icu_locid::Locale;
let provider = icu_testdata::get_provider();
let lc = LocaleCanonicalizer::new(&provider)
.expect("create failed");
let mut locale : Locale = "ja-Latn-fonipa-hepburn-heploc".parse()
.expect("parse failed");
assert_eq!(lc.canonicalize(&mut locale), CanonicalizationResult::Modified);
assert_eq!(locale.to_string(), "ja-Latn-alalc97-fonipa");
use icu_locale_canonicalizer::{CanonicalizationResult, LocaleCanonicalizer};
use icu_locid::Locale;
let provider = icu_testdata::get_provider();
let lc = LocaleCanonicalizer::new(&provider)
.expect("create failed");
let mut locale : Locale = "zh-CN".parse()
.expect("parse failed");
assert_eq!(lc.maximize(&mut locale), CanonicalizationResult::Modified);
assert_eq!(locale.to_string(), "zh-Hans-CN");
let mut locale : Locale = "zh-Hant-TW".parse()
.expect("parse failed");
assert_eq!(lc.maximize(&mut locale), CanonicalizationResult::Unmodified);
assert_eq!(locale.to_string(), "zh-Hant-TW");
use icu_locale_canonicalizer::{CanonicalizationResult, LocaleCanonicalizer};
use icu_locid::Locale;
let provider = icu_testdata::get_provider();
let lc = LocaleCanonicalizer::new(&provider)
.expect("create failed");
let mut locale : Locale = "zh-Hans-CN".parse()
.expect("parse failed");
assert_eq!(lc.minimize(&mut locale), CanonicalizationResult::Modified);
assert_eq!(locale.to_string(), "zh");
let mut locale : Locale = "zh".parse()
.expect("parse failed");
assert_eq!(lc.minimize(&mut locale), CanonicalizationResult::Unmodified);
assert_eq!(locale.to_string(), "zh");
More Information
For more information on development, authorship, contributing etc. please visit ICU4X home page
.
Dependencies
~0.7–1.5MB
~30K SLoC