Expand description

This API provides functionality to canonicalize locale identifiers based upon CLDR data.

It currently supports the minimize and maximize likely subtags algorithms as described in 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 = "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");

Modules

The collection of code for locale canonicalization.

Data provider struct definitions for this ICU4X component.

Structs

LocaleCanonicalizer implementation.

Enums

Used to track the result of a canonicalization operation that potentially modifies its argument in place.