Skip to main content

Crate icu_locale

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_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::{LocaleExpander, TransformResult, locale};

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::{LocaleExpander, TransformResult, locale};
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
Locale fallback algorithm re-exports.
names
Types representing the name of a language, script, region, or variant.
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§

data_locale
A macro allowing for compile-time construction of valid DataLocales.
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.