很多用户安装完 VSCode 中文语言包后,发现编辑器的提示和设置界面已经成功汉化,但菜单栏、右键菜单甚至插件界面依然显示英文——这并非安装有误,而是官方语言包的覆盖范围本身就有限。官方中文包仅覆盖了约 85% 的核心 UI 区域,其余部分由于翻译机制的限制,语言包无法生效。
VSCode 菜单仍为英文,但提示和设置已汉化——不是安装问题,是覆盖范围有限
官方中文语言包所能控制的部分,主要围绕 locale.json 配置生效的区域:顶部菜单栏、命令面板(Ctrl+Shift+P)、设置界面(Ctrl+,)、弹窗标题、侧边栏标签等,这些可归为“核心 UI”。然而,像右键菜单、GitLens 按钮、调试器变量视图、终端标题栏等区域,走的完全是另一套渲染机制,语言包无法对其生效。
右键菜单/上下文操作仍是英文?这是 Electron 底层渲染机制决定的
右键菜单这类界面由 VSCode 的“上下文菜单服务”动态生成,底层依赖 Electron 的 Chromium 内核。它并不像主界面那样加载 vs/workbench/contrib/.../nls.zh-cn.js 这类资源文件,而是直接调用原生 API 显示字符串。也就是说,locale.json 根本无法插入翻译。
解决方案并不复杂:安装一个专门补充菜单汉化的插件,例如 Chinese Menu(ID:shengchen.vscode-chinese-menu),它可以覆盖右键菜单、资源管理器快捷菜单以及编辑器上下文项。但有一个注意事项——不要同时启用多个菜单汉化插件(比如 vscode-chinese-menu 和 chinese-menu 同时使用),它们会互相覆盖,反而可能导致部分条目消失。另外,安装完插件后无需重启,但如果你当时正打开着右键菜单,缓存尚未刷新——关闭菜单再重新右键点击,效果就会显示出来。
GitLens、ESLint 等插件界面仍为英文?它们不继承 locale 设置
插件有自己的语言控制规则,VSCode 的 locale 设置仅是一个默认值,并非强制所有插件都遵循。例如 GitLens,你需要在 settings.json 中显式添加 "gitlens.language": "zh-cn"。而 ESLint 的情况更为特殊——它的报错文本实际来自 Node.js 进程本身,与 locale 完全无关;若想让错误提示变为中文,要么借助 eslint-plugin-i18n 这类第三方插件,要么改用支持本地化的 LSP 客户端(例如 typescript-language-server 的 i18n 分支)。至于 Prettier,它本身几乎没有界面文字,但如果发现其错误输出始终为英文,不妨检查 prettier.enable 是否开启,以及 prettier.showOutput 是否为 true——否则提示根本不会出现,这与语言无关。
终端标题、调试控制台、WebView 里全是英文?这不是 bug,是设计限制
这些区域并不在 VSCode 的翻译链路之内,因此不要指望语言包能解决:
- 集成终端的标题栏、新建标签页的文字由 Electron Chromium 直接渲染,VSCode 自身无权接管。
- 调试控制台(Debug Console)显示的是 Node.js 或 Python 解释器自身的错误消息,语言取决于系统的
LANG或LC_ALL环境变量,与locale.json毫无关系。 - 自定义 Editor、Webview Panel、GitHub Pull Request 预览页等,均使用网页技术栈,翻译必须由插件自行实现。VSCode 语言包在这些区域完全无效——它们甚至运行在隔离沙箱的 DOM 环境中,就算想用
document.querySelector注入翻译也无法触及。
归根结底,真正难以处理的不只是菜单,而是那些内嵌在 WebView 中的界面——那才是语言包的“禁区”。
