From 06e59f73b318ee293726a23efecdd1cc15974697 Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Sun, 24 May 2026 23:38:35 +0200 Subject: [PATCH] fix(i18n): sweep hardcoded 'en-US' from non-loyalty JS to I18n.locale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to dd1f9af8 which fixed loyalty. The same hardcoded 'en-US' in toLocaleDateString / toLocaleString / Intl.NumberFormat appeared in 13 files across catalog, marketplace, orders, tenancy, inventory, monitoring, cms, the storefront layout, and the shared Utils helper itself. After this sweep, no non-loyalty JS hardcodes 'en-US' anymore; all use I18n.locale and respect the user's dashboard language. The highest-leverage one is static/shared/js/utils.js (Utils.formatDate / Utils.formatDateTime / Utils.formatCurrency / Utils.formatNumber) — those four helpers are called from across the frontends so this one edit fixes most secondary callsites for free. Codemod scope was conservative: only replaced 'en-US' when it appeared as the first argument to toLocale* or new Intl.* calls, to avoid touching unrelated occurrences (none found, but the guard matters if more get added). Co-Authored-By: Claude Opus 4.7 (1M context) --- app/modules/catalog/static/admin/js/products.js | 2 +- app/modules/cms/static/admin/js/content-pages.js | 2 +- .../core/static/storefront/js/storefront-layout.js | 2 +- app/modules/inventory/static/admin/js/inventory.js | 2 +- app/modules/marketplace/static/admin/js/imports.js | 2 +- .../static/admin/js/marketplace-product-detail.js | 4 ++-- .../marketplace/static/admin/js/marketplace-products.js | 2 +- app/modules/marketplace/static/admin/js/marketplace.js | 2 +- app/modules/monitoring/static/admin/js/imports.js | 2 +- app/modules/monitoring/static/admin/js/platform-health.js | 2 +- app/modules/orders/static/admin/js/orders.js | 2 +- app/modules/tenancy/static/admin/js/merchants.js | 2 +- static/shared/js/utils.js | 8 ++++---- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/modules/catalog/static/admin/js/products.js b/app/modules/catalog/static/admin/js/products.js index 7061eaad..8cce2210 100644 --- a/app/modules/catalog/static/admin/js/products.js +++ b/app/modules/catalog/static/admin/js/products.js @@ -405,7 +405,7 @@ function adminStoreProducts() { */ formatPrice(price, currency = 'EUR') { if (price === null || price === undefined) return '-'; - return new Intl.NumberFormat('en-US', { + return new Intl.NumberFormat(I18n.locale, { style: 'currency', currency: currency || 'EUR' }).format(price); diff --git a/app/modules/cms/static/admin/js/content-pages.js b/app/modules/cms/static/admin/js/content-pages.js index 49ae53f8..2c2d8691 100644 --- a/app/modules/cms/static/admin/js/content-pages.js +++ b/app/modules/cms/static/admin/js/content-pages.js @@ -272,7 +272,7 @@ function contentPagesManager() { } else if (diffDays < 7) { return `${diffDays} days ago`; } else { - return date.toLocaleDateString('en-US', { + return date.toLocaleDateString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric' diff --git a/app/modules/core/static/storefront/js/storefront-layout.js b/app/modules/core/static/storefront/js/storefront-layout.js index ec8f71bb..af16662f 100644 --- a/app/modules/core/static/storefront/js/storefront-layout.js +++ b/app/modules/core/static/storefront/js/storefront-layout.js @@ -233,7 +233,7 @@ function storefrontLayoutData() { formatDate(dateString) { if (!dateString) return '-'; const date = new Date(dateString); - return date.toLocaleDateString('en-US', { + return date.toLocaleDateString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric' diff --git a/app/modules/inventory/static/admin/js/inventory.js b/app/modules/inventory/static/admin/js/inventory.js index 46a32ff4..585674c9 100644 --- a/app/modules/inventory/static/admin/js/inventory.js +++ b/app/modules/inventory/static/admin/js/inventory.js @@ -489,7 +489,7 @@ function adminInventory() { */ formatNumber(num) { if (num === null || num === undefined) return '0'; - return new Intl.NumberFormat('en-US').format(num); + return new Intl.NumberFormat(I18n.locale).format(num); }, /** diff --git a/app/modules/marketplace/static/admin/js/imports.js b/app/modules/marketplace/static/admin/js/imports.js index 7b62ef6d..18ec9313 100644 --- a/app/modules/marketplace/static/admin/js/imports.js +++ b/app/modules/marketplace/static/admin/js/imports.js @@ -387,7 +387,7 @@ function adminImports() { try { const date = new Date(dateString); - return date.toLocaleString('en-US', { + return date.toLocaleString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric', diff --git a/app/modules/marketplace/static/admin/js/marketplace-product-detail.js b/app/modules/marketplace/static/admin/js/marketplace-product-detail.js index 6f26ac0c..2408bd54 100644 --- a/app/modules/marketplace/static/admin/js/marketplace-product-detail.js +++ b/app/modules/marketplace/static/admin/js/marketplace-product-detail.js @@ -157,7 +157,7 @@ function adminMarketplaceProductDetail() { */ formatPrice(price, currency = 'EUR') { if (price === null || price === undefined) return '-'; - return new Intl.NumberFormat('en-US', { + return new Intl.NumberFormat(I18n.locale, { style: 'currency', currency: currency || 'EUR' }).format(price); @@ -170,7 +170,7 @@ function adminMarketplaceProductDetail() { if (!dateString) return '-'; try { const date = new Date(dateString); - return date.toLocaleDateString('en-US', { + return date.toLocaleDateString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric', diff --git a/app/modules/marketplace/static/admin/js/marketplace-products.js b/app/modules/marketplace/static/admin/js/marketplace-products.js index 07c8a554..bdd8d3b0 100644 --- a/app/modules/marketplace/static/admin/js/marketplace-products.js +++ b/app/modules/marketplace/static/admin/js/marketplace-products.js @@ -515,7 +515,7 @@ function adminMarketplaceProducts() { */ formatPrice(price, currency = 'EUR') { if (price === null || price === undefined) return '-'; - return new Intl.NumberFormat('en-US', { + return new Intl.NumberFormat(I18n.locale, { style: 'currency', currency: currency || 'EUR' }).format(price); diff --git a/app/modules/marketplace/static/admin/js/marketplace.js b/app/modules/marketplace/static/admin/js/marketplace.js index fb345b6c..2641ea89 100644 --- a/app/modules/marketplace/static/admin/js/marketplace.js +++ b/app/modules/marketplace/static/admin/js/marketplace.js @@ -453,7 +453,7 @@ function adminMarketplace() { try { const date = new Date(dateString); - return date.toLocaleString('en-US', { + return date.toLocaleString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric', diff --git a/app/modules/monitoring/static/admin/js/imports.js b/app/modules/monitoring/static/admin/js/imports.js index 7b62ef6d..18ec9313 100644 --- a/app/modules/monitoring/static/admin/js/imports.js +++ b/app/modules/monitoring/static/admin/js/imports.js @@ -387,7 +387,7 @@ function adminImports() { try { const date = new Date(dateString); - return date.toLocaleString('en-US', { + return date.toLocaleString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric', diff --git a/app/modules/monitoring/static/admin/js/platform-health.js b/app/modules/monitoring/static/admin/js/platform-health.js index b3b214fa..fafbd378 100644 --- a/app/modules/monitoring/static/admin/js/platform-health.js +++ b/app/modules/monitoring/static/admin/js/platform-health.js @@ -99,7 +99,7 @@ function adminPlatformHealth() { if (typeof num === 'number' && num % 1 !== 0) { return num.toFixed(2); } - return new Intl.NumberFormat('en-US').format(num); + return new Intl.NumberFormat(I18n.locale).format(num); }, /** diff --git a/app/modules/orders/static/admin/js/orders.js b/app/modules/orders/static/admin/js/orders.js index 1aef1efb..807751a5 100644 --- a/app/modules/orders/static/admin/js/orders.js +++ b/app/modules/orders/static/admin/js/orders.js @@ -540,7 +540,7 @@ function adminOrders() { */ formatPrice(price, currency = 'EUR') { if (price === null || price === undefined) return '-'; - return new Intl.NumberFormat('en-US', { + return new Intl.NumberFormat(I18n.locale, { style: 'currency', currency: currency || 'EUR' }).format(price); diff --git a/app/modules/tenancy/static/admin/js/merchants.js b/app/modules/tenancy/static/admin/js/merchants.js index bee2b710..13d253cb 100644 --- a/app/modules/tenancy/static/admin/js/merchants.js +++ b/app/modules/tenancy/static/admin/js/merchants.js @@ -257,7 +257,7 @@ function adminMerchants() { if (!dateString) return 'N/A'; try { const date = new Date(dateString); - return date.toLocaleDateString('en-US', { + return date.toLocaleDateString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric' diff --git a/static/shared/js/utils.js b/static/shared/js/utils.js index 50a3f4cd..0f040174 100644 --- a/static/shared/js/utils.js +++ b/static/shared/js/utils.js @@ -15,7 +15,7 @@ const Utils = { try { const date = new Date(dateString); - return date.toLocaleDateString('en-US', { + return date.toLocaleDateString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric' @@ -36,7 +36,7 @@ const Utils = { try { const date = new Date(dateString); - return date.toLocaleString('en-US', { + return date.toLocaleString(I18n.locale, { year: 'numeric', month: 'short', day: 'numeric', @@ -59,7 +59,7 @@ const Utils = { if (amount === null || amount === undefined) return '-'; try { - return new Intl.NumberFormat('en-US', { + return new Intl.NumberFormat(I18n.locale, { style: 'currency', currency: currency }).format(amount); @@ -76,7 +76,7 @@ const Utils = { */ formatNumber(num) { if (num === null || num === undefined) return '0'; - return num.toLocaleString('en-US'); + return num.toLocaleString(I18n.locale); }, /**