不能直接复制已解压的语言包文件夹,因其缺少扩展注册元数据和激活状态,vscode启动时无法识别;唯一可靠方式是下载官方发布的对应版本.vsix文件并用extensions: install from vsix安装。

直接从已安装的 VSCode 里提取中文包用于离线部署,不可靠——它大概率导致新机器上界面仍为英文,因为缺少扩展注册元数据和激活状态。真正能复用的只有官方发布的 .vsix 文件。
为什么不能直接复制 ~/.vscode/extensions/ms-ceintl.vscode-language-pack-zh-hans-* 文件夹?
这个目录下存放的是已解压的语言包资源,但 VSCode 启动时不会自动识别它:它没写入 .metadata 注册记录、没生成扩展 ID 绑定、也不出现在扩展列表中。现象是:右下角语言标识仍是 en,设置页、调试面板全英文,且扩展面板里搜不到该包。
- VSCode 自 1.70 起只认通过
Extensions: Install from VSIX注册的语言包,手动复制等于“放了个没拆封的快递” -
package.json里的"engines": {"vscode": "^1.104.0"}版本约束在复制后不会被校验,容易因版本不匹配静默失效 - 不同系统(Windows/macOS/Linux)的路径结构、权限、符号链接处理方式不同,跨平台拷贝极易出错
如何从一台已汉化的机器“导出可用的离线包”?
不是复制文件夹,而是反向定位并下载对应版本的官方 .vsix 文件——这才是唯一可移植、可验证、可复用的离线载体。
- 在已汉化机器上打开 VSCode,按
Ctrl+Shift+P→ 输入Developer: Show Running Extensions→ 找到ms-ceintl.vscode-language-pack-zh-hans,记下其显示的版本号(如1.118.0) - 访问官网页面:
https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-zh-hans - 拉到页面最底部,点击
Download Extension,浏览器会下载一个形如MS-CEINTL.vscode-language-pack-zh-hans-1.118.0.vsix的文件 - 右键解压该
.vsix(本质是 zip),打开内部package.json,确认"engines"字段与目标机器上code --version输出的主版本号一致(例如目标机是1.118.2,则需匹配^1.118.0)
code --install-extension 在离线机上为何常失败?
命令行安装 .vsix 在部分场景下会静默跳过注册逻辑,尤其当 VSCode 正在运行或后台进程未清空时。这不是命令本身的问题,而是 VSCode 主程序对非 GUI 安装路径的兼容性限制。
- 优先使用命令面板:
Ctrl+Shift+P→Extensions: Install from VSIX→ 选中文件 → 点 Install - 安装前务必彻底终止所有 VSCode 进程:Windows 用任务管理器杀掉全部
Code.exe;macOS/Linux 执行pkill -f "Code Helper"和pkill -f Electron - 安装完成后不要点“Reload Window”,必须执行
Configure Display Language并选zh-cn,再点Restart - 检查
locale.json路径是否正确(Windows:%APPDATA%\Code\User\locale.json),内容必须严格为{"locale":"zh-cn"}(小写、连字符、UTF-8 无 BOM)
真正麻烦的从来不是下载或复制,而是 VSCode 内部语言协商机制对注册状态、版本匹配、locale 格式三者的强耦合。哪怕 .vsix 文件完全正确,只要 locale.json 里写成 zh-CN 或 zh_hans,或者后台残留一个 Code Helper 进程,界面就一定不会变中文。











