mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 19:18:12 +00:00
LibJS+LibUnicode: Generate all styles of currency localizations
Currently, LibUnicode is only parsing and generating the "long" style of currency display names. However, the CLDR contains "short" and "narrow" forms as well that need to be handled. Parse these, and update LibJS to actually respect the "style" option provided by the user for displaying currencies with Intl.DisplayNames. Note: There are some discrepencies between the engines on how style is handled. In particular, running: new Intl.DisplayNames('en', {type:'currency', style:'narrow'}).of('usd') Gives: SpiderMoney: "USD" V8: "US Dollar" LibJS: "$" And running: new Intl.DisplayNames('en', {type:'currency', style:'short'}).of('usd') Gives: SpiderMonkey: "$" V8: "US Dollar" LibJS: "$" My best guess is V8 isn't handling style, and just returning the long form (which is what LibJS did before this commit). And SpiderMoney can handle some styles, but if they don't have a value for the requested style, they fall back to the canonicalized code passed into of().
This commit is contained in:
parent
6cfd63e5bd
commit
39e031c4dd
5 changed files with 98 additions and 24 deletions
|
@ -786,13 +786,21 @@ Optional<StringView> get_locale_script_mapping([[maybe_unused]] StringView local
|
|||
#endif
|
||||
}
|
||||
|
||||
Optional<StringView> get_locale_currency_mapping([[maybe_unused]] StringView locale, [[maybe_unused]] StringView currency)
|
||||
Optional<StringView> get_locale_currency_mapping([[maybe_unused]] StringView locale, [[maybe_unused]] StringView currency, [[maybe_unused]] Style style)
|
||||
{
|
||||
#if ENABLE_UNICODE_DATA
|
||||
return Detail::get_locale_currency_mapping(locale, currency);
|
||||
#else
|
||||
return {};
|
||||
switch (style) {
|
||||
case Style::Long:
|
||||
return Detail::get_locale_long_currency_mapping(locale, currency);
|
||||
case Style::Short:
|
||||
return Detail::get_locale_short_currency_mapping(locale, currency);
|
||||
case Style::Narrow:
|
||||
return Detail::get_locale_narrow_currency_mapping(locale, currency);
|
||||
case Style::Numeric:
|
||||
return Detail::get_locale_numeric_currency_mapping(locale, currency);
|
||||
}
|
||||
#endif
|
||||
return {};
|
||||
}
|
||||
|
||||
Vector<StringView> get_locale_key_mapping([[maybe_unused]] StringView locale, [[maybe_unused]] StringView keyword)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue