Struct icu_locale_canonicalizer::locale_canonicalizer::LocaleCanonicalizer [−][src]
pub struct LocaleCanonicalizer<'data> { /* fields omitted */ }
Implementations
pub fn new<P: ?Sized>(
provider: &P
) -> Result<LocaleCanonicalizer<'data>, DataError> where
P: DataProvider<'data, AliasesV1Marker> + DataProvider<'data, LikelySubtagsV1Marker> + ?Sized,
pub fn new<P: ?Sized>(
provider: &P
) -> Result<LocaleCanonicalizer<'data>, DataError> where
P: DataProvider<'data, AliasesV1Marker> + DataProvider<'data, LikelySubtagsV1Marker> + ?Sized,
A constructor which takes a DataProvider
and creates a LocaleCanonicalizer
.
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.
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 = "ja-Latn-fonipa-hepburn-heploc".parse() .expect("parse failed"); assert_eq!(lc.canonicalize(&mut locale), CanonicalizationResult::Modified); assert_eq!(locale.to_string(), "ja-Latn-alalc97-fonipa");
The maximize method potentially updates a passed in locale in place depending up the results of running the ‘Add Likely Subtags’ algorithm from https://www.unicode.org/reports/tr35/#Likely_Subtags.
If the result of running the algorithm would result in a new locale, the
locale argument is updated in place to match the result, and the method
returns CanonicalizationResult::Modified
. Otherwise, the method
returns CanonicalizationResult::Unmodified
and the locale argument is
unchanged.
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");
This returns a new Locale that is the result of running the ‘Remove Likely Subtags’ algorithm from https://www.unicode.org/reports/tr35/#Likely_Subtags.
If the result of running the algorithm would result in a new locale, the
locale argument is updated in place to match the result, and the method
returns CanonicalizationResult::Modified
. Otherwise, the method
returns CanonicalizationResult::Unmodified
and the locale argument is
unchanged.
Examples
use icu_locale_canonicalizer::{CanonicalizationResult, LocaleCanonicalizer}; use icu_locid::Locale; let provider = icu_testdata::get_provider(); let lc = LocaleCanonicalizer::new(&provider) .expect("creation 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");
Auto Trait Implementations
impl<'data> !RefUnwindSafe for LocaleCanonicalizer<'data>
impl<'data> !Send for LocaleCanonicalizer<'data>
impl<'data> !Sync for LocaleCanonicalizer<'data>
impl<'data> Unpin for LocaleCanonicalizer<'data>
impl<'data> UnwindSafe for LocaleCanonicalizer<'data>
Blanket Implementations
Mutably borrows from an owned value. Read more
Clone this trait object reference, returning a boxed trait object.