| Crates.io | language-matcher |
| lib.rs | language-matcher |
| version | 0.2.0 |
| created_at | 2022-09-10 01:59:49.697207+00 |
| updated_at | 2025-05-23 03:50:11.870763+00 |
| description | A language matcher with CLDR. |
| homepage | |
| repository | https://github.com/Berrysoft/language-matcher |
| max_upload_size | |
| id | 662196 |
| size | 63,484 |
There's no language matcher in icu4x.
And, if you have noticed, the language matching data in the JSON data of CLDR is broken.
This is a language matcher based on the XML data of CLDR. The distance value is multiplied by 10 to show the difference by paradigm locales.
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))
);