VSCode中文语言包不影响hover内容,因其由语言服务器(如tsserver、Pylance)直接返回原始英文字符串,不经过UI本地化;真正生效的方案只有手写中文JSDoc/docstring、使用中文类型声明库或自定义hover provider。

VSCode 本身不支持“多语言悬停”——悬停内容由语言服务器决定,不是编辑器 UI 层可本地化的部分;所谓“中文悬停”,本质是让语言服务器返回中文注释,而非切换界面语言。
为什么装了中文语言包,hover 还是英文?
Chinese (Simplified) Language Pack for Visual Studio Code 只翻译菜单、设置项、错误提示(如 File not found → 文件未找到),对代码语义层的 hover 内容完全无效。JSDoc、docstring、类型声明这些都来自 TypeScript Server、Pylance、rust-analyzer 等语言服务,它们读的是源码里的原始字符串,不经过 UI 本地化管道。
- 检查右下角语言模式:必须是
typescript,不是javascript或Plain Text,否则语言服务压根不启动 - 确认项目根目录有
tsconfig.json或jsconfig.json(哪怕空文件)——缺它,TS/JS 语言服务只做基础语法检查,不解析 JSDoc - 不要依赖“自动翻译”:VSCode 没有内置 hover 内容翻译引擎,也无配置项开关
真正能让 hover 显示中文的三种方式
可行路径只有三条,且都绕不开“内容来源”本身:
-
手写中文 JSDoc / docstring:在函数上方用
/** */写中文注释,保存后立即生效(注意不能隔空行) -
用社区维护的中文类型声明:如
@types/node-zh,但需手动安装、版本易脱节,npm install @types/node-zh后还要在tsconfig.json的typeRoots中显式加入路径 -
替换语言服务器行为:通过插件注册
vscode.languages.registerHoverProvider,拦截原始 hover 并注入翻译逻辑(需自行调用翻译 API 或查本地映射表,性能与可靠性风险高)
Python 和 TypeScript 的关键配置差异
不同语言的悬停行为受扩展配置强约束,不能一概而论:
- TypeScript:启用
typescript.preferences.includePackageJsonAutoImports可增强第三方包导入推导,但不影响文档语言;typescript.preferences.displayPartsForJSDoc控制是否渲染 JSDoc 中的类型链接,和中英文无关 - Python:Pylance 默认只认 Google/NumPy/Sphinx 风格 docstring;若用
"""中文说明"""但没写Args:字段,Pylance 可能只显示函数签名,不展开参数说明 - 两者共性:hover 内容不会热更新——改完注释必须保存文件,语言服务才会重新解析
别碰的“伪方案”和调试盲区
很多尝试最终失败,是因为卡在不可见的链路上:
- 禁用 Copilot、TabNine 等 AI 插件再测试:它们常劫持 hover 提示却不报错,导致你以为是配置问题
- 不要在
settings.json里搜hover language或translate—— 这些键根本不存在 - Ctrl+K Ctrl+I 手动触发时,光标必须落在标识符内部(如
fetch的f上),停在括号或分号后无效 - 状态栏右下角显示
Language Server ready前,所有 hover 操作都可能返回残缺内容
最常被忽略的一点:hover 是语言服务的输出,不是 VSCode 的 UI 设置项。想让它变中文,得从源头改——要么改注释,要么换类型定义,要么重写 provider。没有快捷键、没有全局开关、也没有“一键汉化 hover”的插件能绕过这个事实。


















