VSCode重启后仍英文,根本原因是locale.json未被读取或覆盖:路径必须严格匹配(如Windows为%APPDATA%\Code\User\locale.json)、权限需可读写、内容仅限{"locale":"zh-cn"}(小写短横线、无空格无注释)、且需彻底杀进程再启动,同时确认中文语言包已安装且无更高优先级设置覆盖。

locale.json 写对了,VSCode 重启后还是英文,根本不是文件没保存,而是它压根没读到或读错了。
locale.json 文件路径和权限必须严格匹配
VSCode 只在固定路径下读取 locale.json,且要求当前用户有读写权限。路径错、目录不存在、文件被只读锁定,都会导致静默忽略。
- Windows 路径:
%APPDATA%\Code\User\locale.json(不是%APPDATA%\Code - Insiders\User\locale.json) - macOS 路径:
$HOME/Library/Application Support/Code/User/locale.json(注意Application Support中间有空格) - Linux 路径:
$HOME/.config/Code/User/locale.json(.config是隐藏目录,别漏掉点) - 检查权限:Linux/macOS 下运行
ls -l locale.json,确保输出里有-rw-------或至少-rw-r--r--;WSL 或远程开发中常见挂载卷只读,需用chmod 600 locale.json
JSON 格式稍有偏差就完全失效
VSCode 对 locale.json 的 JSON 格式极其敏感,不报错,但内容无效时直接 fallback 到英文。它不接受注释、尾逗号、全角字符、大小写混用,也不兼容 zh-CN 或 zh-hans。
- 合法内容仅限:
{"locale":"zh-cn"}(注意:双引号必须是英文半角,冒号后无空格,值全小写,无换行无注释) - 常见非法写法:
{"locale": "zh-CN"}(大写 CN)、{"locale":"zh-cn",}(尾逗号)、{'locale':'zh-cn'}(单引号)、{"locale": "zh-cn" // 注释} - 别用记事本或富文本编辑器保存,优先用 VSCode 自己打开并保存,或终端执行:
echo '{"locale":"zh-cn"}' > locale.json
更高优先级的设置正在覆盖 locale.json
VSCode 的语言配置优先级是:启动参数 > 工作区 .vscode/settings.json > 用户级 locale.json。你改了 locale.json,但其他地方写了 "locale": "en",照样回退英文。
- 检查当前打开的项目根目录下是否有
.vscode/settings.json,搜索是否含"locale"字段 - 检查你是怎么启动 VSCode 的:
code --locale=en、快捷方式目标末尾带参数、或 shell alias 里固化了alias code='code --locale=en',这些都比 locale.json 优先 - Remote-SSH / Dev Containers 场景下,远程机器上的
locale.json才生效,本地改无效;需在远程窗口里重新运行Configure Display Language
插件未安装或资源加载失败
locale.json 是“开关”,中文语言包才是“字典”。开关开了但没字典,VSCode 就静默用英文兜底,不提示、不报错。
- 打开扩展面板,确认已安装官方包:
ms-ceintl.vscode-language-pack-zh-hans(发布者必须是Microsoft) - 如果插件列表里只有名字类似但发布者是第三方的,卸载它——非官方包可能破坏 product.json 或注入异常逻辑
- 插件启用状态为灰色?右键 →
Enable (Workspace)或Enable (Global);仍无效可尝试禁用再启用 - 缓存残留:关掉所有 VSCode 进程后,删掉
$HOME/.vscode/extensions/ms-ceintl.vscode-language-pack-zh-hans-*目录,再重装
最常被忽略的一点:改完 locale.json 后,必须杀掉所有 Code 进程再启动,而不是点「重启窗口」或直接双击图标。托盘图标还在、Remote-SSH 连接未断、WSL 后台服务活着,都意味着旧进程仍在,新配置不会加载。


















