离线安装VSCode中文语言包失败,90%是版本校验、locale配置或进程未彻底重启导致静默拒绝;需修改.vsix中package.json的engines.vscode为本地完整版本号,配置正确路径下的locale.json为{"locale":"zh-cn"},并杀掉所有Code Helper进程后重启。

离线安装 VSCode 中文语言包失败,90% 不是网络或文件损坏问题,而是 VSCode 在版本校验、安装路径或 locale 配置环节静默拒绝——它不报错,只“假装装上了”。
code --install-extension 报 “not compatible with Code” 怎么快速修
错误本质是 .vsix 包内 extension/package.json 的 "engines": {"vscode": "^1.85.0"} 与你本地 code --version 输出的版本(如 1.96.3)不满足语义化匹配规则。差一个小版本(比如本地是 1.96.3,但包要求 ^1.97.0)就会被静默拦截。
- 用
unzip -p plugin.vsix extension/package.json | grep engines查看插件声明的最低兼容版本 - 运行
code --version取完整版本号(如1.96.3),不是只取前两位 - 解压
.vsix(别用 Windows 资源管理器双击——会破坏 ZIP 结构),编辑extension/package.json,把"vscode": "^1.85.0"改成"vscode": "1.96.3"(填你本地的完整版本号) - 用
zip命令或 7-Zip 重新打包为 ZIP,再把后缀改为.vsix;确保根目录下仍是extension/子目录结构
拖拽或命令面板安装后仍不生效?检查 locale.json 是否写对且被读取
语言包装成功 ≠ 界面变中文。VS Code 必须同时加载语言资源 + 识别 locale.json + 彻底重启进程。最容易漏的是值写错或路径不对。
- 必须写
{"locale":"zh-cn"}(小写、短横线、双引号包裹),zh_CN、zh-hans、Chinese全部无效 - 路径必须是用户级:
~/.config/Code/User/locale.json(Linux)、%APPDATA%\Code\User\locale.json(Windows)、~/Library/Application Support/Code/User/locale.json(macOS) - 文件编码必须是 UTF-8 无 BOM;内容只能有一行 JSON,不能有多余空格或注释
- 别往
settings.json里写locale字段——1.70+ 版本已忽略该配置
装完还是英文?后台进程没杀干净或远程环境未同步
VS Code 启动时会复用已有 Helper 进程,旧进程带着旧 locale 配置继续跑,新配置根本不会加载。
- Windows:打开任务管理器,杀掉所有
Code.exe和Code Helper.exe - macOS/Linux:执行
pkill -f "Code Helper"和pkill -f "Electron",再启动 VSCode - Remote-SSH / WSL 场景下,宿主机的
locale.json对远程实例完全无效;必须进远程终端,编辑~/.vscode-server/data/Machine/<hash>/locale.json</hash>(<hash></hash>是带字母数字的子目录名) - 如果
~/.vscode-server/data/Machine/下没有子目录,说明 Server 没跑起来——先在远程打开一个文件夹,触发 Server 启动后再试
为什么双击 .vsix 或拖进窗口完全没反应
VS Code 自 1.70 版起已禁用直接加载机制。双击或拖入只是把文件复制到 ~/.vscode/extensions/ 目录,但不会注册扩展 ID、不触发语言资源加载流程,也不会写入激活状态。
- 唯一可靠方式:按
Ctrl+Shift+P→ 输入并执行Extensions: Install from VSIX,手动选中文件 - 虚拟机或云桌面中,别从共享文件夹(如
/mnt/hgfs或Z:\)直接拖;先复制到本地路径(如~/Downloads/),再选 - Windows 上路径含中文或空格?必须用英文双引号包裹,如
"C:\my ext\ms-ceintl.vscode-language-pack-zh-hans-1.96.2.vsix" - 确认 VSCode 窗口有焦点:远程桌面(RDP/TeamViewer)下拖放常被拦截,任务栏图标是否高亮?
最常被忽略的点是:改完 locale.json 后只关了窗口,没杀后台进程;或者在 Remote 场景下只配了本地却忘了配远程的 Machine 目录。这些地方一漏,前面所有操作都白做。


















