Crate icu_locale
source ·Expand description
Canonicalization of locale identifiers based on CLDR
data.
This module is published as its own crate (icu_locale
)
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::locale::Locale;
use icu::locale::{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::locale::{locale, LocaleExpander, TransformResult};
let lc = LocaleExpander::new();
let mut locale = locale!("zh-CN");
assert_eq!(lc.maximize(&mut locale.id), TransformResult::Modified);
assert_eq!(locale, locale!("zh-Hans-CN"));
let mut locale = locale!("zh-Hant-TW");
assert_eq!(lc.maximize(&mut locale.id), TransformResult::Unmodified);
assert_eq!(locale, locale!("zh-Hant-TW"));
use icu::locale::{locale, LocaleExpander, TransformResult};
use writeable::assert_writeable_eq;
let lc = LocaleExpander::new();
let mut locale = locale!("zh-Hans-CN");
assert_eq!(lc.minimize(&mut locale.id), TransformResult::Modified);
assert_eq!(locale, locale!("zh"));
let mut locale = locale!("zh");
assert_eq!(lc.minimize(&mut locale.id), TransformResult::Unmodified);
assert_eq!(locale, locale!("zh"));
Modules§
- This module provides APIs for getting exemplar characters for a locale.
- Unicode Extensions provide a mechanism to extend the
LanguageIdentifier
with additional bits of information - a combination of aLanguageIdentifier
andExtensions
is calledLocale
. - Tools for locale fallback, enabling arbitrary input locales to be mapped into the nearest locale with data.
- This API provides necessary functionality for building user preferences structs.
- 🚧 [Unstable] Data provider struct definitions for this ICU4X component.
- Language Identifier and Locale contains a set of subtags which represent different fields of the structure.
- Documentation on zero-copy deserialization of locale types.
Macros§
- A macro allowing for compile-time construction of valid
LanguageIdentifier
s. - A macro allowing for compile-time construction of valid
Locale
s.
Structs§
- A core struct representing a
Unicode BCP47 Language Identifier
. - A core struct representing a
Unicode Locale Identifier
. - Implements the algorithm defined in UTS #35: Annex C, LocaleId Canonicalization.
- Provides methods to determine the direction of a locale.
- Implements the Add Likely Subtags and Remove Likely Subtags algorithms as defined in UTS #35: Likely Subtags.
- Implements the algorithm defined in UTS #35: Locale Inheritance and Matching.
Enums§
- Represents the direction of a script.
- List of parser errors that can be generated while parsing
LanguageIdentifier
,Locale
,subtags
orextensions
. - Used to track the result of a transformation operation that potentially modifies its argument in place.