插件开发时locale设置不生效,主因是package.json中显式声明了"localizations"但未提供zh-cn翻译文件,或宿主语言包版本不匹配;需删掉该字段或补全package.nls.zh-cn.json,且确保vscode-language-pack-zh-hans在调试宿主中启用并版本兼容。

插件开发时 locale 设置不生效?先确认 package.json 里没写死 "contributes" 语言字段
VSCode 插件本身默认继承宿主编辑器的语言,但如果你在插件的 package.json 中显式声明了 "contributes": { "localizations": [...] },又没提供 zh-cn 对应的翻译文件,就会导致插件界面仍显示英文,哪怕宿主已设为中文。
- 检查
package.json是否包含"localizations"字段;若不需要多语言支持,直接删掉该字段 - 若需支持中文,必须同步提供
package.nls.zh-cn.json文件,且键名与package.nls.json完全一致 -
vsce package打包时不会校验翻译完整性,缺失条目会回退到英文,但控制台无报错,容易忽略
调试插件时 UI 显示乱码?重点查 vscode-language-pack-zh-hans 是否被覆盖
插件开发常复用本地 VS Code 实例(通过 npm run watch 启动 Extension Development Host),此时宿主语言包版本必须与插件 target 的 VS Code 版本匹配。2026 年主流版本(如 1.96+)已将中文语言包拆分为独立扩展,旧版 vscode-language-pack-zh-hans 可能被自动禁用或降级。
- 打开调试宿主窗口,执行
Ctrl+Shift+P→ 输入Developer: Show Running Extensions,确认vscode-language-pack-zh-hans处于启用状态 - 若显示“已禁用”,右键点击 → “启用”;若版本过低(如 v1.94.x),需手动卸载后从 marketplace 重新安装最新版
- 不要依赖系统区域设置——插件调试环境只读取宿主窗口的
locale配置,而非操作系统语言
中文路径下 vsce publish 失败?绕过 Node.js 默认编码限制
Windows 或部分 Linux 环境中,若项目路径含中文(如 D:\我的插件\my-extension),vsce publish 常因 Node.js 默认字符编码(ANSI/GBK)解析 package.json 出错,报错信息类似 Unexpected token in JSON at position 0。
- 临时方案:将项目移至纯英文路径(如
C:\ext\my-extension)再发布 - 根治方案:启动终端前先执行
chcp 65001(Windows)或设置export NODE_OPTIONS="--icu-data-dir=$(node -e 'console.log(require(\"icu-message-format\").icuDataDir)')"(Linux/macOS) - CI/CD 流水线中务必显式指定
LANG=en_US.UTF-8,否则 GitHub Actions 等默认 locale 可能触发同样问题
插件内调用 vscode.env.language 返回 en?别信开发机的系统语言
插件代码中读取 vscode.env.language 是为了适配用户当前 UI 语言,但该值**只反映宿主 VS Code 的实际生效语言**,不是开发机系统语言,也不是你本地 settings.json 里写的 "locale": "zh-cn" —— 它必须经重启才生效,且优先级低于语言包扩展。
- 调试时务必在 Extension Development Host 窗口里执行
Ctrl+Shift+P→Configure Display Language,选中文并重启该窗口 - 不要在插件激活逻辑里直接判断
vscode.env.language === 'zh-cn'后加载中文资源——应监听vscode.onDidChangeConfiguration捕获语言变更 - 测试多语言兼容性时,用
vscode.env.openExternal打开链接等操作不受env.language影响,无需额外处理


















