Skip to content

Commit 2fcaa6d

Browse files
committed
fix(frontend): 修复切换语言后卡片文本未刷新问题
1 parent b13c47b commit 2fcaa6d

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

‎frontend/script.js‎

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -935,23 +935,29 @@
935935
}
936936

937937
/* ============ 语言切换 ============ */
938+
// 卡片内大量文本(metric 标签、磁盘/网络/进程表头等)在 build 阶段用 t() 写死,
939+
// 切换语言后仅靠 applyI18n 刷新不了,因此切换语言时整体重建界面静态结构。
940+
function rebuildUI() {
941+
// 先释放旧图表实例,避免持有已移除的 DOM
942+
Object.values(charts).forEach((c) => { try { c && c.dispose(); } catch (e) {} });
943+
for (const k in charts) delete charts[k];
944+
["sec-basic", "sec-cpu", "sec-memory", "sec-disk", "sec-gpu", "sec-network", "sec-process"]
945+
.forEach((id) => { const s = document.getElementById(id); if (s) s.innerHTML = ""; });
946+
built = false;
947+
if (lastSnap) firstRender(lastSnap);
948+
applyI18n();
949+
const active = document.querySelector(".section.active");
950+
const sec = active ? active.dataset.section : "basic";
951+
activateCharts(sec);
952+
}
938953
function setLang(next) {
939954
if (!LANGS[next]) return;
940955
lang = next;
941956
T = LANGS[lang] || {};
942957
setCookie("lang", lang);
943958
document.documentElement.lang = lang;
944-
applyI18n();
959+
rebuildUI();
945960
const sel = $("#lang-select"); if (sel) sel.value = lang;
946-
// 图表内部文本(legend / 轴名)依赖 t(),需重渲染可见图表
947-
const activeSection = document.querySelector(".section.active");
948-
const sec = activeSection ? activeSection.dataset.section : "basic";
949-
if (lastSnap) {
950-
requestAnimationFrame(() => {
951-
activateCharts(sec);
952-
Object.values(charts).forEach((c) => c && c.resize());
953-
});
954-
}
955961
}
956962

957963
/* ============ 主题切换 ============ */

0 commit comments

Comments
 (0)