summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Tests/LibUnicode/TestUnicodeLocale.cpp16
-rw-r--r--Userland/Libraries/LibUnicode/Locale.cpp4
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());