#language #localization #xml-data #langid

language-matcher

基于 CLDR 的语言匹配器

5 个版本

0.1.4 2023 年 2 月 28 日
0.1.3 2023 年 1 月 4 日
0.1.2 2022 年 10 月 2 日
0.1.1 2022 年 9 月 10 日
0.1.0 2022 年 9 月 10 日

#209 in 国际化 (i18n)

36 每月下载量
2 个 Crates 中使用 (通过 ayaka-runtime)

MIT 许可证

19KB
285

language-matcher

icu4x 中没有语言匹配器。并且,如果您注意到了,CLDR JSON 数据中的语言匹配数据是有问题的。

这是一个基于 CLDR XML 数据的语言匹配器。距离值乘以 10 以显示范式区域之间的差异。

use icu_locid::langid;
use language_matcher::LanguageMatcher;

let matcher = LanguageMatcher::new();

assert_eq!(matcher.distance(langid!("zh-CN"), langid!("zh-Hans")), 0);
assert_eq!(matcher.distance(langid!("zh-HK"), langid!("zh-MO")), 40);

let accepts = [
    langid!("en"),
    langid!("ja"),
    langid!("zh-Hans"),
    langid!("zh-Hant"),
];
assert_eq!(
    matcher.matches(langid!("zh-CN"), &accepts),
    Some((&langid!("zh-Hans"), 0))
);

lib.rs:

基于 CLDR 的语言匹配器。

由于我们喜欢 Sync,因此启用了 icu_provider 的 "sync" 功能。

依赖关系

~4.5MB
~80K SLoC