VSCode悬浮提示默认不支持翻译,因函数签名、类型定义等由语言服务器(如tsserver、Pylance)直接返回原始英文字符串,VSCode仅渲染而不翻译;需借助Translate Dict、Comment Translate等插件实现双语hover或注释翻译。

VSCode 的悬浮提示(Hover)默认不支持翻译
VSCode 自身没有内置英文 Hover 翻译功能,所有 hover 内容(比如函数签名、类型定义、文档注释)都原样显示语言服务提供的原始文本。你看到的英文,是 TypeScript Server、Python Language Server 或其他 LSP 提供的,VSCode 只负责渲染——它不会、也不能自动调用翻译 API 或替换文字。
可用的替代方案:插件 + 外部翻译服务
目前较稳定的做法是安装支持「选中翻译」或「Hover 增强」的插件,并配合本地/在线翻译后端。主流组合有:
-
Chinese (Simplified) Language Pack for Visual Studio Code:只翻译界面菜单和设置项,不影响 Hover 内容 -
Translate(作者:Alex Xu):支持右键选中文字 → 翻译,但不自动触发 Hover 翻译 -
Hover Translate(作者:YurinMax):真正挂钩hover事件,在悬浮框下方追加翻译行,依赖DeepL/Google Translate/Microsoft TranslatorAPI
注意:Hover Translate 需要手动配置 translate.engine 和对应 API Key(如用 DeepL,必须注册获取 DEEPL_AUTH_KEY),免费额度有限;Google 翻译接口在部分地区不稳定,可能返回 429 Too Many Requests。
为什么不能直接 patch TypeScript Server 的 hover 文本?
因为 Hover 数据由语言服务器(如 tsserver)生成并序列化为 JSON-RPC 消息发给 VSCode,属于跨进程通信。VSCode 插件运行在前端 renderer 进程,无权拦截或修改 LSP 响应体——只能在收到后再做二次处理(即“渲染时叠加翻译”)。这也是所有 Hover 翻译插件都略显延迟、偶尔错位或漏译的根本原因。
典型表现包括:
- 鼠标刚悬停时只显示英文,0.5–1 秒后才出现翻译行
- 复杂泛型签名(如
Promise<record array number>></record>)被截断或格式错乱 - 内联注释中的代码块(```ts)不参与翻译,仅纯文本段落被处理
更轻量的折中做法:快捷键触发局部翻译
如果你只是偶尔需要查某个 API,比装 Hover 插件更可靠的方式是:
- 把光标停在符号上,按
Ctrl+K Ctrl+I(Windows/Linux)或Cmd+K Cmd+I(macOS)唤出 Hover 面板 - 按
Ctrl+C复制整个 Hover 文本(含签名 + doc) - 粘贴到浏览器翻译页,或用系统级划词翻译工具(如 Windows PowerToys 的
Quick Accent、macOS 的Raycast+ Translate 插件)
这种方式规避了网络请求、API 配额和插件兼容性问题,尤其适合离线环境或对隐私敏感的代码库。唯一代价是多按两下键。
Hover 翻译不是开箱即用的功能,它始终在「自动化程度」和「稳定性/准确性」之间妥协。真正在大型英文代码库中长期工作的人,往往最后会回到「看懂关键术语 + 快捷复制查」这个路径——毕竟类型名、参数名、错误码本身也得认识,翻译只是辅助,不是替代。


















