离线安装VSCode中文包唯一可靠路径是通过命令面板执行Extensions: Install from VSIX安装官方MS-CEINTL发布的vscode-language-pack-zh-hans.vsix,再运行Configure Display Language选zh-cn并彻底重启;双击、拖拽或code --install-extension均会静默失败。

离线安装 VSCode 中文包,唯一可靠路径是用 Extensions: Install from VSIX 命令加载官方 .vsix 文件,再手动执行 Configure Display Language 并选 zh-cn,最后彻底重启——双击、拖拽、code --install-extension 在多数场景下都会静默失败。
怎么下载真正能用的 vsix 文件
必须认准发布者 MS-CEINTL 和扩展 ID ms-ceintl.vscode-language-pack-zh-hans。其他名字含“汉化”“中文支持”的第三方包一律跳过,它们不更新、不兼容、甚至会破坏命令面板。
- 去官网页面(如 marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-zh-hans)拉到底部,点
Download Extension—— 下载文件名类似MS-CEINTL.vscode-language-pack-zh-hans-1.104.2025082016.vsix - 右键解压该
.vsix(它本质是 zip),打开package.json,确认"engines": {"vscode": "^1.104.0"}与你本地code --version输出的主版本号匹配(如输出1.104.2,就匹配^1.104.0) - 别信百度网盘链接、exe 封装器、或“一键汉化包”,那些大概率签名失效或已过期
为什么双击 vsix 文件无效
VSCode 自 1.70 起已禁用双击/拖拽加载机制:它只会把文件复制进 ~/.vscode/extensions/(Windows 是 %USERPROFILE%\.vscode\extensions\),但不注册扩展 ID、不触发语言资源加载流程,也不写入激活状态。
- 现象是:右下角仍显示
en,设置页、命令面板、调试视图全英文,且无任何提示 - 验证是否真装上:打开扩展面板(
Ctrl+Shift+X),搜ms-ceintl.vscode-language-pack-zh-hans,若没显示“已启用”,说明只是存了文件,没激活 - 补救方式:先点扩展右上角
⋯ → Uninstall,再走命令面板重装
Configure Display Language 必须手动选 zh-cn
装完语言包 ≠ 界面变中文。Configure Display Language 才是真正告诉 VSCode “用简体中文启动”的开关,它会生成或修正 locale.json,但不会自动刷新 UI。
- 按
Ctrl+Shift+P输入完整命令名Configure Display Language(不能缩写,大小写和空格必须对) - 从列表中明确选
zh-cn(小写、短横线;zh_CN、zh-hans、Chinese全部不识别) - 弹出提示后必须点
Restart(不是Reload Window);若没弹窗,检查后台进程是否残留:Windows 杀光所有Code.exe,macOS/Linux 执行pkill -f "Electron"
手动写 locale.json 是最后防线
当命令面板卡死、UI 崩溃或批量部署时,直接编辑 locale.json 最稳,但它对路径、编码、格式零容忍。
- 路径必须准确:
- Windows:
%APPDATA%\Code\User\locale.json - macOS:
$HOME/Library/Application Support/Code/User/locale.json - Linux:
$HOME/.config/Code/User/locale.json
- Windows:
- 文件内容只能是严格的一行 JSON:
{"locale":"zh-cn"}(UTF-8 编码、无 BOM、无多余空格或逗号) - 不要往
settings.json里加"locale": "zh-cn"—— 这个字段在那里完全不被识别
远程开发(SSH/WSL)需在目标机器上重复整套流程;本地装了中文包,对远程窗口毫无作用。最容易被忽略的是后台进程残留和系统 locale 干预——比如 Windows 开了「Beta: Use Unicode UTF-8」选项,或 macOS 终端里 $LANG 是 en_US.UTF-8,这些都会绕过语言包加载逻辑。


















