code --install-extension 常失败,因VSCode 1.70+仅复制文件而不注册扩展、不校验版本、不加载资源;必须配合手动写入locale.json为{"locale":"zh-cn"}并彻底杀进程重启,且三处界面(菜单栏、设置导航、命令面板)全中文才算生效。

命令行离线安装 VSCode 中文语言包,code --install-extension 在多数场景下不可靠——它不触发扩展注册、不校验版本兼容性、不保证语言资源加载,界面大概率仍是英文。
为什么 code --install-extension 常常失败
VSCode 自 1.70 起已将 code --install-extension 降级为“仅复制文件”行为。它会把 .vsix 解压到 ~/.vscode/extensions/(Linux/macOS)或 %USERPROFILE%\.vscode\extensions\(Windows),但不会:
- 写入
.metadata注册记录 - 激活扩展 ID
ms-ceintl.vscode-language-pack-zh-hans - 触发语言资源初始化流程
结果就是:扩展面板里找不到该包、Configure Display Language 命令搜不到、右下角状态栏始终显示 en。
必须验证 .vsix 文件是否匹配本地 VSCode 版本
官方语言包对 VSCode 主版本号有严格依赖。直接运行 code --version,例如输出 1.95.2,则需确保 .vsix 内部 package.json 的 "engines": {"vscode": "^1.95.0"} 能覆盖该版本。
- 用
unzip -p vscode-language-pack-zh-hans-1.95.2026091501.vsix package.json | grep engines(Linux/macOS)快速检查 - Windows 可右键解压该
.vsix(本质是 zip),再用记事本打开package.json - 若版本不匹配,即使安装成功,VSCode 启动时也会静默跳过该语言包
真正生效的命令行安装路径(仅限批量部署等特殊场景)
如果你确需命令行方式(比如 CI/CD 或脚本化部署),唯一能绕过 GUI 的可靠做法是:先用命令行安装,再强制写入 locale.json,并确保进程干净重启。
- 执行
code --install-extension /path/to/MS-CEINTL.vscode-language-pack-zh-hans-*.vsix - 关闭所有 VSCode 进程:
pkill -f "Code Helper" && pkill -f "Code"(Linux/macOS);Windows 用任务管理器杀光所有Code.exe - 手动创建或覆盖
locale.json:{"locale":"zh-cn"}(注意:UTF-8 编码、无 BOM、无多余空格或逗号) - 路径必须准确:
– Windows:%APPDATA%\Code\User\locale.json
– macOS:$HOME/Library/Application Support/Code/User/locale.json
– Linux:$HOME/.config/Code/User/locale.json
最不该忽略的细节:系统 locale 干预
即使 locale.json 正确、语言包也装好了,某些系统环境仍会强制回退英文:
- Windows 上若启用「Beta: Use Unicode UTF-8 for worldwide language support」且区域设为 English (United States),VSCode 会跳过语言包加载
- macOS/Linux 下若
echo $LANG输出en_US.UTF-8,可临时运行LANG=zh_CN.UTF-8 code启动验证 - VSCode 不读取系统 locale 作为 UI 语言依据,但它会影响底层 ICU 库行为,间接导致部分面板(如终端、调试控制台)无法汉化
最终生效与否,只看三处是否全中文:顶部菜单栏、设置页面左侧导航栏、命令面板(Ctrl+Shift+P)里的提示文字。缺一不可,而其中任意一处失效,往往不是插件问题,而是 locale.json 没写对、进程没杀净、或系统层 locale 拦截了资源加载。


















