直接存翻译字典需先JSON序列化,用带语言代码和版本号的key(如i18n_zh_v2.1.0),读取时加try-catch与空值默认处理以防解析失败。

直接把翻译字典对象存进 localStorage 即可,但要注意序列化、键名设计和更新策略。
用 JSON.stringify 存,JSON.parse 取
localStorage 只支持字符串,不能直接存对象。翻译字典通常是类似 { "hello": "你好", "save": "保存" } 的 plain object,必须先转成 JSON 字符串:
- 存入:
localStorage.setItem('i18n_zh', JSON.stringify(dictZh)) - 读取:
const dict = JSON.parse(localStorage.getItem('i18n_zh') || '{}') - 建议加
|| '{}'防止null导致JSON.parse(null)报错
按语言代码命名 key,避免覆盖
不同语言字典应使用带语言标识的 key,比如:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
i18n_en→ 英文翻译 -
i18n_ja→ 日文翻译 -
i18n_zh-CN→ 简体中文(注意连字符合法) - 不推荐用通用 key 如
i18n,否则切换语言时会互相覆盖
配合版本号控制缓存更新
翻译文件更新后,旧缓存可能失效。可在 key 中加入版本或单独存一个版本标记:
立即学习“Java免费学习笔记(深入)”;
- 方式一(推荐):key 带版本,如
i18n_zh_v2.1.0,加载时读最新版 key - 方式二:存一个
i18n_version,对比服务端版本决定是否跳过本地读取 - 避免用户始终用过期翻译,尤其上线新文案后
加载失败时优雅降级
不要因 localStorage 读取异常或解析失败导致整个 i18n 失效:
- 用
try...catch包裹JSON.parse - 解析失败时返回空对象
{},让业务层 fallback 到默认语言或网络请求 - 示例:
try { return JSON.parse(str); } catch { return {}; }

















