vscode官方中文翻译不准确时,仅扩展自带翻译可本地覆盖,核心ui必须通过官方本地化平台提交修正;需在工作区创建无bom utf-8编码的.vscode/locale.json,键为英文原文、值为修正中文,且仅对支持多语言的扩展生效。

VSCode 官方中文翻译不准确,不能直接改 zh-cn.pak 或核心 package.nls.zh-cn.json——这些文件被签名保护,硬改会导致启动报错 ERR! Invalid locale file signature。唯一安全、可生效的覆盖方式是使用「自定义语言映射」机制,仅对特定字符串做局部修正,且只影响你本地环境。
哪些翻译能被你覆盖?
只有扩展(extension)自带的翻译支持覆盖;VSCode 核心 UI(如菜单栏、设置页标题、命令面板条目)无法用此法修改,必须走官方本地化平台提交 PR。
- 能覆盖:Jupyter 的「Run Cell」→ 改成「运行当前单元格」、ESLint 插件提示中的「Fix this」→ 「自动修复此项」
- 不能覆盖:「File」菜单、「Toggle Terminal」按钮、「Problems」面板标签等原生界面文字
- 验证方法:右键某文件 → 看菜单项是否来自某个已安装扩展(比如 GitLens 的「Copy Remote URL」),这类才可干预
怎么写自定义映射 JSON 文件?
在工作区根目录下新建 .vscode/locale.json(注意不是用户级 locale.json),内容格式严格为:
{
"zh-cn": {
"Run Cell": "运行当前单元格",
"Fix this": "自动修复此项",
"No tests found": "未发现测试用例"
}
}
关键点:
- 键名必须是英文原文,大小写、空格、标点须完全一致(建议从实际 UI 复制粘贴)
- 值为你要显示的中文,不支持占位符或变量插值
- 该文件只在当前工作区生效;若想全局生效,需复制到每个项目或设为模板
- 改完后必须关闭并重开 VSCode 窗口(
Developer: Reload Window不触发重载)
为什么改了没反应?常见失效原因
自定义映射看似简单,但 VSCode 对加载逻辑非常敏感,以下情况会静默忽略你的 locale.json:
- 文件放在
~/.vscode/或用户设置目录下 —— 只认工作区根目录的.vscode/locale.json - 文件名写成
locale.js、locales.json或带 BOM 的 UTF-8 编码 —— 必须是无 BOM 的 UTF-8 + 正确文件名 - 扩展本身未启用多语言支持(即没调用
vscode.l10n.t()或未声明contributes.menus的本地化键)—— 这类扩展的字符串根本不会进翻译管道 - 你覆盖的是调试器输出或终端命令结果(如
npm run dev报错)—— 这些属于 Node.js / shell 层,和 VSCode 语言映射无关
比手动改 JSON 更稳的替代方案
如果你频繁遇到某扩展翻译不准,且它开源,优先考虑提 PR 而非长期维护本地映射:
- 查该扩展仓库是否有
package.nls.zh-cn.json,搜索对应 key(如jupyter.runCell) - 直接编辑该文件提交 PR,作者合并后所有用户受益,你也不用每次重装都重新配
- 临时应急可用
locale.json,但别把它当成“永久补丁”——它不随扩展更新,容易过期
真正难修的不是错译,而是那些嵌在 WebView、Webview Panel 里的界面,它们用的是纯 HTML/CSS/JS,连 VSCode 的翻译管道都进不去,只能靠浏览器插件或改源码。











