remote-ssh 连接后界面仍为英文,是因为 vs code server 不读本地配置,必须在远程机器的 ~/.vscode-server/data/machine/locale.json 中精确配置 {"locale":"zh-cn"},且文件需 utf-8 无 bom 编码、路径准确、无环境变量覆盖。

Remote-SSH 连接后全是英文?locale.json 必须在远程机器上
本地 VS Code 设成中文,远程连接后界面仍是英文——这不是插件没装对,而是 Remote-SSH 启动的是独立的 VS Code Server 进程,它完全不读你本地的 settings.json 或语言包配置,只认远程机器上特定路径下的 locale.json 文件。
必须先通过 SSH 登录目标服务器(ssh user@host),再检查或创建该文件:
-
~/.vscode-server/data/Machine/locale.json(VS Code 1.85+ 默认路径) - 旧版可能是
~/.vscode-remote/data/Machine/locale.json - 内容严格为:
{"locale":"zh-cn"},不能有注释、空格、BOM、多余引号或大小写错误(比如zh_CN或ZH-CN都无效)
为什么手动改了 locale.json 还是英文?编码和路径最容易错
常见失效不是因为写错了值,而是文件本身被忽略。VS Code Server 对 locale.json 的加载非常敏感,以下三点必须同时满足:
- 文件编码必须是 UTF-8 无 BOM —— 用 VS Code 远程窗口自己新建并保存,别用
echo或记事本直接写入 - 路径必须精确匹配:不能放在
~/.vscode-server/根目录下,也不能放在带哈希后缀的子目录(如abcd1234)里;正确位置是data/Machine/这一层 - 确认没有环境变量覆盖:
VSCODE_LOCALE若被设为en或其他值,会强制覆盖locale.json,可临时在远程终端运行unset VSCODE_LOCALE测试
远程端要不要装中文语言包插件?不要
Remote-SSH 不会把本地已安装的 MS-CEINTL.vscode-language-pack-zh-hans 自动同步过去。VS Code Server 内置了简体中文资源,只要 locale.json 存在且合法,就会自动加载;额外安装插件反而可能引发冲突或加载失败。
验证是否生效的方法很直接:
- 在远程窗口按
Ctrl+Shift+P,输入Developer: Show Running Extensions - 看列表中是否有
ms-ceintl.vscode-language-pack-zh-hans,且状态为Activated - 如果没出现或显示
Inactive,说明 Server 初始化时没找到合法locale.json,优先检查路径和编码
WSL 或自定义 $HOME 下 locale.json 放哪才对?得看实际启动路径
VS Code Server 查找 locale.json 是按固定顺序扫描的,尤其在 WSL、容器或非标准 home 目录下,容易放错位置。最稳妥的方式是先确认 Server 实际根路径:
- 在远程终端运行:
ps aux | grep code - 找到类似
/home/user/.vscode-server/bin/abc123/node /home/user/.vscode-server/bin/abc123/out/server-main.js的进程 - 它的父目录(即
/home/user/.vscode-server/)就是 Server 根路径,locale.json必须放在data/Machine/下,而不是bin/或extensions/里
改完不用重启服务,下次连接自动生效;想立刻验证,就在远程窗口执行 Developer: Reload Window(注意:不是本地窗口)。











