5 个版本 (破坏性更新)

0.6.0 2022 年 5 月 17 日
0.5.0 2022 年 1 月 31 日
0.4.0 2021 年 11 月 2 日
0.3.0 2021 年 8 月 2 日
0.2.0 2021 年 4 月 29 日

#7 in #likely

Download history 1376/week @ 2024-04-01 3046/week @ 2024-04-08 1179/week @ 2024-04-15 2275/week @ 2024-04-22 1221/week @ 2024-04-29 1668/week @ 2024-05-06 1701/week @ 2024-05-13 1785/week @ 2024-05-20 1441/week @ 2024-05-27 2110/week @ 2024-06-03 2123/week @ 2024-06-10 1655/week @ 2024-06-17 1082/week @ 2024-06-24 1007/week @ 2024-07-01 657/week @ 2024-07-08 418/week @ 2024-07-15

3,167 每月下载量
用于 icu_provider_cldr

自定义许可证

1MB
20K SLoC

icu_locale_canonicalizer crates.io

icu_locale_canonicalizerICU4X 组件之一。

此 API 提供了基于 CLDR 数据进行地区标识符规范化的功能。

它目前支持基于 UTS #35: Unicode LDML 3. LocaleId Canonicalization 规范化算法以及最小化和最大化可能子标签算法进行地区标识符规范化,这些算法在 UTS #35: Unicode LDML 3. Likely Subtags 中描述。

最大化方法可能会根据运行 UTS #35: Unicode LDML 3. Likely Subtags 中的 '添加可能子标签' 算法的结果,就地更新传入的地区。

此最小化方法返回一个新的Locale,它是运行UTS #35: Unicode LDML 3. 可能子标签中“移除可能子标签”算法的结果。

示例

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");
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");
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-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");

更多信息

有关开发、作者身份、贡献等方面的更多信息,请访问ICU4X 主页

依赖项

~0.7–1.4MB
~29K SLoC