localstorage 实现多语言本地持久化,核心是存取字符串型语言标识(如 'zh-cn'),初始化时读取并设默认值,切换时同步更新存储与 ui,并可通过 storage 事件跨 tab 同步。

LocalStorage 实现多语言配置的本地持久化,核心是把用户选择的语言标识(如 zh-CN、en-US)存为字符串,并在页面加载时读取、应用,同时确保后续切换能实时更新存储和界面。
存语言代码:用 setItem 保存字符串值
用户点击“中文”或调用切换函数时,直接存语言标签:
localStorage.setItem('lang', 'zh-CN')localStorage.setItem('lang', 'en-US')
注意:值必须是字符串,无需额外序列化;不建议存对象(如 { code: 'zh-CN', name: '简体中文' }),除非后续逻辑强依赖扩展字段。
读语言代码:用 getItem 获取并做空值兜底
页面初始化时(如 DOMContentLoaded 或 React 的 useEffect)读取:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
const savedLang = localStorage.getItem('lang') || 'en-US'- 务必用
||提供默认值,因为首次访问返回null,不是undefined
拿到语言码后,可加载对应 i18n 资源包、设置 HTML 的 lang 属性、触发 UI 重渲染。
联动更新:切换语言时同步写入 + 通知全局状态
不只是存数据,还要让整个应用响应变化:
- 调用
localStorage.setItem('lang', newLang)立即落盘 - 手动触发语言切换逻辑(如更新
document.documentElement.lang、重设 i18n 实例的 locale) - 如果多个 Tab 同时打开,可通过监听
storage事件实现跨页同步:window.addEventListener('storage', e => { if (e.key === 'lang') updateUI(e.newValue) })
进阶建议:配合语言资源做轻量缓存
若翻译内容较大(如整套 JSON),可考虑按需缓存到 localStorage:
- 存翻译包:
localStorage.setItem('i18n_zh-CN', JSON.stringify(zhBundle)) - 读取时先查缓存,无则请求再存:
const bundle = JSON.parse(localStorage.getItem('i18n_zh-CN') || '{}') - 注意控制体积,避免接近 5MB 上限;敏感或动态内容仍应以服务端为准
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










