vscode离线汉化必须用官方ms-ceintl.vscode-language-pack-zh-hans的.vsix包,安装后执行configure display language选zh-cn并彻底重启;第三方包因未注册语言服务且硬改dom,必然导致界面异常、乱码或崩溃。

离线安装第三方语言包(比如非官方的 chinese-language-pack 或社区汉化插件)几乎必然导致 UI 显示异常、命令面板乱码、甚至扩展管理器崩溃——因为 VSCode 的语言协商机制只认官方语言包 ID 和标准 locale 标识,第三方包既没注册进核心语言服务,又常硬改 DOM 或覆盖全局 CSS,冲突是设计层面的。
为什么第三方语言包和官方包不能共存
VSCode 启动时会按顺序加载语言资源:先读 locale.json 中的 locale 值,再匹配已安装扩展的 contributes.localizations 字段。官方语言包(ms-ceintl.vscode-language-pack-zh-hans)在 package.json 里明确声明了 "zh-cn" 和 "zh-hans" 两种标识,并与主程序做了签名绑定;而多数第三方包只写 "zh" 或 "chinese",VSCode 直接跳过加载,但其注入的脚本仍运行,结果就是菜单变中文、设置页留英文、右下角状态栏显示乱码。
- 现象:安装后部分界面中文、部分英文,或打开命令面板(
Ctrl+Shift+P)后输入中文关键词无响应 - 根本原因:第三方包未通过
vscode-language-pack-*规范发布,VSCode 不将其纳入语言协商链路,但其自执行 JS 会劫持 DOM 节点,与官方资源发生样式/文本覆盖冲突 - 检查方式:运行
Developer: Toggle Developer Tools→ Console 标签页,搜localization或Failed to load language pack
离线环境下必须用官方 .vsix,且只装一个
唯一安全路径是彻底删除所有非 ms-ceintl 发布者的语言类扩展,只保留官方简体中文包。任何“增强版”“精简版”“适配旧版”都不可信。
- 下载来源必须是官网页面底部的
Download Extension按钮,链接形如https://marketplace.visualstudio.com/items?itemName=ms-ceintl.vscode-language-pack-zh-hans - 文件名必须含
ms-ceintl.vscode-language-pack-zh-hans-前缀,后缀为.vsix,解压后package.json中"engines.vscode"版本要与本地code --version兼容(例如本地是1.104.2,包里必须是"^1.104.0") - 安装前手动清空
~/.vscode/extensions/(Linux/macOS)或%USERPROFILE%\.vscode\extensions\(Windows)下所有带chinese、lang、translate字样的文件夹
locale.json 配置错一个字符就失效
locale.json 是最终开关,但格式敏感度极高。它不是 settings.json,不能混放其他字段,也不能靠编辑器自动补全。
- 路径必须准确:
~/.config/Code/User/locale.json(Linux)、%APPDATA%\Code\User\locale.json(Windows)、~/Library/Application Support/Code/User/locale.json(macOS) - 内容只能是严格 JSON 对象,且仅含
"locale"字段:{"locale": "zh-cn"}—— 注意:双引号、小写、连字符、无空格、无逗号结尾 - 禁止写成
"zh_CN"、"zh-hans"、'zh-cn'(单引号)、{"locale": "zh-cn", "foo": "bar"}(多字段) - 保存编码必须是 UTF-8 无 BOM;用 VSCode 自带的“重新以编码打开”功能确认,别用记事本直接保存
银河麒麟/UOS 等国产系统要额外关三道门
这些系统预装的 VSCode 常被深度定制,离线安装语言包失败往往不是操作问题,而是底层策略拦截。
- 检查是否启用了沙箱策略:运行
code --no-sandbox --disable-gpu启动,若此时能正常安装,则说明是沙箱阻止了 .vsix 解压 - 确认 Electron 版本兼容性:国产系统常锁死 Electron 18.x,而新版语言包要求 Electron 22+;可查
code --version输出末尾的 Electron 版本号,再比对.vsix包内package.json的"engines.electron" - 禁用签名验证(仅限可信内网环境):启动时加参数
--ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure="file://",绕过离线场景下的证书校验卡死
真正麻烦的不是装不上,而是装上后一半中文一半英文还找不到日志报错——因为 VSCode 把语言加载失败当静默降级处理。务必从源头掐断第三方包,用官方 vsix + 正确 locale.json + 彻底清理残留,这三步缺一不可。











