LibUnicode: Resolve the most likely territory alias when there are many

This commit is contained in:
Timothy Flynn 2021-08-31 09:45:16 -04:00 committed by Linus Groh
parent 1fbc5dba08
commit fd0011989a
Notes: sideshowbarker 2024-07-18 04:57:04 +09:00
2 changed files with 10 additions and 7 deletions

View file

@ -394,6 +394,14 @@ TEST_CASE(canonicalize_unicode_locale_id)
test("EN-SU"sv, "en-RU"sv);
test("en-810"sv, "en-RU"sv);
test("EN-810"sv, "en-RU"sv);
test("hy-su"sv, "hy-AM"sv);
test("HY-SU"sv, "hy-AM"sv);
test("hy-810"sv, "hy-AM"sv);
test("HY-810"sv, "hy-AM"sv);
test("und-Armn-su"sv, "und-Armn-AM"sv);
test("UND-ARMN-SU"sv, "und-Armn-AM"sv);
test("und-Armn-810"sv, "und-Armn-AM"sv);
test("UND-ARMN-810"sv, "und-Armn-AM"sv);
// Script subtag aliases.
test("en-qaai"sv, "en-Zinh"sv);

View file

@ -591,13 +591,8 @@ static void transform_unicode_locale_id_to_canonical_syntax(LocaleID& locale_id)
}
if (language_id.region.has_value()) {
if (auto alias = resolve_territory_alias(*language_id.region); alias.has_value()) {
auto aliases = alias->split_view(' ');
// FIXME: Territory subtag aliases should also consult the CLDR likelySubtags.json file.
// For now, implement the spec's recommendation of using just the first alias.
language_id.region = aliases[0].to_string();
}
if (auto alias = resolve_territory_alias(*language_id.region); alias.has_value())
language_id.region = resolve_most_likely_territory(language_id, *alias);
}
quick_sort(language_id.variants);