Settings 切换语言不立即生效(#437)¶
现象¶
设置窗口 Appearance → Language 切换后,设置界面文案仍是旧语言;关闭再开或刷新设置窗后才切换。
根因¶
设置是独立轻量 webview(SettingsNativeRoot),不挂载主窗的 useAppBootstrap。后者才在 settings.locale 变化时调用 i18n.changeLanguage。设置窗只更新并落盘 settings,本窗 i18n 语言不变,故 useTranslation 仍返回旧文案。
修复¶
- 抽出
applyLocale(src/i18n/index.ts):changeLanguage+<html lang>。 SettingsNativeRoot在settings.locale变化时立即applyLocale(并同步原生菜单set_locale)。main.tsx的subscribeSettings对各窗口再应用一次,覆盖 feature/doc 等未挂 bootstrap 的窗。
相关¶
- Issue: #437
- 代码:
src/components/settings/settings-native-root.tsx、src/i18n/index.ts、src/main.tsx、src/hooks/use-app-bootstrap.ts