离线安装VSCode中文包失败,90%是因未用Extensions: Install from VSIX命令、engines.vscode版本不匹配或locale.json路径/格式/值错误;必须通过命令面板安装、修改package.json中vscode字段为本地精确版本、配置正确路径下的{"locale":"zh-cn"}并彻底重启。

离线安装 VSCode 中文包失败,90% 不是文件损坏或网络问题,而是 VSCode 在扩展注册、引擎版本匹配或 locale 激活环节静默跳过——它不报错,只留英文界面。
用 Extensions: Install from VSIX 而不是双击或拖拽
VSCode 自 1.70 版起已禁用直接加载机制。双击 .vsix 或拖入窗口只会把文件复制到 ~/.vscode/extensions/(Linux/macOS)或 %USERPROFILE%\.vscode\extensions\(Windows),但不会注册扩展 ID、不触发语言资源加载流程。
- 必须按
Ctrl+Shift+P→ 输入Extensions: Install from VSIX→ 回车 → 选中文件 → 点 Install - 装完后右下角仍显示
en?打开扩展面板搜ms-ceintl.vscode-language-pack-zh-hans,确认状态是“已启用”,不是“已安装但未启用” - 如果之前双击过,先卸载(点击扩展右上角 … → Uninstall),再走命令面板重装
改 package.json 中的 engines.vscode 字段
报 “not compatible with the current version of VS Code” 或卡在 Installing…,本质是 extension/package.json 里声明的最低版本与本地不匹配,VSCode 拒绝加载。
- 运行
code --version,记下完整输出(如1.96.3) - 用
unzip -p your.vsix extension/package.json | grep engines查看原字段,典型值为"vscode": "^1.90.0" - 解压
.vsix(别用 Windows 资源管理器双击;推荐7-Zip或unzip),编辑extension/package.json,将"vscode": "^1.90.0"改成"vscode": "1.96.3"(填你本地的精确版本号) - 重新打包为 ZIP,再把后缀改为
.vsix(不是重命名,是改后缀;确保 ZIP 内结构不变)
locale.json 必须写对路径、格式和值
装成功 ≠ 界面变中文。VSCode 启动时需同时满足:插件已启用 + locale.json 存在且可读 + 值被正确识别。
- 路径必须是用户级:
~/.config/Code/User/locale.json(Linux)、%APPDATA%\Code\User\locale.json(Windows)、~/Library/Application Support/Code/User/locale.json(macOS) - 内容严格为一行合法 JSON:
{"locale":"zh-cn"}(小写、连字符、双引号、UTF-8 无 BOM 编码) - 别写成
zh_CN、zh-hans、Chinese或带空格的"zh-cn ",VSCode 会直接忽略该字段 - 改完后必须彻底退出所有 VSCode 进程(Windows 用任务管理器杀光
Code.exe;macOS/Linux 执行pkill -f "Code Helper"和pkill -f Electron),再启动
Remote-SSH / WSL 场景下要单独配远程 locale.json
你在宿主机上改了 locale.json,虚拟机或远程服务器里打开 VSCode 还是英文?因为 Remote-SSH / WSL 启动的是独立的 VS Code Server 实例,它只读远程环境自己的配置。
- 进远程终端执行
code --list-extensions,确认ms-ceintl.vscode-language-pack-zh-hans已安装 - 定位远程配置目录:
~/.vscode-server/data/Machine/(后面是哈希子目录),进去新建或编辑locale.json,内容仅{"locale":"zh-cn"} - 保存后,在 VSCode 远程窗口中按
Ctrl+Shift+P→ 输入Developer: Reload Window(不是本地窗口!) - 如果
~/.vscode-server/data/Machine/下没有子目录,说明 Server 没跑起来,先打开一个远程文件夹再试
最常被忽略的是:改完 locale.json 后没杀干净后台进程,或者用了旧版 VSCode(≤1.75)——它默认不启用 vs/nls.js 模块,语言包根本无法注入 UI 字符串。


















