vscode内置中文错译需先区分来源:核心ui错译须通过visual studio code localization portal提交修正,扩展错译可直接编辑其package.nls.zh-cn.json并清除locale-cache后重启生效。

VSCode 内置中文翻译明显错译或语境不符,怎么快速定位并临时修正?
VSCode 的中文翻译由官方本地化项目统一维护,用户无法直接编辑安装包里的 zh-cn.nls.json 文件——但你可以通过「语言包覆盖」机制在本地干预。关键前提是:先确认当前错译来源是 VSCode 核心(vscode)还是某个扩展(如 Python、Remote - SSH),二者修改路径完全不同。
- 错译出现在菜单、设置面板、命令面板(
Ctrl+Shift+P)等基础 UI:属于vscode仓库的package.nls.zh-cn.json,需走官方本地化流程,本地无法热更新 - 错译出现在扩展专属界面(如 Jupyter 小部件、ESLint 提示文案):检查该扩展是否自带
package.nls.zh-cn.json,路径通常为~/.vscode/extensions/author.name-x.x.x/package.nls.zh-cn.json,可直接编辑(重启生效) - 临时验证某句翻译是否被缓存:启动时加
--locale=zh-cn --disable-extensions,排除扩展干扰
注意:vscode 的语言包已编译进二进制资源,修改 resources/app/locales/zh-cn.pak 或解压 .vsix 手动改 JSON 都会触发签名校验失败,导致启动报错 ERR! Invalid locale file signature。
想真正修复 VSCode 官方中文翻译,必须向 vscode-loc 仓库提交 PR 吗?
是的,且必须走微软官方本地化平台 —— 不接受 GitHub 直接 PR 到 vscode-loc 仓库。所有翻译贡献都需经由 Visual Studio Code Localization Portal(基于 Loco)提交,这是硬性流程。
- 进入网站后选择
vscode项目 →Chinese (Simplified)→ 搜索关键词(支持模糊匹配,如输入「debug」能搜到debug.start等键名) - 找到错译条目,点击铅笔图标编辑,提交后进入审核队列;状态变为
Accepted后约 1–2 周随新版本发布 - 修改前务必点开「Context」栏看上下文截图和英文原文,避免脱离场景乱翻(例如
terminal在不同位置应译作「终端」或「终端窗口」) - 不要翻译键名(如
workbench.action.terminal.toggleTerminal),只改message字段值
常见误操作:把 Toggle Terminal 翻成「切换终端面板」——实际 UI 中它只是个按钮,没有「面板」二字;正确应为「切换终端」。
为什么我改了扩展的 package.nls.zh-cn.json,重启后没生效?
VSCode 从 1.80 开始默认启用「语言包缓存」,即使你手动编辑了扩展内的 JSON,也不会自动重载。必须清除缓存并强制刷新。
- 关闭所有 VSCode 窗口
- 删除目录:
~/.vscode/locale-cache/(macOS/Linux)或%USERPROFILE%.vscode\locale-cache\(Windows) - 重新打开 VSCode,按
Ctrl+Shift+P输入Developer: Restart Extension Host - 若仍无效,检查该扩展是否声明了
contributes.configurationDefaults并覆盖了语言设置,此时需在settings.json中显式指定:"locale": "zh-cn"
特别注意:部分扩展(如 GitLens)使用 @cspotcode/vscode-localization 工具链,其翻译键名格式为 gitlens.views.repositories.title,而非传统 vscode 的扁平命名,搜索时需带完整前缀。
参与中文本地化容易被忽略的细节
真正的难点不在翻译本身,而在理解 VSCode 的 UI 交互逻辑和术语一致性。比如:
-
workspace在「文件 > 将工作区另存为」中译「工作区」,但在「设置 > 工作区设置」里必须译「工作区」而非「工作空间」,因后者已被微软中文文档定为workspace trust的专用译法 -
breakpoint统一用「断点」,但conditional breakpoint必须译「条件断点」而非「条件式断点」,后者是旧版错误译法,已在 Loco 中标记为 deprecated - 所有动词开头的命令(如
Copy Path)必须保持「动词+名词」结构,禁用「复制路径」以外的变体(如「将路径复制」),否则破坏命令面板排序逻辑
最常被跳过的一步:提交前用 npm run test:loc(需克隆 vscode-loc 仓库)跑本地校验,它会检查 JSON 格式、占位符({0})是否缺失、双字节标点是否混用全角/半角——这些小问题会导致整批翻译被拒收。











