VSCode locale.json必须严格为{"locale":"zh-cn"}单行JSON,路径、编码、大小写任一出错即静默回退英文;仅Configure Display Language命令能确保全链路正确生成并生效。

VSCode 的 locale.json 没有“高级配置”——它只有唯一合法格式:{"locale":"zh-cn"},多一个空格、错一个大小写、放错路径,就静默失效。
为什么改了 locale.json 还是英文?
不是 VS Code 不认,而是它对这个文件极其苛刻,任何偏差都会直接 fallback 到英文,且不报错、不提示。
-
locale.json必须放在用户数据目录的User/子目录下,Windows 是%APPDATA%\Code\User\locale.json,macOS 是$HOME/Library/Application Support/Code/User/locale.json,Linux 是$HOME/.config/Code/User/locale.json;放在.vscode/工作区目录或System/下完全无效 - 内容必须严格为单行 JSON:
{"locale":"zh-cn"}—— 小写、短横线、双引号、无空格、无逗号、无注释、无 BOM - 用记事本、Sublime Text 或带 BOM 的编辑器保存,VS Code 会直接忽略该文件;用 VS Code 自己新建并保存,能天然规避 BOM 问题
- 改完后必须彻底退出所有进程(Windows 查任务管理器里是否还有
Code.exe,macOS 用活动监视器搜Electron),否则旧语言缓存仍在内存中
Configure Display Language 命令到底做了什么?
它不是“选个语言”,而是一套防错机制:自动检查语言包是否就绪、定位到正确路径、写入合法 JSON、确保编码无 BOM。手动编辑容易漏掉其中一环。
- 命令面板输入
Configure Display Language后,列表里只认zh-cn(全小写、短横线);输zh_CN、Chinese、zh-hans都不会匹配,也不会报错 - 选中后,VS Code 会自动打开
locale.json并预填好值;你只需确认、保存、点右下角弹出的Reload Window(不是关掉重开,也不是Ctrl+R) - 如果没装官方语言包,它会跳转扩展页,装完再继续流程;第三方“中文菜单”插件(如
vscode-zh-hans-menu)不参与此流程,也不影响locale.json生效
Remote-SSH / WSL 下 locale.json 必须单独配
本地设好了,远程连上去还是英文?这不是配置失败,而是 Remote-SSH 和 WSL 启动的是独立的 VS Code Server 实例,它读取的是远程机器上的 locale.json,和本地完全无关。
- Remote-SSH 连接后,运行
Developer: Open User Data Folder,进User/目录新建或编辑locale.json,内容仍是{"locale":"zh-cn"} - WSL 中,先执行
code --list-extensions确认 Server 已启动,再进~/.vscode-server/data/Machine/[哈希后缀]/User/locale.json - 语言包也得在远程端单独安装;本地装的插件不会同步过去,也不能替代远程的语言资源
真正容易被忽略的是:VS Code 对 locale.json 的校验是“全有或全无”。哪怕只是文件编码错了、路径里多了个空格、或者用了全角引号,它就当这个文件不存在,安静退回英文——你找不到日志,也看不到错误弹窗。


















