必须执行configure display language命令并选zh-cn后重启vs code,仅安装中文语言包无效;locale.json需由该命令生成且内容为{"locale":"zh-cn"},路径在用户级目录,不可被工作区或远程配置覆盖。

VSCode 语言包装了但界面还是英文
装了 Chinese (Simplified) Language Pack for Visual Studio Code 却没生效,大概率是 locale 设置没同步到 VSCode 启动环境。Windows 上常见于通过开始菜单快捷方式启动,它继承的是系统默认 locale;macOS/Linux 则常因 shell 启动文件(如 ~/.zshrc)里没设置 LANG 或 LC_ALL,导致从终端启动时也显示英文。
实操建议:
- Windows:右键 VSCode 快捷方式 → “属性” → “快捷方式”选项卡 → 点击“打开文件位置”,再右键目标程序 → “属性” → “兼容性” → 勾选“替代高 DPI 缩放行为”,虽不直接相关,但有时能触发 locale 重载;更可靠的是用命令行启动:
code --locale=zh-cn - macOS/Linux:在终端执行
export LANG=zh_CN.UTF-8后再运行code;若想永久生效,在~/.zshrc或~/.bashrc中添加该行,并确保 VSCode 是从该 shell 启动(比如用code .打开项目,而非点击 Dock 图标) - 验证是否生效:按
Ctrl+Shift+P(或Cmd+Shift+P),输入Configure Display Language,看弹出的 JSON 文件中"locale"字段值是否为"zh-cn"
修改 locale 后部分菜单/提示仍是英文
VSCode 的界面语言由 locale 控制,但某些扩展、调试器 UI、终端内命令输出(如 node --version)、甚至 Git 提交信息,都不受此配置影响——它们各自读取操作系统级 locale 或自身硬编码语言。
典型表现:
- 调试面板里的 “Variables”、“Call Stack” 标签变成中文,但断点旁的 “Uncaught Error” 仍为英文(这是 V8 引擎错误消息,无法被 VSCode 本地化)
- GitLens 插件的 hover 提示是中文,但终端里
git status输出仍是英文(因为 Git 自身未配置LANGUAGE=zh_CN) - Python 扩展的 lint 错误(如
pylint)默认输出英文,需单独配置其 locale 或语言参数
所以别指望改一个 locale 就全局汉化——它只管 VSCode 自身 UI 和部分官方扩展的字符串资源。
locale 设为 zh-cn 却出现乱码或方块字
不是语言包问题,而是系统缺少对应字体或字体 fallback 配置异常。VSCode 默认使用系统字体栈,若中文字体未正确注册或优先级过低,就会退到无中文支持的字体(如 DejaVu Sans),导致显示方块。
排查与修复:
- macOS:检查“字体册”中是否禁用了
STHeiti、Heiti SC等系统中文字体;也可在 VSCode 设置里手动指定:"editor.fontFamily": "'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', monospace" - Linux(尤其是 Ubuntu):安装思源黑体:
sudo apt install fonts-noto-cjk,然后重启 VSCode;若仍异常,检查fc-list :lang=zh是否列出可用中文字体 - Windows:极少出现,除非用户手动清除了
simhei.ttf或microsoft-yahei.ttf;可尝试在设置中加"editor.fontFamily": "Consolas, 'Microsoft YaHei', monospace"
多语言项目下 locale 影响代码提示和文档
VSCode 的语言服务器(如 TypeScript Server、Python Pylance)本身不依赖 UI locale,但部分插件(如 Auto Rename Tag、IntelliSense 的某些提示文案)会读取它来决定帮助文本语言。更关键的是:文档注释(JSDoc、docstring)的生成模板、以及内置 snippet 的占位符文字(如 for 循环模板里的 // body),可能随 locale 变成中文,反而干扰英文开发习惯。
建议:
- 团队协作项目中,不要提交
settings.json里的"locale"字段,避免覆盖他人偏好 - 若需中文界面但保留英文代码提示,保持
locale为zh-cn即可——语言服务器返回的类型信息、函数签名等始终是英文(这是协议层约定),只有 UI 文案变中文 - 遇到 snippet 显示中文占位符(如 “循环体” 替代 “body”),可去
~/.vscode/extensions/...对应扩展目录查其snippets/文件,或直接禁用该扩展的本地化支持(如有)
真正难调的不是怎么设 locale,而是搞清哪一层在说话——VSCode UI、扩展前端、语言服务器、终端命令、操作系统库,各自认不同的“中文”。混在一起调,很容易以为设对了,其实只改了一层。











