Crate 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_extended();

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_common();

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_common();

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§

exemplar_chars
This module provides APIs for getting exemplar characters for a locale.
extensions
Unicode Extensions provide a mechanism to extend the LanguageIdentifier with additional bits of information - a combination of a LanguageIdentifier and Extensions is called Locale.
fallback
Tools for locale fallback, enabling arbitrary input locales to be mapped into the nearest locale with data.
preferences
This API provides necessary functionality for building user preferences structs.
provider
🚧 [Unstable] Data provider struct definitions for this ICU4X component.
subtags
Language Identifier and Locale contains a set of subtags which represent different fields of the structure.
zerovec
Documentation on zero-copy deserialization of locale types.

Macros§

langid
A macro allowing for compile-time construction of valid LanguageIdentifiers.
locale
A macro allowing for compile-time construction of valid Locales.

Structs§

DataLocale
A locale type optimized for use in fallbacking and the ICU4X data pipeline.
LanguageIdentifier
A core struct representing a Unicode BCP47 Language Identifier.
Locale
A core struct representing a Unicode Locale Identifier.
LocaleCanonicalizer
Implements the algorithm defined in UTS #35: Annex C, LocaleId Canonicalization.
LocaleDirectionality
Provides methods to determine the direction of a locale.
LocaleExpander
Implements the Add Likely Subtags and Remove Likely Subtags algorithms as defined in UTS #35: Likely Subtags.

Enums§

Direction
Represents the direction of a script.
ParseError
List of parser errors that can be generated while parsing LanguageIdentifier, Locale, subtags or extensions.
TransformResult
Used to track the result of a transformation operation that potentially modifies its argument in place.