From 90ec6dc590a8b17bd5a1aa69e1c121570c8ee567 Mon Sep 17 00:00:00 2001 From: Alfred Date: Sun, 15 Feb 2026 04:10:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(i18n):=20=E4=BF=9D=E5=AD=98=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E9=80=89=E6=8B=A9=EF=BC=8C=E5=88=B7=E6=96=B0=E5=90=8E?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E8=B7=B3=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - init(): 使用 supportedLanguages 校验 localStorage,修复因 languages 空导致忽略用户选择 - syncLanguageFromDevice(): 已有 localStorage 时不再用设备配置覆盖 --- components/ts_webui/web/index.html | 8 ++++++-- components/ts_webui/web/js/app.js | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/components/ts_webui/web/index.html b/components/ts_webui/web/index.html index 75457b2..9b85a1d 100644 --- a/components/ts_webui/web/index.html +++ b/components/ts_webui/web/index.html @@ -282,8 +282,12 @@

电压保护设置

function init() { try { var saved = localStorage.getItem('ts_language'); - if (saved && languages[saved]) currentLang = saved; - else currentLang = (navigator.language || '').indexOf('zh') === 0 ? 'zh-CN' : 'en-US'; + /* 使用 supportedLanguages 校验(languages 在 init 时尚未加载语言包) */ + if (saved && supportedLanguages[saved]) { + currentLang = saved; + } else { + currentLang = (navigator.language || '').indexOf('zh') === 0 ? 'zh-CN' : 'en-US'; + } } catch(e) {} document.documentElement.lang = currentLang; } diff --git a/components/ts_webui/web/js/app.js b/components/ts_webui/web/js/app.js index 0be8c44..b012d56 100644 --- a/components/ts_webui/web/js/app.js +++ b/components/ts_webui/web/js/app.js @@ -129,9 +129,11 @@ document.addEventListener('DOMContentLoaded', () => { // 初始化认证 UI updateAuthUI(); - // 根据设备 system.language 同步 WebUI 语言(与设备终端 help i18n 一致) + // 仅当 localStorage 无有效语言偏好时,才从设备 system.language 同步(不覆盖用户已有选择) (async function syncLanguageFromDevice() { try { + const saved = localStorage.getItem('ts_language'); + if (saved) return; /* 用户已有选择,优先尊重 */ const r = await api.configGet('system.language'); if (r && r.code === 0 && r.data && r.data.value !== undefined) { const webLang = r.data.value === 1 ? 'zh-CN' : 'en-US';