From 0725c7b1605359ff0f49967c2c4c5b839dc385c7 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 24 Apr 2024 10:26:24 +0200 Subject: [PATCH] Restore getHassTranslationsPre109 (#20597) * Revert "Remove legacy state translations (#20536)" This reverts commit e376efc57920feab37e322f2276beaa31e17d0c0. * keep --- src/data/translation.ts | 11 +++++++++++ src/state/translations-mixin.ts | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/data/translation.ts b/src/data/translation.ts index 82df04a11d..e4824b0e63 100644 --- a/src/data/translation.ts +++ b/src/data/translation.ts @@ -97,3 +97,14 @@ export const getHassTranslations = async ( }); return result.resources; }; + +export const getHassTranslationsPre109 = async ( + hass: HomeAssistant, + language: string +): Promise> => { + const result = await hass.callWS<{ resources: Record }>({ + type: "frontend/get_translations", + language, + }); + return result.resources; +}; diff --git a/src/state/translations-mixin.ts b/src/state/translations-mixin.ts index ea329c086e..be3158da08 100644 --- a/src/state/translations-mixin.ts +++ b/src/state/translations-mixin.ts @@ -1,3 +1,4 @@ +import { atLeastVersion } from "../common/config/version"; import { fireEvent } from "../common/dom/fire_event"; import { computeLocalize, LocalizeFunc } from "../common/translations/localize"; import { @@ -8,6 +9,7 @@ import { debounce } from "../common/util/debounce"; import { FirstWeekday, getHassTranslations, + getHassTranslationsPre109, NumberFormat, saveTranslationPreferences, TimeFormat, @@ -284,6 +286,23 @@ export default >(superClass: T) => configFlow?: Parameters[4], force = false ): Promise { + if ( + __BACKWARDS_COMPAT__ && + !atLeastVersion(this.hass!.connection.haVersion, 0, 109) + ) { + if (category !== "state") { + return this.hass!.localize; + } + const resources = await getHassTranslationsPre109(this.hass!, language); + + // Ignore the repsonse if user switched languages before we got response + if (this.hass!.language !== language) { + return this.hass!.localize; + } + + return this._updateResources(language, resources); + } + let alreadyLoaded: LoadedTranslationCategory; if (category in this.__loadedTranslations) {