vscode会静默忽略非法locale.json并fallback至英文;路径须严格为windows:%appdata%\code\user\locale.json、macos:~/library/application support/code/user/locale.json、linux:~/.config/code/user/locale.json;内容仅允许{"locale":"zh-cn"},无注释、无空格、双引号英文、全小写、连字符。

locale.json 文件内容或路径不合法,VSCode 会静默忽略它,直接 fallback 到英文
文件路径必须严格匹配用户级配置目录
VSCode 只读取特定位置的 locale.json,其他任何路径(如项目根目录下的 .vscode/locale.json、工作区设置目录、或系统级配置)都无效:
- Windows:
%APPDATA%\Code\User\locale.json - macOS:
~/Library/Application Support/Code/User/locale.json - Linux:
~/.config/Code/User/locale.json
如果文件放在错的地方(比如 ~/.vscode/extensions/... 或 /usr/share/code/...),VSCode 根本不会看它。
JSON 内容必须是合法且极简的单行
locale.json 不是普通配置文件,VSCode 对其格式极其敏感。只要一个字符出错,整个文件就被丢弃,界面退回英文:
- 必须是纯 JSON:只允许
{"locale":"zh-cn"}(注意双引号、小写、短横线) - 不能有注释(
//或/* */)、不能有多余空格(如"zh-cn"末尾带空格) - 不能用单引号、不能写成
zh_CN/zh-hans/Chinese/en - 不能和其他字段共存(如
{"locale":"zh-cn","foo":1})
验证方式:用 cat locale.json | python3 -m json.tool(Linux/macOS)或在线 JSON 校验器检查是否合法。
配置被更高优先级设置覆盖
即使 locale.json 正确,VSCode 仍可能显示英文——因为别的地方强行指定了语言:
- 启动时加了
--locale=en参数(检查快捷方式“目标”或 shellalias code=) - 当前工作区的
.vscode/settings.json里写了"locale": "en" - 远程开发(Remote-SSH / WSL)中,远程机器上的
locale.json是英文,本地改无效
排查建议:关闭所有文件夹(File > Close Folder),再重启 VSCode;若变中文,说明是工作区设置在作祟。
语言包根本没装或损坏
locale.json 是开关,但中文翻译资源得靠插件提供。没有安装官方语言包,VSCode 读到 zh-cn 也会静默回退:
- 打开扩展面板,搜索
ms-ceintl.vscode-language-pack-zh-hans(发布者必须是 Microsoft) - 确认状态是「已启用」,不是「已禁用」或「安装失败」
- 输出面板(
Ctrl+Shift+U)→ 选Log (Window)→ 搜索zh-cn,应看到Loaded locale zh-cn from ...
如果看到 Failed to load localization 或完全搜不到关键词,重装语言包并清缓存(Developer: Toggle Developer Tools → Console 执行 location.reload())。
最容易被忽略的是:VSCode 的语言加载是一次性初始化过程,后台进程不退出,新 locale.json 就不会被重新读取。哪怕你改了十次,只要没杀掉所有 Code Helper 或 Electron 进程,就永远看不到变化。











