VSCode插件开发时界面变英文,是因为Extension Development Host作为独立进程不继承主编辑器的locale设置;需通过launch.json添加"--locale=zh-cn"参数、在开发宿主用户目录配置locale.json或确保安装官方中文语言包并调用vscode.l10n.t()适配。

为什么插件开发时 VSCode 界面突然变英文?
因为插件开发环境(如用 yo code 生成的 Extension Development Host 实例)默认继承宿主 VSCode 的 locale 设置,但不自动同步用户级 locale.json 或 settings.json 中的 "locale": "zh-cn"。开发窗口是独立进程,它读取的是自身配置目录下的语言设置,而非你日常使用的那个 VSCode 实例。
常见现象:主编辑器是中文,但按 F5 启动 Extension Development Host 后,新窗口全是英文菜单和提示 —— 这不是插件没汉化,而是开发宿主没激活中文。
- 开发宿主窗口的
locale默认为en,即使你主 VSCode 已设为zh-cn -
Configure Display Language命令在开发宿主中可用,但仅作用于当前窗口,重启后失效(因每次F5都新建一个临时实例) - 扩展调试器(Debug Adapter)的日志、终端输出、弹窗提示等,也依赖该宿主的语言上下文
强制开发宿主使用中文的三种可靠方式
优先级从高到低,推荐按顺序尝试:
-
启动参数法(最稳):在
launch.json的configurations中添加"runtimeArgs": ["--locale=zh-cn"]。例如:{ "configurations": [ { "type": "extensionHost", "request": "launch", "name": "Launch Extension", "runtimeArgs": ["--locale=zh-cn"], "args": ["--extensionDevelopmentPath=${workspaceFolder}"], "outFiles": ["${workspaceFolder}/out/**/*.js"] } ] }此方式绕过所有配置文件,每次F5都生效,且不污染主环境。 -
开发宿主专用
locale.json:找到开发宿主的用户数据目录(Windows 路径类似%APPDATA%\Code - Insiders\User\locale.json,注意是Code - Insiders或Code后缀带- Dev的目录),写入{"locale": "zh-cn"}。该文件只影响开发宿主,不影响主编辑器。 -
修改
package.json的engines.vscode并重装依赖:确保你开发所用的 VSCode 版本 ≥1.80(2026 年主流版本),旧版对zh-cn支持不稳定;若用vscode@next,需确认其locale行为与稳定版一致。
插件代码里如何适配中文环境?
不要在插件逻辑中硬编码中文字符串,而应调用 VSCode 提供的本地化 API:
- 用
vscode.l10n.t()替代直接拼接字符串,例如:vscode.l10n.t("Save configuration")会根据宿主 locale 自动返回 “保存配置” 或 “Save configuration” - 插件的
package.nls.json必须包含"zh-cn"键,且值为对应翻译;否则l10n.t()会 fallback 到英文 - 调试时若发现中文未显示,先检查
package.nls.json是否被正确加载(可临时加console.log(vscode.env.language)验证当前 locale 值) - 避免在
activation阶段就调用l10n.t()—— 此时本地化资源可能尚未就绪,建议延迟到命令触发或 UI 渲染时再调用
容易被忽略的细节
开发宿主窗口右下角显示 en 不代表失败,它只反映当前会话的初始 locale;真正生效要看顶部菜单栏、命令面板提示和设置页导航栏是否为中文。另外,vscode-language-pack-zh-hans 插件必须安装在**主 VSCode** 中,开发宿主不会自动继承插件,它只依赖语言包提供的底层资源文件(这些文件由主编辑器安装后全局部署)。


















