插件开发者不该开 locale: "zh-cn",因为英文界面才能暴露本地化问题:如文案截断、换行错位、翻译缺失、fallback行为不可见等;必须在en-us下验证所有locale场景,并正确配置l10n目录与package.json声明。

VSCode插件开发时,编辑器界面用中文反而会掩盖真实问题——插件的 UI 文本、命令面板提示、调试输出等默认按英文环境设计,强行汉化容易导致本地化测试漏检。
为什么插件开发者不该开 locale: "zh-cn"
插件开发的核心目标是发布后在任意语言环境下稳定运行。VSCode 的 API(如 vscode.window.showInformationMessage)返回的按钮文案、错误提示、命令名称都基于当前 locale 动态生成。如果你本地设为 zh-cn,就看不到英文文案下的截断、换行错位、翻译缺失等问题。实际用户可能用 en-us、ja-jp、ko-kr,甚至自定义 locale,这些场景必须在英文界面下主动验证。
- 调试控制台里
console.log(vscode.env.language)输出的是用户真实环境值,不是你本地设置的locale - 插件市场页面、
package.json中的displayName和description字段不参与 locale 切换,它们始终以原始字符串展示 - 使用
vscode.l10n.t()做国际化时,若未提供对应语言的bundle,会 fallback 到英文源字符串——这个 fallback 行为只有在英文界面下才可见
vscode.l10n.t() 的实际调用陷阱
很多插件作者以为只要加了 vscode.l10n.t("Save file") 就算完成国际化,但漏掉了关键约束:该函数只对预编译进 l10n 目录的字符串生效,且要求 key 严格匹配 JSON 中的键名。中文配置下容易误判“显示正常=已适配”,实则只是 fallback 到了英文原文。
- 必须在插件根目录建
l10n/zh-cn.json,内容形如{"Save file": "保存文件"},否则l10n.t()直接返回英文 - key 不支持变量插值:
l10n.t("File {0} not found", filename)是合法的,但l10n.t(`File ${filename} not found`)会导致无法提取和翻译 - VS Code 1.85+ 要求
package.json显式声明"contributes": { "localizations": [...] },否则l10n目录被忽略
调试时如何快速切换 locale 模拟多语言环境
不需要反复改 settings.json 或重启 VSCode。直接在插件启动命令中注入参数,既快又干净:
- 调试配置
.vscode/launch.json里给runtimeArgs加上--locale=ja-jp,就能在调试窗口看到日文界面效果 - 终端手动启动:执行
code --locale=ko-kr --extensionDevelopmentPath=/path/to/your/ext - 注意:此方式仅影响当前窗口,不影响主编辑器,避免污染日常开发环境
真正难的不是让中文显示出来,而是确保所有语言环境下文案长度变化时 UI 不崩、占位符不乱序、错误码不被翻译成模糊描述。这些细节,只有在英文界面下逐个验证过,才敢说插件做好了本地化准备。


















