VSCode更新后中文失效,根本原因是locale.json被覆盖,应将"locale":"zh-cn"写入settings.json以确保同步、不被覆盖且优先级最高。

VSCode 更新后 Chinese (Simplified) Language Pack 不生效
不是插件被禁用,也不是语言设置没改——更新后 locale.json 里的 "locale": "zh-cn" 可能被重置为 "en",尤其发生在自动更新 + 后台重启的场景下。
手动改回 zh-cn 能临时恢复,但下次更新又可能丢。根本原因是 VSCode 更新时会覆盖用户数据目录下的部分配置文件(如 Windows 的 %APPDATA%\Code\User\locale.json),而语言包本身不负责写入或锁定该文件。
- 检查方式:打开命令面板(
Ctrl+Shift+P),运行Configure Display Language,看当前值是否为zh-cn - 别依赖“已安装汉化包”就认为语言一定生效——它只是资源提供者,真正起效靠的是 locale 配置
- Mac/Linux 用户注意路径差异:
~/Library/Application Support/Code/User/locale.json(macOS)、~/.config/Code/User/locale.json(Linux)
用 settings.json 强制锁定界面语言
locale.json 易被覆盖,但 settings.json 更稳定,且 VSCode 1.80+ 明确支持在其中声明 "locale" 字段(优先级高于 locale.json)。
直接在用户设置里加这一行即可:
{
"locale": "zh-cn"
}
- 这个字段不会被版本更新覆盖,只要
settings.json本身没被外部工具清空就一直有效 - 如果同时存在
locale.json和settings.json中的"locale",后者胜出 - 无需重启 VSCode,保存后执行一次
Developer: Reload Window即可立即切换
同步插件配置时如何保留 locale 设置
如果你用 GitHub Settings Sync、sync-settings 插件,或 VSCode 内置的 Settings Sync(登录 Microsoft 账户),默认不会同步 locale.json,但会同步 settings.json —— 所以把 "locale": "zh-cn" 放进 settings.json 是同步方案的前提。
- Settings Sync 默认开启
settings同步,确认你的同步项里勾选了User Settings - 不要在多台设备上混用不同语言设置:比如 A 机设
zh-cn,B 机设en,同步后会互相覆盖 - 插件配置(如
extensions列表)和界面语言是两回事,汉化包本身要单独安装,不能靠同步自动装
为什么不用 setlocale 或系统环境变量?
有人试过改系统区域、设 VSCODE_LANG 环境变量,甚至用脚本启动时传参——这些在新版 VSCode(1.75+)基本无效。VSCode 已移除对 VSCODE_LANG 的支持,且不再读取系统 locale 做默认界面语言推断。
-
code --locale=zh-cn启动参数只影响当次会话,无法持久,也不参与同步 - Windows 区域设置、macOS 语言偏好仅影响终端、文件编码等底层行为,不影响 VSCode UI 渲染逻辑
- 唯一可靠、可同步、可版本管理的方式,就是把
"locale": "zh-cn"明确写进settings.json
语言设置看似简单,但它藏在三个地方(locale.json、settings.json、启动参数),而只有 settings.json 同时满足「不被更新覆盖」「可同步」「生效优先级高」这三个条件。漏掉任意一个,都可能在某次更新后突然看到满屏英文。


















