From d010ba10c3987fc2a1beaf5c83767fdab87833b0 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 6 Dec 2021 17:25:23 -0500 Subject: [PATCH] LibJS: Cache the data locale used by Intl.DateTimeFormat Unlike the locale, the data locale has Unicode locale extensions removed (e.g. the data locale for "en-US-u-ca-gregory" is just "en-US"). Cache the data locale for LibUnicode lookups during formatting. --- Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.cpp | 3 +++ Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.cpp b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.cpp index 8ca87b1b93..f88e5a7bb8 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.cpp +++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.cpp @@ -129,6 +129,9 @@ ThrowCompletionOr initialize_date_time_format(GlobalObject& glo // 23. Let dataLocale be r.[[dataLocale]]. auto data_locale = move(result.data_locale); + // Non-standard, the data locale is needed for LibUnicode lookups while formatting. + date_time_format.set_data_locale(data_locale); + // 24. Let timeZone be ? Get(options, "timeZone"). auto time_zone_value = TRY(options->get(vm.names.timeZone)); String time_zone; diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h index 16ff75ff38..ece9ef225d 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h +++ b/Userland/Libraries/LibJS/Runtime/Intl/DateTimeFormat.h @@ -46,6 +46,9 @@ public: String const& locale() const { return m_locale; } void set_locale(String locale) { m_locale = move(locale); } + String const& data_locale() const { return m_data_locale; } + void set_data_locale(String data_locale) { m_data_locale = move(data_locale); } + String const& calendar() const { return m_calendar; } void set_calendar(String calendar) { m_calendar = move(calendar); } @@ -129,6 +132,8 @@ private: String m_time_zone; // [[TimeZone]] Optional