vs code v1.80+ 严格校验 locale.json 合法性,注释、大小写错误(如 zh-cn)、中文引号、bom 头、多逗号或非用户级路径均导致静默忽略,仅加载严格符合 {"locale":"zh-cn"} 的用户级文件。

VSCode 更新后 locale.json 配置失效,不是文件写错了,而是新版本(v1.80+)对 JSON 合法性、路径优先级和加载时机做了更严格限制——它会静默跳过非法内容,回退英文,且不报错、不提示。
为什么改了 locale.json 还是英文?
根本原因是 VS Code 启动时拒绝加载该文件,常见触发点有:
-
locale.json里写了注释(如// zh-cn),JSON 标准不支持,整文件被忽略 - 值写成
"zh-cn"(小写)或"zh_CN",但 v1.89+ 要求必须是"zh-CN"(大写 CN) - 文件用了中文引号
“”或单引号'zh-CN',或末尾多逗号:"locale": "zh-CN", - 文件编码带 BOM 头,或保存为 UTF-8 with BOM,VS Code 拒绝解析
- 你改的是工作区级
.vscode/locale.json,而 VS Code 只读用户级路径下的那个
如何验证 locale.json 是否被真正加载?
别猜,直接看 VS Code 启动时是否读到了它:
- 按
Ctrl+Shift+P→ 输入Developer: Toggle Developer Tools→ 切到 Console 标签页 - 重启 VS Code(彻底退出再开),观察是否有类似
languagePack: loaded zh-CN的日志 - 若看到
Failed to load language pack或压根没相关日志,说明locale.json没被识别或语言包未就绪 - 更直接的验证:清空
settings.json内容为{},只保留locale.json,再重启。如果仍是英文,问题一定出在locale.json自身
更新后配置冲突的实战修复步骤
跨版本更新常导致旧配置残留干扰,按顺序操作才能断根:
- 彻底退出 VS Code:Windows 查任务管理器杀光
Code.exe,macOS 看活动监视器清掉 Electron 进程 - 关闭 Settings Sync:左下角齿轮 →
Settings Sync: Turn Off and Reset Local State(只登出不管用) - 删掉所有非用户级的
locale.json:检查.vscode/工作区目录、%APPDATA%\Code\根目录等位置,只留用户级路径下的那个 - 用 VS Code 自身打开
locale.json(命令面板 →Preferences: Configure Language),确保内容是严格一行:{"locale":"zh-CN"},无空格、无注释、无 BOM - 确认已安装官方语言包:
Chinese (Simplified) Language Pack for Visual Studio Code(发布者 Microsoft,IDms-ceintl.vscode-language-pack-zh-hans),版本 ≥1.89.2026052801
Remote-SSH / WSL 用户特别注意
本地配得再好,远程窗口也不会继承——它有自己的 locale.json 和语言包:
- 连接远程环境后,先运行一次
Preferences: Configure Language,确保远程端生成了正确的locale.json - 远程扩展面板中,必须单独安装中文语言包(不能靠本地同步)
- 检查远程终端执行
locale,若输出LANG=en_US.UTF-8,需在远程~/.bashrc或~/.zshrc中加export LANG=zh_CN.UTF-8(仅影响终端内命令行提示,不影响 VS Code UI)
最常被忽略的是:以为“重载窗口”等于重启,其实它不重建语言环境;以及以为删了 settings.json 里的 "locale" 就够了,但新版根本不读那一行——locale.json 是唯一入口,且必须由 VS Code 自己写入或手动校验到字节级合法。











