离线安装vscode中文包必须通过命令面板执行“extensions: install from vsix”,否则文件仅被复制而不注册;需确保locale.json为{"locale": "zh-cn"}、utf-8无bom、位于用户配置路径,且彻底退出进程后重启。

离线安装 VSCode 中文包卡住,基本可以确定是没走对安装路径——VSCode 自 1.70 起已禁用双击、拖放、资源管理器解压等“直觉式”操作,所有离线安装必须经过内置安装器注册,否则文件只是躺在磁盘上,VS Code 根本不认。
为什么拖进窗口或双击 .vsix 没反应
VSCode 不会把拖入的 .vsix 当作待安装包处理,除非满足三个硬性条件:已打开工作区(至少一个文件夹)、窗口有系统焦点、且文件 ZIP 结构完整。更关键的是,它只在命令面板调用 Extensions: Install from VSIX 时才触发扩展注册流程和语言资源加载。其他方式只会静默复制到 .vscode/extensions/ 目录,但不会写入激活状态、不注册 ID、不加载 vs/nls.js 模块。
- 验证是否真装上了:打开扩展面板,搜索
ms-ceintl.vscode-language-pack-zh-hans,若没显示“已启用”,说明根本没注册成功 - 别用 Windows 资源管理器双击解压再重打包——会破坏 ZIP 头,
unzip -l your.vsix第一行应为extension/package.json - macOS/Linux 下注意 Finder 或 Nautilus 的“压缩”功能不是标准 ZIP,务必用
zip -r或 7-Zip 重打包
code --install-extension 报 “not compatible with Code” 怎么修
这个错误不是签名问题,而是 package.json 里 "engines": {"vscode": "^1.92.0"} 和你本地 code --version 输出(如 1.96.3)不匹配。VS Code 只比对主版本号(取前两位),^1.92.0 表示兼容 1.92.x,但不接受 1.96.x,哪怕语义化规则理论上允许。
- 解压 .vsix(用 7-Zip 或
unzip -o xxx.vsix -d tmp/),编辑tmp/extension/package.json - 把
"engines": {"vscode": "^1.92.0"}改成"engines": {"vscode": "1.96.3"}(填你code --version的完整输出) - 重新打包:
cd tmp && zip -r ../fixed.vsix .,再把后缀改为.vsix(不是重命名,是改后缀) - Windows PowerShell 用户可用:
Compress-Archive -Path .\tmp\* -DestinationPath .\fixed.vsix
装完重启还是英文?检查 locale.json 的三处硬约束
VSCode 1.85+ 只认 {"locale": "zh-cn"} 这个值,且必须放在用户级配置路径、UTF-8 无 BOM 编码、进程彻底退出后才生效。写成 zh-hans、zh_CN 或 Chinese 全部无效,也不会报错,只会安静回退英文。
- 路径必须准确:
%APPDATA%\Code\User\locale.json(Windows)、~/.config/Code/User/locale.json(Linux)、~/Library/Application Support/Code/User/locale.json(macOS) - 内容只能有一行:
{"locale": "zh-cn"},不能有多余空格、逗号或注释 - 保存时选“UTF-8 无 BOM”,记事本默认带 BOM,推荐用 VSCode 自己新建并保存
- 改完必须杀掉所有
Code.exe/Code Helper进程,再从开始菜单或 Dock 启动,不能点“重载窗口”
最常被忽略的一点:离线环境下,VSCode 仍会尝试联网校验签名。哪怕你拔了网线,它也可能先发请求、失败后才退到本地加载——而这个 fallback 流程在某些内网环境会被跳过。稳妥做法是断网启动 VSCode,再执行 Extensions: Install from VSIX,不要依赖任何自动重试机制。











