diff --git a/src/common/translations/localize.ts b/src/common/translations/localize.ts index a094d48b3e..6ff6e24b90 100644 --- a/src/common/translations/localize.ts +++ b/src/common/translations/localize.ts @@ -32,6 +32,7 @@ if (__BUILD__ === "latest") { } if (shouldPolyfillDateTime()) { polyfills.push(import("@formatjs/intl-datetimeformat/polyfill")); + polyfills.push(import("@formatjs/intl-datetimeformat/add-all-tz")); } } diff --git a/src/state/connection-mixin.ts b/src/state/connection-mixin.ts index 5c5f0b1468..5858ac67ef 100644 --- a/src/state/connection-mixin.ts +++ b/src/state/connection-mixin.ts @@ -24,6 +24,7 @@ import { getState } from "../util/ha-pref-storage"; import hassCallApi from "../util/hass-call-api"; import { getLocalLanguage } from "../util/common-translation"; import { HassBaseEl } from "./hass-base-mixin"; +import { polyfillsLoaded } from "../common/translations/localize"; export const connectionMixin = >( superClass: T @@ -180,12 +181,18 @@ export const connectionMixin = >( subscribeEntities(conn, (states) => this._updateHass({ states })); subscribeConfig(conn, (config) => { - if ( - this.hass?.config?.time_zone !== config.time_zone && - "__setDefaultTimeZone" in Intl.DateTimeFormat - ) { - // @ts-ignore - Intl.DateTimeFormat.__setDefaultTimeZone(config.time_zone); + if (this.hass?.config?.time_zone !== config.time_zone) { + if (__BUILD__ === "latest" && polyfillsLoaded) { + polyfillsLoaded.then(() => { + if ("__setDefaultTimeZone" in Intl.DateTimeFormat) { + // @ts-ignore + Intl.DateTimeFormat.__setDefaultTimeZone(config.time_zone); + } + }); + } else if ("__setDefaultTimeZone" in Intl.DateTimeFormat) { + // @ts-ignore + Intl.DateTimeFormat.__setDefaultTimeZone(config.time_zone); + } } this._updateHass({ config }); });