locale.json 文件写入失败或格式错误是 VS Code 中文界面不生效的最常见原因:路径必须严格匹配用户级目录、内容须为合法单行 JSON(如{"locale":"zh-cn"})、不可有注释或非法字符,且可能被启动参数、工作区设置、远程配置或系统策略覆盖。

locale.json 文件写入失败或格式错误,是 VS Code 中文界面不生效的最常见底层原因——不是插件没装,而是这个文件根本没被正确创建或读取。
locale.json 路径写错或文件不存在
VS Code 只读取用户级 locale.json,路径必须完全匹配,写错一个字符或放错目录都会静默失效:
- Windows:
%APPDATA%\Code\User\locale.json(不是%LOCALAPPDATA%) - macOS:
~/Library/Application Support/Code/User/locale.json(不是~/Library/Preferences/Code) - Linux:
~/.config/Code/User/locale.json(注意.config是隐藏目录) - 文件必须存在且可写;若用管理员权限启动过 VS Code,该文件可能被设为只读,需手动改权限
JSON 格式非法导致静默忽略
VS Code 对 locale.json 内容极其严格,任何非标准 JSON 都会被跳过,界面自动 fallback 到英文:
- 内容只能是单行合法 JSON:
{"locale":"zh-cn"}(注意双引号、小写、短横线) - 不能有注释(
//或/* */)、不能有多余逗号、不能用中文引号、不能漏冒号后空格 - 值不能是
"zh_CN"、"zh-hans"、"Chinese"或"zh"——只认"zh-cn"(v1.70+)或"zh-CN"(v1.89+ Ozone 渲染下部分版本要求大写) - 若文件为空、含乱码、或被其他工具(如企业策略插件)覆盖,VS Code 不报错,只当它不存在
文件被高优先级配置覆盖
即使 locale.json 正确,VS Code 仍可能显示英文,因为其他配置项强制覆盖了它:
- 启动参数优先级最高:
code --locale=en或快捷方式末尾带--locale=zh-cn会直接覆盖文件设置 - 工作区
.vscode/settings.json里写了"locale": "en"—— 它会盖掉用户级locale.json - 远程开发(SSH/Dev Container)时,远程机器上的
locale.json才生效,本地改了无效 - 某些 IT 管理工具(如 GPO、Jamf)会注入策略锁定 locale,此时需临时断网或关闭策略代理验证
VS Code 进程未彻底退出导致写入失败
执行 Configure Display Language 命令后点 Restart,不代表配置一定生效:
- Windows/macOS 托盘图标仍在运行 → 后台
Code Helper进程未退出 →locale.json不重载 - Remote-SSH 连接未断开 → 远程端进程持续运行 → 本地改了也不影响已连接窗口
- WSL 场景下,
code命令可能启动的是 Windows 版本,但配置路径指向 WSL 的~/.config/Code,路径错位 - 验证是否真退出:任务管理器(Windows)或活动监视器(macOS)中搜索
Code,确认无残留进程
真正难定位的是“文件看着对,重启也彻底,但右下角还是 en”——这时候要打开开发者工具(Help > Toggle Developer Tools),在 Console 里搜 locale,看初始化日志里输出的 resolved locale 是什么。它才是 VS Code 实际采纳的值,比你看到的文件更真实。


















