vscode多窗口语言不同步是因为语言设置按运行实例隔离,非全局共享:本地、remote-ssh、wsl、dev container各自读取独立路径下的locale.json,且不自动同步。

VSCode 多窗口(包括本地多个实例、Remote-SSH、WSL、Dev Containers)默认不会共享语言设置,每个窗口按各自环境的 locale.json 解析——不单独配置,就必然出现“主界面中文,远程窗口英文”或“新打开的窗口还是英文”的情况。
为什么多窗口语言不同步?
VSCode 的语言设定不是全局进程级的,而是按“运行实例”隔离:
- 本地桌面启动的 VSCode 读取用户目录下的
~/.config/Code/User/locale.json(Linux/macOS)或%APPDATA%\Code\User\locale.json(Windows) - Remote-SSH 启动的是远端机器上的 VS Code Server,它只认远端路径
~/.vscode-server/data/Machine/<hash>/locale.json</hash> - WSL 中的 VS Code Server 实例也走自己独立的
~/.vscode-server/data/Machine/...路径,和 Windows 主机完全无关 - Dev Container 启动时会挂载工作区配置,但
locale.json不在默认挂载范围内,除非显式复制
Remote-SSH / WSL 窗口怎么设中文?
必须在远程环境里单独部署 locale.json,不能靠本地设置“同步”过去。操作步骤如下:
- 先确保远程机器已安装官方中文语言包:在远程窗口中按
Ctrl+Shift+X,搜索Chinese (Simplified) Language Pack for Visual Studio Code并安装(发布者必须是Microsoft) - 在远程终端中执行:
code --list-extensions | grep zh-hans,确认返回类似ms-ceintl.vscode-language-pack-zh-hans - 进入远程
locale.json路径:mkdir -p ~/.vscode-server/data/Machine/ && nano ~/.vscode-server/data/Machine/locale.json - 写入且仅写入这一行:
{"locale":"zh-cn"},保存为 UTF-8 无 BOM 编码 - 回到 VSCode 远程窗口,执行命令
Developer: Reload Window(不是关闭重连,也不是 Ctrl+R)
注意:如果远程是 Alpine Linux 或某些精简发行版,可能缺少 glibc 相关依赖,导致语言包加载失败——此时需改用 code --disable-gpu --no-sandbox 启动排查。
多个本地窗口如何保持一致?
只要所有本地窗口都由同一用户启动、没被工作区级配置覆盖,它们就共用同一个 locale.json。但容易踩的坑有:
- 误把
locale.json放到项目根目录的.vscode/locale.json:这是工作区级配置,只对当前文件夹生效,对其他窗口无效 - 用快捷方式带参数启动(如
code --user-data-dir="D:\vscode-test"):它会绕过默认用户目录,读取指定路径下的locale.json - 系统存在多个 VSCode 进程残留(尤其 Windows 上后台的
Code Helper):旧进程可能缓存了英文 locale,新窗口继承旧状态;建议任务管理器中结束全部Code.exe和Code Helper后再开
Dev Container 或 GitHub Codespaces 怎么设?
这类环境默认不继承宿主机语言设置,需在容器启动前注入。推荐做法是在 .devcontainer/devcontainer.json 中加:
{
"customizations": {
"vscode": {
"settings": {
"locale": "zh-cn"
}
}
}
}
但注意:settings 里写 "locale" 是无效的(VS Code 1.70+ 已弃用)。真正起效的是在容器构建后、启动前,通过 postCreateCommand 自动写入 locale.json:
"postCreateCommand": "mkdir -p ~/.vscode-server/data/Machine && echo '{\"locale\":\"zh-cn\"}' > ~/.vscode-server/data/Machine/locale.json"
GitHub Codespaces 用户还需额外确认:账户 Settings → Codespaces → Default editor language 已设为 Chinese (Simplified),否则前端 UI 可能仍显示英文菜单。
最常被忽略的一点:所有远程/容器环境的语言包安装和 locale.json 都必须手动触发,VS Code 不会自动跨环境同步——哪怕你本地设得再完美,远端没配,就是英文。











