diff --git a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp index f8292fe6f7..a7ba97bf95 100644 --- a/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp +++ b/Userland/Libraries/LibJS/Runtime/Intl/NumberFormat.cpp @@ -1370,7 +1370,9 @@ Optional> get_number_format_pattern(NumberFormat& nu // Handling of other [[CurrencyDisplay]] options will occur after [[SignDisplay]]. if (number_format.currency_display() == NumberFormat::CurrencyDisplay::Name) { - auto maybe_patterns = Unicode::select_currency_unit_pattern(number_format.data_locale(), number_format.numbering_system(), number); + auto formats = Unicode::get_compact_number_system_formats(number_format.data_locale(), number_format.numbering_system(), Unicode::CompactNumberFormatType::CurrencyUnit); + + auto maybe_patterns = Unicode::select_pattern_with_plurality(formats, number); if (maybe_patterns.has_value()) { patterns = maybe_patterns.release_value(); break; diff --git a/Userland/Libraries/LibUnicode/Locale.cpp b/Userland/Libraries/LibUnicode/Locale.cpp index d66544d0fe..3d195c3ee3 100644 --- a/Userland/Libraries/LibUnicode/Locale.cpp +++ b/Userland/Libraries/LibUnicode/Locale.cpp @@ -975,13 +975,11 @@ String resolve_most_likely_territory([[maybe_unused]] LanguageID const& language return aliases[0].to_string(); } -Optional select_currency_unit_pattern(StringView locale, StringView system, double number) +Optional select_pattern_with_plurality(Vector const& formats, double number) { // FIXME: This is a rather naive and locale-unaware implementation Unicode's TR-35 pluralization // rules: https://www.unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules // Once those rules are implemented for LibJS, we better use them instead. - auto formats = get_compact_number_system_formats(locale, system, CompactNumberFormatType::CurrencyUnit); - auto find_plurality = [&](auto plurality) -> Optional { if (auto it = formats.find_if([&](auto& patterns) { return patterns.plurality == plurality; }); it != formats.end()) return *it; diff --git a/Userland/Libraries/LibUnicode/Locale.h b/Userland/Libraries/LibUnicode/Locale.h index 172a5bb48c..c3e6951853 100644 --- a/Userland/Libraries/LibUnicode/Locale.h +++ b/Userland/Libraries/LibUnicode/Locale.h @@ -203,7 +203,7 @@ Optional add_likely_subtags(LanguageID const& language_id); Optional remove_likely_subtags(LanguageID const& language_id); String resolve_most_likely_territory(LanguageID const& language_id, StringView territory_alias); -Optional select_currency_unit_pattern(StringView locale, StringView system, double number); +Optional select_pattern_with_plurality(Vector const& formats, double number); Optional augment_currency_format_pattern(StringView currency_display, StringView base_pattern); }