code --list-extensions仅显示已安装扩展id,不表示语言包已启用;真正生效需locale.json存在且内容为{"locale":"zh-cn"},并经require('vscode').env.language返回"zh-cn"验证。

code --list-extensions 能看到中文包但不等于已启用
执行 code --list-extensions 只会列出所有已安装扩展的 ID,包括未启用或注册失败的语言包。你可能会看到 ms-ceintl.vscode-language-pack-zh-hans 出现在列表里,但这只说明 .vsix 文件被复制进了 ~/.vscode/extensions/ 目录,不代表它已被 VS Code 主程序识别为可用语言资源。
真正判断是否注册成功:查命令面板能否调出 Configure Display Language
离线环境下没有图形界面反馈,最可靠的验证方式是启动 VS Code 后手动触发该命令:
- 按
Ctrl+Shift+P打开命令面板 - 输入
Configure Display Language—— 如果完全搜不到,说明语言包没注册进扩展系统,code --list-extensions显示的只是“假安装” - 若能搜到但选
zh-cn后无反应,检查是否残留后台进程:Windows杀光所有Code.exe,macOS杀掉Electron进程,再重试
用 Developer Tools 控制台快速确认 locale 是否生效
如果 VS Code 界面能打开但命令面板异常卡顿,可直接在开发者工具中验证:
- 按
Ctrl+Shift+I(或F1→ 输入Developer: Toggle Developer Tools)打开控制台 - 粘贴运行:
require('vscode').env.language - 返回值是
"en"表示 locale 未生效;返回"zh-cn"才说明配置已加载成功 - 注意:这个值和
settings.json无关,只反映当前运行时实际读取的 locale 配置
locale.json 是唯一能绕过 UI 的权威状态源
当命令面板不可用、UI 崩溃或批量部署时,直接读取配置文件最准:
- 路径必须严格对应系统:
%APPDATA%\Code\User\locale.json(Windows)、$HOME/Library/Application Support/Code/User/locale.json(macOS)、$HOME/.config/Code/User/locale.json(Linux) - 内容只能是标准 JSON:
{"locale":"zh-cn"}(UTF-8 编码、无 BOM、无多余空格或逗号) - 如果该文件不存在,或内容不是这行,或写成了
zh-hans/zh_CN,那无论code --list-extensions输出什么,中文界面都不会出现
locale.json 是否存在且格式正确,以及 require('vscode').env.language 返回值是否匹配。其他一切输出都只是中间状态。











