diff --git a/Tests/LibUnicode/TestUnicodeLocale.cpp b/Tests/LibUnicode/TestUnicodeLocale.cpp index e0ec45d7fb..fb79b32139 100644 --- a/Tests/LibUnicode/TestUnicodeLocale.cpp +++ b/Tests/LibUnicode/TestUnicodeLocale.cpp @@ -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); diff --git a/Userland/Libraries/LibUnicode/Locale.cpp b/Userland/Libraries/LibUnicode/Locale.cpp index 88e86ce7f6..9744b97152 100644 --- a/Userland/Libraries/LibUnicode/Locale.cpp +++ b/Userland/Libraries/LibUnicode/Locale.cpp @@ -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);