vs code 1.70+ 严格遵循 bcp 47 规范,仅识别小写、短横线分隔的"zh-cn";zh_cn、zh-hans、chinese等均非标准locale值,故静默失效。

locale.json 里只认 {"locale":"zh-cn"} 这一种写法,其他任何变体都会静默失败——不是报错,而是直接当没这回事。
为什么 zh_CN、zh-hans、Chinese 全都不生效
VS Code 自 1.70+ 版本起严格遵循 BCP 47 语言标签规范,locale 值必须是小写、短横线分隔、无空格的标准化代码。zh_CN 是 POSIX 风格,zh-hans 是旧版语言包 ID 格式,Chinese 是自然语言名——三者都不被解析为有效 locale。
-
zh_CN:系统级环境变量常用,但 VS Code 不识别 -
zh-hans:部分老插件或主题曾用此值,1.80+ 已弃用 -
Chinese或Chinese (Simplified):命令面板里显示的是“友好名称”,实际写入文件的是底层代码值zh-cn
locale.json 文件路径和编码必须精准匹配
文件位置错、编码带 BOM、内容多空格,都会导致 VS Code 忽略该文件。它不会报错,也不会 fallback,只是安静地继续用英文。
- Windows 路径:
%APPDATA%\Code\User\locale.json(不是%USERPROFILE%\.vscode) - macOS 路径:
$HOME/Library/Application Support/Code/User/locale.json - Linux 路径:
$HOME/.config/Code/User/locale.json - 文件编码必须是 UTF-8 无 BOM;用记事本保存时选“UTF-8”,别选“UTF-8 with BOM”
- 内容只能是严格的一行 JSON:
{"locale":"zh-cn"},不能换行、不能加注释、不能多逗号
为什么改了 locale.json 还是英文?关键在进程没杀干净
VS Code 启动后会在后台驻留 Code Helper、Code.exe(Windows)或 Electron 进程,它们会缓存旧的 locale 配置。哪怕你关了所有窗口,只要这些进程还在,新配置就永远不会加载。
- Windows:打开任务管理器 → 结束所有
Code.exe和Code Helper进程 - macOS:活动监视器中搜索
Electron和Code Helper,全部强制退出 - Linux:运行
pkill -f "code.*--no-sandbox"或手动 kill 相关进程 - 重启后右下角状态栏应显示
zh-cn;若仍显示en,说明有残留进程在跑
settings.json 里写 "locale": "zh-cn" 完全无效
这个字段在 VS Code 1.70+ 中已被移除支持,写进去不仅不生效,还可能干扰 locale.json 的读取逻辑——尤其当两个文件同时存在且值不一致时,VS Code 会优先忽略 locale.json。
-
settings.json只控制编辑器行为(如缩进、字体、自动保存),不参与界面语言协商 -
locale.json是唯一被读取的语言配置文件,专用于 UI 本地化 - 如果发现
settings.json里有"locale"字段,请直接删掉,避免混淆
最常被忽略的点:终端、调试控制台、Git 输出、部分插件弹窗天生不走 locale.json,它们依赖各自独立的本地化机制。验证是否成功,只盯三处——顶部菜单栏、命令面板占位符、设置左侧导航栏。这三处中文了,locale.json 就算真正起作用了。











