vscode插件中文显示需主动本地化,不能依赖中文语言包;必须用vscode.l10n.t()或package.nls.json管理多语言资源,且中文文件需为package.nls.zh-cn.json,打包时确保嵌入。

VSCode 插件开发本身不依赖中文语言包,但插件的用户界面(如命令提示、弹窗文案、设置项)若需中文显示,必须主动做本地化——vscode.extensionContext 不自动翻译你的字符串,也不读取系统 locale。
插件中显示中文文案的正确方式
你不能靠安装“简体中文语言包”让自己的插件自动变中文。VS Code 的汉化插件只作用于编辑器 UI 层(菜单、侧边栏、命令面板等),不影响插件代码里 vscode.window.showInformationMessage() 这类调用的输出内容。
- 所有用户可见文案必须显式提供多语言资源,通过
vscode.l10nAPI(推荐 v1.87+)或传统package.nls.json方式管理 - 使用
vscode.l10n.t()替代硬编码字符串,例如:vscode.window.showInformationMessage(vscode.l10n.t("操作已完成")) - 对应语言文件需放在
package.nls.zh-cn.json下,且 key 必须与英文版package.nls.json完全一致 - 打包时确保
vsce package能识别并嵌入所有.nls.*.json文件,否则中文资源不会随插件分发
vscode.l10n API 与旧式 nls 的关键区别
vscode.l10n 是 VS Code 1.80+ 引入的新本地化机制,取代了过去易出错的 vscode-nls 工具链。它更轻量、无需额外构建步骤,但要求最低 VS Code 版本为 1.80。
- 旧方式(
vscode-nls)需在webpack.config.js中配置 loader,且容易因路径错误导致中文资源缺失 - 新方式(
vscode.l10n)直接读取同目录下的.nls.*.json,运行时按vscode.env.language自动匹配 - 若插件仍需兼容
vscode ,必须降级使用 <code>vscode-nls并手动调用nls.config() -
vscode.l10n.t()支持参数占位符(如vscode.l10n.t("共 {0} 行", lineCount)),比字符串拼接更安全
中文文案常见失效场景
即使写了 .nls.zh-cn.json,中文仍不显示,大概率是以下某个环节断了:
- 插件未声明
"l10n": "./nls"字段(v1.80+ 必须在package.json中显式指定本地化资源路径) - JSON 文件编码不是 UTF-8 无 BOM,Windows 记事本保存默认带 BOM,会导致解析失败
- key 名在中英文资源文件中不完全一致(比如英文是
"saveConfirm",中文写成"save_confirm") - 用户机器上 VS Code 界面语言确实是
zh-cn,但插件启动时vscode.env.language返回en——这通常是因为插件激活早于语言环境初始化,需延迟到activate()后再读取
真正麻烦的不是加中文,而是让中文在不同 VS Code 版本、不同用户语言设置下稳定出现。别指望“装个语言包就自动好”,每个文案都要走一遍 l10n 流程,漏一个,那个按钮就永远是英文。











