VSCode中文语言包报错主因是displayLanguage配置被覆盖、CachedData缓存损坏或系统环境变量(如LANG=C)冲突。需依次检查设置优先级、清除缓存、修正环境变量并禁用干扰插件。

VSCode安装中文语言包后报错,基本不是语言包本身有问题,而是displayLanguage配置被覆盖、CachedData缓存损坏,或与系统级环境变量(如LANG、LC_ALL)发生隐性冲突——尤其在WSL、远程SSH或某些Linux桌面环境下。
检查displayLanguage是否被工作区或插件覆盖
VSCode按优先级顺序读取语言设置:工作区 settings.json > 用户 settings.json > 系统默认。哪怕全局设了"zh-cn",只要当前项目目录里有.vscode/settings.json含"displayLanguage": "en",界面就会强制回退英文,且控制台可能刷出Failed to load locale zh-cn。
- 按
Ctrl+Shift+P输入Configure Display Language,确认弹出菜单中已选中zh-cn - 手动打开用户
settings.json(Ctrl+,→ 右上角{}图标),搜索displayLanguage和locale,删掉所有值为"en"、"en-us"的行 - 如果项目用了多根工作区(multi-root workspace),逐个检查每个文件夹下的
.vscode/settings.json
清空CachedData缓存再重试
main.log 里出现 Failed to load locale zh-cn,90% 是缓存未刷新导致的资源加载中断。VSCode升级或语言包更新后,旧缓存仍试图用老路径找中文资源,结果失败并静默回退。
- 完全关闭所有 VSCode 实例(包括托盘进程)
- 定位并删除整个
CachedData文件夹:
Windows:%APPDATA%\Code\CachedData
macOS:~/Library/Application Support/Code/CachedData
Linux:~/.config/Code/CachedData - 重启 VSCode,它会自动重建缓存并重新尝试加载语言包
排查系统级环境变量干扰(Linux/macOS/WSL常见)
在终端启动 VSCode(如执行 code .)时,若系统设置了 LANG=C 或 LC_ALL=C,VSCode 会继承该 locale 并忽略 displayLanguage 配置,直接走 C locale 回退逻辑,导致中文包不加载、界面乱码、甚至插件崩溃。
- 终端执行
env | grep -i "lang\|lc_",检查是否输出LANG=C或类似值 - 若存在,临时修复:在启动 VSCode 前执行
export LANG=zh_CN.UTF-8(Linux)或export LANG=zh-Hans-CN(macOS),再运行code . - 永久修复:把
export LANG=zh_CN.UTF-8加入~/.bashrc或~/.zshrc,但注意不要覆盖PATH或影响其他 CLI 工具
禁用可能劫持 locale 的插件
少数插件(如某些国际化工具、终端增强类插件)会在启动时主动调用 Node.js 的 process.env.LC_ALL = 'C' 或修改 Intl 相关 API,间接破坏 VSCode 的本地化链路。这类问题不会报明显错误,但会导致中文界面间歇性失效。
- 终端执行
code --disable-extensions启动干净环境,观察中文是否正常 - 若正常,运行
Developer: Start Extension Bisect自动二分定位 - 重点关注名称含
i18n、locale、terminal、shell的插件,尤其是非官方发布源安装的
真正难排查的不是“中文包装不上”,而是它在某些终端启动方式下生效、某些方式下失效;或者只在特定工作区出问题——这时候大概率是settings.json层级叠加 + CachedData残留 + 系统环境变量三者咬合出的缝隙,得一项一项排除,不能只改一个地方就以为搞定。











