diff options
-rw-r--r-- | Tests/LibUnicode/TestUnicodeLocale.cpp | 16 | ||||
-rw-r--r-- | Userland/Libraries/LibUnicode/Locale.cpp | 4 |
2 files changed, 20 insertions, 0 deletions
diff --git a/Tests/LibUnicode/TestUnicodeLocale.cpp b/Tests/LibUnicode/TestUnicodeLocale.cpp index a536118de2..e0ec45d7fb 100644 --- a/Tests/LibUnicode/TestUnicodeLocale.cpp +++ b/Tests/LibUnicode/TestUnicodeLocale.cpp @@ -410,4 +410,20 @@ TEST_CASE(canonicalize_unicode_locale_id) test("EN-U-RG-CN12"sv, "en-u-rg-cntj"sv); test("en-u-aa-cn11"sv, "en-u-aa-cn11"sv); test("EN-U-AA-CN11"sv, "en-u-aa-cn11"sv); + + // Complex aliases. + test("en-lojban"sv, "en"sv); + test("EN-LOJBAN"sv, "en"sv); + test("art-lojban"sv, "jbo"sv); + test("ART-LOJBAN"sv, "jbo"sv); + test("cel-gaulish"sv, "xtg"sv); + test("CEL-GAULISH"sv, "xtg"sv); + test("zh-guoyu"sv, "zh"sv); + test("ZH-GUOYU"sv, "zh"sv); + test("zh-hakka"sv, "hak"sv); + test("ZH-HAKKA"sv, "hak"sv); + test("zh-xiang"sv, "hsn"sv); + test("ZH-XIANG"sv, "hsn"sv); + test("ja-latn-hepburn-heploc"sv, "ja-Latn-alalc97"sv); + test("JA-LATN-HEPBURN-HEPLOC"sv, "ja-Latn-alalc97"sv); } diff --git a/Userland/Libraries/LibUnicode/Locale.cpp b/Userland/Libraries/LibUnicode/Locale.cpp index 6dd5a23655..291b6f0782 100644 --- a/Userland/Libraries/LibUnicode/Locale.cpp +++ b/Userland/Libraries/LibUnicode/Locale.cpp @@ -568,6 +568,10 @@ static void transform_unicode_locale_id_to_canonical_syntax(LocaleID& locale_id) for (auto& variant : language_id.variants) variant = variant.to_lowercase(); +#if ENABLE_UNICODE_DATA + Detail::resolve_complex_language_aliases(language_id); +#endif + if (auto alias = resolve_language_alias(*language_id.language); alias.has_value()) { auto language_alias = parse_unicode_language_id(*alias); VERIFY(language_alias.has_value()); |