vs code 仅读取用户级配置目录下的 user/locale.json,内容必须为无 bom 的单行 json:{"locale":"zh-cn"},且需彻底退出进程后重启才生效;remote-ssh/wsl 需单独配置远程端 locale.json 并安装对应语言包。

locale.json 文件路径必须严格匹配用户数据目录
VS Code 只读取用户级配置目录下的 User/locale.json,其他位置全无效。工作区里的 .vscode/locale.json 会覆盖它,但不是首选路径;装在 extensions/ 或 settings.json 里完全不被识别。
常见路径:
- Windows:
%APPDATA%\Code\User\locale.json - macOS:
$HOME/Library/Application Support/Code/User/locale.json - Linux:
$HOME/.config/Code/User/locale.json
注意:%APPDATA% 在 Windows 上通常展开为 C:\Users\<username>\AppData\Roaming</username>;macOS 的 Application Support 目录名带空格,别漏掉;Linux 路径中 .config 是隐藏目录,ls -a 才能看见。
locale.json 内容必须是合法、无 BOM 的单行 JSON
VS Code 对这个文件格式极其敏感,错一个字符就静默回退英文。它不报错,也不提示,只当文件不存在。
正确写法只有这一种:
{"locale":"zh-cn"}
必须满足:
-
locale键名和zh-cn值都用英文双引号包裹 - 值必须小写、带短横线(
zh-cn,不是zh_CN、ZH-CN、zh-hans) - 不能有多余空格、逗号、换行或注释
- 编码必须是 UTF-8 无 BOM —— 用 VS Code 自己新建并保存该文件最保险
改完必须彻底退出 VS Code 进程再重启
Reload Window、Ctrl+R、甚至关掉所有窗口都不够。后台的 Code.exe(Windows)、Electron 或 Code Helper(macOS/Linux)进程还在跑,新 locale.json 就不会被重读。
操作建议:
- Windows:打开任务管理器,结束所有
Code.exe进程 - macOS:活动监视器里搜
Code或Electron,强制退出全部 - Linux:
pkill -f "Code Helper\|Electron"或killall code
再手动双击图标或运行 code 命令启动,才能确保加载新配置。
Remote-SSH / WSL 下要单独配远程端 locale.json
你在本地设好了 locale.json,连上 Remote-SSH 或 WSL 后界面仍是英文?这不是同步失败,而是两个独立实例:远程机器上的 VS Code Server 完全不读你本地的配置。
远程端操作步骤:
- Remote-SSH 连接后,按
Ctrl+Shift+P运行Developer: Open User Data Folder,进User/目录新建或编辑locale.json - WSL 中先执行
code --list-extensions确保 Server 已启动,再进~/.vscode-server/data/Machine/<hash>/User/locale.json</hash>(<hash></hash>是随机字符串,需 ls 查看) - 远程端语言包也得单独安装,Microsoft 官方插件不会自动同步过去
真正容易被忽略的是:locale.json 不是“开关”,它是“钥匙”;没装对应语言包,钥匙再准也打不开门——比如设了 {"locale":"ja"} 却没装日语包,VS Code 一样回退英文,且不提醒。











