答案是.vsix包中extension/package.json的"engines.vscode"字段与本地VS Code版本不匹配,需解压修改该字段为兼容范围(如">=1.85.0")、重打包为.vsix后安装,并配置locale.json为{"locale":"zh-cn"}且彻底重启。

VSCode离线安装中文包报“not compatible with VS Code '1.xxx'”
这根本不是网络或权限问题,而是 .vsix 包里 extension/package.json 中的 "engines": {"vscode": "^1.xxx.0"} 字段和你本地 code --version 输出的版本不满足语义化匹配规则。VS Code 启动时直接拒绝加载,连日志都不进。
常见于:刚升级 VS Code 到 1.102.3,但下载的包标的是 "^1.103.0";或你在内网离线环境,用的是为 1.104.0 打的包。
- 别重装 VS Code、别禁用其他插件、别双击安装——这些操作完全绕不开引擎校验
- 必须解压
.vsix→ 修改extension/package.json→ 重新打包 → 再安装 - Windows 下别用资源管理器双击解压再拖拽保存,会破坏 ZIP 结构;用 PowerShell 的
Expand-Archive或 7-Zip
手动修改 .vsix 中的 engines.vscode 字段
.vsix 本质是 ZIP 格式,改一行就能绕过兼容性卡死。关键点在于路径和字段位置:
- 用 7-Zip(Windows)、Archive Utility(macOS)或
unzip(Linux)打开ms-ceintl.vscode-language-pack-zh-hans-*.vsix - 进入
extension/package.json(注意:不是根目录那个package.json) - 找到
"engines": { "vscode": "^1.103.0" }这行,改成你当前能接受的范围,例如:"vscode": ">=1.85.0"(推荐,兼容宽)
或"vscode": "^1.90.0"(若code --version输出是1.90.2) - 保存后,把整个
extension/目录(含子文件)重新打包为 ZIP,再把后缀名改回.vsix
安装后仍不生效?检查 locale.json 和进程残留
即使语言包装上了,VS Code 也不会自动切语言——它只认 locale.json 里的硬编码标识,并且要求彻底重启:
-
locale.json必须放在用户级配置路径:
Windows:%APPDATA%\Code\User\locale.json
macOS:$HOME/Library/Application Support/Code/User/locale.json
Linux:~/.config/Code/User/locale.json - 内容严格为:
{"locale":"zh-cn"}(小写、连字符、双引号、UTF-8 无 BOM)
别写成zh_CN、ZH-CN、zh-hans或带空格的"zh-cn ",VS Code 会直接忽略 - 后台进程必须杀干净:
Windows:任务管理器中结束所有Code.exe
macOS/Linux:pkill -f "Code Helper"+pkill -f "Electron"
为什么不能直接装旧版 .vsix?
微软已停止为旧版 VS Code 单独发布语言包,Marketplace 页面只保留最新几个版本,历史版本常灰显不可选。即使你从 GitHub Release 找到旧 .vsix,它的 engines.vscode 可能仍写死为 "^1.80.0",而你的 VS Code 是 1.85.1——minor 小版本差一点也会被拒。
更麻烦的是:有些第三方汉化包(比如发布者不是 MS-CEINTL 的 “Chinese Language Pack”)在 VS Code 1.85+ 后基本失效,它们要么没带 vs/nls.js 运行时支持,要么 package.json 里没声明正确的 contributes.localizations 字段。所以与其花时间翻找“刚好匹配”的旧包,不如自己改一行字段。


















