5 releases

0.1.4 Feb 28, 2023
0.1.3 Jan 4, 2023
0.1.2 Oct 2, 2022
0.1.1 Sep 10, 2022
0.1.0 Sep 10, 2022

#181 in Internationalization (i18n)

Download history 29/week @ 2023-12-06 76/week @ 2023-12-13 128/week @ 2023-12-20 10/week @ 2023-12-27 25/week @ 2024-01-03 17/week @ 2024-01-10 11/week @ 2024-01-17 3/week @ 2024-01-24 21/week @ 2024-01-31 23/week @ 2024-02-07 20/week @ 2024-02-14 46/week @ 2024-02-21 31/week @ 2024-02-28 22/week @ 2024-03-06 25/week @ 2024-03-13 48/week @ 2024-03-20

132 downloads per month
Used in 2 crates (via ayaka-runtime)

MIT license

19KB
285 lines

language-matcher

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

lib.rs:

A language matcher with CLDR.

The "sync" feature of icu_provider is enabled because we like Sync.

Dependencies

~4.5MB
~77K SLoC