9 个稳定版本
1.5.0 | 2024 年 5 月 28 日 |
---|---|
1.4.0 | 2023 年 11 月 16 日 |
1.3.2 | 2023 年 10 月 3 日 |
1.3.0 | 2023 年 9 月 23 日 |
1.0.0-beta1 | 2022 年 8 月 5 日 |
在 国际化 (i18n) 中排名 #50
每月下载量 371,469
用于 91 个 Crates(直接使用 23 个)
1MB
21K SLoC
icu_locid_transform
基于 CLDR
数据的区域标识符规范化。
此模块作为其自身的 crate (icu_locid_transform
) 以及 icu
crate 的一部分发布。有关 ICU4X 项目更多详细信息,请参阅后者。
它目前支持基于 UTS #35: Unicode LDML 3. LocaleId Canonicalization
的规范化算法,以及 UTS #35: Unicode LDML 3. Likely Subtags
中描述的最小化和最大化子标签算法。
“最大化方法”可能会根据运行“添加可能子标签”算法的结果,就地更新传入的区域设置,该算法来自UTS #35: Unicode LDML 3. 可能子标签
。
“最小化方法”返回一个新的区域设置,该设置是运行UTS #35: Unicode LDML 3. 可能子标签
中“移除可能子标签”算法的结果。
示例
use icu::locid::Locale;
use icu::locid_transform::{LocaleCanonicalizer, TransformResult};
let lc = LocaleCanonicalizer::new();
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::locid::locale;
use icu::locid_transform::{LocaleExpander, TransformResult};
let lc = LocaleExpander::new();
let mut locale = locale!("zh-CN");
assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
assert_eq!(locale, locale!("zh-Hans-CN"));
let mut locale = locale!("zh-Hant-TW");
assert_eq!(lc.maximize(&mut locale), TransformResult::Unmodified);
assert_eq!(locale, locale!("zh-Hant-TW"));
use icu::locid::locale;
use icu::locid_transform::{LocaleExpander, TransformResult};
use writeable::assert_writeable_eq;
let lc = LocaleExpander::new();
let mut locale = locale!("zh-Hans-CN");
assert_eq!(lc.minimize(&mut locale), TransformResult::Modified);
assert_eq!(locale, locale!("zh"));
let mut locale = locale!("zh");
assert_eq!(lc.minimize(&mut locale), TransformResult::Unmodified);
assert_eq!(locale, locale!("zh"));
更多信息
有关开发、作者、贡献等更多信息,请访问ICU4X 主页
。
依赖项
~0.7–1.3MB
~27K SLoC