pub struct LocaleCanonicalizer<Expander = LocaleExpander> {
aliases: DataPayload<LocaleAliasesV1>,
expander: Expander,
}Expand description
Implements the algorithm defined in UTS #35: Annex C, LocaleId Canonicalization.
§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().unwrap();
assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified);
assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse().unwrap());Fields§
§aliases: DataPayload<LocaleAliasesV1>Data to support canonicalization.
expander: ExpanderLikely subtags implementation for delegation.
Implementations§
Source§impl LocaleCanonicalizer<LocaleExpander>
impl LocaleCanonicalizer<LocaleExpander>
Sourcepub const fn new_common() -> Self
pub const fn new_common() -> Self
A constructor which creates a LocaleCanonicalizer from compiled data,
using a LocaleExpander for common locales.
✨ Enabled with the compiled_data Cargo feature.
Sourcepub fn try_new_common_unstable<P>(provider: &P) -> Result<Self, DataError>
pub fn try_new_common_unstable<P>(provider: &P) -> Result<Self, DataError>
A version of Self::new_common that uses custom data provided by a DataProvider.
Sourcepub const fn new_extended() -> Self
pub const fn new_extended() -> Self
A constructor which creates a LocaleCanonicalizer from compiled data,
using a LocaleExpander for all locales.
✨ Enabled with the compiled_data Cargo feature.
Sourcepub fn try_new_extended_unstable<P>(provider: &P) -> Result<Self, DataError>
pub fn try_new_extended_unstable<P>(provider: &P) -> Result<Self, DataError>
A version of Self::new_extended that uses custom data provided by a DataProvider.
Source§impl<Expander: AsRef<LocaleExpander>> LocaleCanonicalizer<Expander>
impl<Expander: AsRef<LocaleExpander>> LocaleCanonicalizer<Expander>
Sourcepub const fn new_with_expander(expander: Expander) -> Self
pub const fn new_with_expander(expander: Expander) -> Self
Creates a LocaleCanonicalizer with a custom LocaleExpander and compiled data.
✨ Enabled with the compiled_data Cargo feature.
Sourcepub fn try_new_with_expander_unstable<P>(
provider: &P,
expander: Expander,
) -> Result<Self, DataError>
pub fn try_new_with_expander_unstable<P>( provider: &P, expander: Expander, ) -> Result<Self, DataError>
A version of Self::new_with_expander that uses custom data provided by a DataProvider.
Sourcepub fn canonicalize(&self, locale: &mut Locale) -> TransformResult
pub fn canonicalize(&self, locale: &mut Locale) -> TransformResult
The canonicalize method potentially updates a passed in locale in place depending up the results of running the canonicalization algorithm from http://unicode.org/reports/tr35/#LocaleId_Canonicalization.
Some BCP47 canonicalization data is not part of the CLDR json package. Because
of this, some canonicalizations are not performed, e.g. the canonicalization of
und-u-ca-islamicc to und-u-ca-islamic-civil. This will be fixed in a future
release once the missing data has been added to the CLDR json data. See:
https://github.com/unicode-org/icu4x/issues/746
§Examples
use icu::locale::{Locale, LocaleCanonicalizer, TransformResult};
let lc = LocaleCanonicalizer::new_extended();
let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc".parse().unwrap();
assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified);
assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse().unwrap());