Refactor languageHandler to avoid import cycles (#33948)

* Refactor languageHandler to avoid import cycles

Also move its tests to vitest

* Small refactor

* Iterate

* Iterate
This commit is contained in:
Michael Telatynski
2026-06-24 09:49:49 +00:00
committed by GitHub
parent 29b9c04d20
commit f9b97be1d7
38 changed files with 780 additions and 555 deletions
+7 -6
View File
@@ -12,8 +12,11 @@ import { createRoot } from "react-dom/client";
import React, { StrictMode } from "react";
import { logger } from "matrix-js-sdk/src/logger";
import { ModuleLoader } from "@element-hq/element-web-module-api";
import { getNormalizedLanguageKeys } from "@element-hq/web-shared-components";
import * as languageHandler from "../languageHandler";
import { getLanguagesFromBrowser } from "../i18n/browser";
import { setLanguage } from "../i18n/settings";
import { getCurrentLanguage } from "../i18n";
import SettingsStore from "../settings/SettingsStore";
import PlatformPeg from "../PlatformPeg";
import SdkConfig from "../SdkConfig";
@@ -68,15 +71,13 @@ export async function loadLanguage(): Promise<void> {
let langs: string[] = [];
if (!prefLang) {
languageHandler.getLanguagesFromBrowser().forEach((l) => {
langs.push(...languageHandler.getNormalizedLanguageKeys(l));
});
langs = getLanguagesFromBrowser().flatMap(getNormalizedLanguageKeys);
} else {
langs = [prefLang];
}
try {
await languageHandler.setLanguage(...langs);
document.documentElement.setAttribute("lang", languageHandler.getCurrentLanguage());
await setLanguage(...langs);
document.documentElement.setAttribute("lang", getCurrentLanguage());
} catch (e) {
logger.error("Unable to set language", e);
}