diff --git a/packages/grafana-data/src/datetime/formats.ts b/packages/grafana-data/src/datetime/formats.ts index 92b9a99db62..67d0e4e6948 100644 --- a/packages/grafana-data/src/datetime/formats.ts +++ b/packages/grafana-data/src/datetime/formats.ts @@ -105,7 +105,13 @@ export function localTimeFormat( } // https://momentjs.com/docs/#/displaying/format/ - const dateTimeFormat = new Intl.DateTimeFormat(locale || undefined, options); + let dateTimeFormat: Intl.DateTimeFormat; + + try { + dateTimeFormat = new Intl.DateTimeFormat(locale || undefined, options); + } catch { + dateTimeFormat = new Intl.DateTimeFormat('en-US', options); + } const parts = dateTimeFormat.formatToParts(new Date()); const hour12 = dateTimeFormat.resolvedOptions().hour12; diff --git a/packages/grafana-i18n/src/dates.ts b/packages/grafana-i18n/src/dates.ts index c75cd2c86f4..c942226dfba 100644 --- a/packages/grafana-i18n/src/dates.ts +++ b/packages/grafana-i18n/src/dates.ts @@ -11,7 +11,11 @@ function clearMemoizedCache(fn: Memoized) { let regionalFormat: string | undefined; const createDateTimeFormatter = deepMemoize((locale: string | undefined, options: Intl.DateTimeFormatOptions) => { - return new Intl.DateTimeFormat(locale, options); + try { + return new Intl.DateTimeFormat(locale, options); + } catch { + return new Intl.DateTimeFormat('en-US', options); + } }); const createDurationFormatter = deepMemoize((locale: string | undefined, options: Intl.DurationFormatOptions) => { diff --git a/public/app/core/internationalization/dates.ts b/public/app/core/internationalization/dates.ts index 8d1e7467a93..9ef7bbbdb82 100644 --- a/public/app/core/internationalization/dates.ts +++ b/public/app/core/internationalization/dates.ts @@ -9,7 +9,11 @@ const deepMemoize: typeof memoize = (fn) => memoize(fn, { isEqual: deepEqual }); const isLocaleEnabled = config.featureToggles.localeFormatPreference; const createDateTimeFormatter = deepMemoize((locale: string, options: Intl.DateTimeFormatOptions) => { - return new Intl.DateTimeFormat(locale, options); + try { + return new Intl.DateTimeFormat(locale, options); + } catch { + return new Intl.DateTimeFormat('en-US', options); + } }); const createDurationFormatter = deepMemoize((locale: string, options: Intl.DurationFormatOptions) => {