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.

``` rust use iculocid::langid; use languagematcher::LanguageMatcher;

let matcher = LanguageMatcher::new();

asserteq!(matcher.distance(langid!("zh-CN"), langid!("zh-Hans")), 0); asserteq!(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)) ); ```