From ba4528c3758b5a4dc0973744f49541bf5b28a4a6 Mon Sep 17 00:00:00 2001 From: Mark Noble Date: Mon, 5 Oct 2026 22:09:46 -0600 Subject: [PATCH] DIS-3028 Fix currency formatting when there is no active language --- code/web/release_notes/26.10.00/DIS-3028.yaml | 12 ++++++++++++ code/web/sys/Utils/StringUtils.php | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 code/web/release_notes/26.10.00/DIS-3028.yaml diff --git a/code/web/release_notes/26.10.00/DIS-3028.yaml b/code/web/release_notes/26.10.00/DIS-3028.yaml new file mode 100644 index 00000000000..079a5d2c947 --- /dev/null +++ b/code/web/release_notes/26.10.00/DIS-3028.yaml @@ -0,0 +1,12 @@ +Jira: DIS-3028 +Type: Bug +Developer: Mark Noble (MDN) +ContributingOrg: Grove For Libraries +Sponsor: +GroveRelease: 26.10.00 +CommunityRelease: 26.11.00 +Component: Languages and Translations +Description: + - Fix currency formatting when there is no active language (i.e. when running a background task). When this situation occurs, the default language will be used. +NewSettings: +NewPermissions: \ No newline at end of file diff --git a/code/web/sys/Utils/StringUtils.php b/code/web/sys/Utils/StringUtils.php index a79afd0ad41..2975a771407 100644 --- a/code/web/sys/Utils/StringUtils.php +++ b/code/web/sys/Utils/StringUtils.php @@ -24,7 +24,20 @@ static function getCurrencyFormatter() : NumberFormatter { $currencyCode = $variables->currencyCode; } - return new NumberFormatter($activeLanguage->locale . '@currency=' . $currencyCode, NumberFormatter::CURRENCY); + if ($activeLanguage == null) { + require_once ROOT_DIR . '/sys/Translation/Language.php'; + $activeLanguage = new Language(); + $activeLanguage->isDefault = 1; + if ($activeLanguage->find(true)) { + $locale = $activeLanguage->locale; + }else{ + $locale = 'en_US'; + } + }else{ + $locale = $activeLanguage->locale; + } + + return new NumberFormatter($locale . '@currency=' . $currencyCode, NumberFormatter::CURRENCY); } static function formatCurrency(float $number) : string {