test(i18n): cover language preference persistence

This commit is contained in:
Codex committed 2026-09-28 09:30:30 +09:00
1 parent ca116d6cce
commit d92c4f509f
1 file changed
+15
+15
View File
@@ -72,10 +72,25 @@ assert.equal(localeContext.LifeI18n.language(), "zh", "cloud settings cannot ove
localeContext.setLanguage("en");
assert.equal(localeContext.LifeI18n.language(), "en", "manual English choice overrides browser language");
assert.equal(localeContext.LifeI18n.t("app.today"), "TODAY");
const reloadedManualContext = vm.createContext({
navigator: { languages: ["en-US"] }, localStorage: makeStorage(),
LifeOSLocales: { en: assets.localeEn, "zh-CN": assets.localeZh },
});
reloadedManualContext.window = reloadedManualContext;
vm.runInContext(assets.i18nJs, reloadedManualContext);
assert.equal(reloadedManualContext.LifeI18n.language(), "en", "a reloaded page starts in automatic mode when no manual choice was saved");
localeContext.navigator.languages = ["zh-CN"];
localeContext.setLanguage("auto");
assert.equal(localeContext.LifeI18n.preference(), "auto");
assert.equal(localeContext.LifeI18n.language(), "zh", "auto mode ignores stale cloud preference and follows this device");
localeContext.setLanguage("en");
const persistedManualContext = vm.createContext({
navigator: { languages: ["zh-CN"] }, localStorage,
LifeOSLocales: { en: assets.localeEn, "zh-CN": assets.localeZh },
});
persistedManualContext.window = persistedManualContext;
vm.runInContext(assets.i18nJs, persistedManualContext);
assert.equal(persistedManualContext.LifeI18n.language(), "en", "a manually selected language persists across reloads");
const migratedStorage = makeStorage({ lifeos_settings: JSON.stringify({ language: "zh" }) });
const migratedContext = vm.createContext({
navigator: { languages: ["en-US"] }, localStorage: migratedStorage,