必须在远程机器创建~/.vscode-server/data/machine/locale.json(1.85+)或~/.vscode-remote/data/machine/locale.json(旧版),内容严格为{"locale":"zh-cn"},utf-8无bom编码,且需确认vscode_locale未覆盖、远程语言包已激活。

远程窗口右下角显示“SSH: user@host”,但全是英文怎么办
这不是插件没装好,而是远程 VS Code Server 根本没加载中文语言上下文。Remote-SSH 启动的是独立进程,它不读你本地的 locale.json,也不同步你的插件配置,只认远程机器上特定路径下的 locale.json 文件。
- 必须用 SSH 登录远程服务器(
ssh user@host),再检查或创建文件:~/.vscode-server/data/Machine/locale.json(VS Code 1.85+)或~/.vscode-remote/data/Machine/locale.json(旧版) - 内容只能是严格 JSON 格式:
{"locale":"zh-cn"},不能写成zh_CN、zh-hans或带注释/空格 - 文件编码必须为 UTF-8 无 BOM —— 用 VS Code 远程窗口自己新建并保存,别用记事本或 vim 直接 echo 写入
- 改完不用重启服务,下次连接自动生效;如果想立刻验证,执行
Developer: Reload Window(在远程窗口里,不是本地)
为什么本地装了中文包,远程还是英文?
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 - 如果没激活,大概率是
locale.json路径错(比如放在~/.vscode-server/根目录下)、内容非法,或远程用了 Snap 版 VS Code(沙盒限制导致资源加载失败) - 临时调试可用命令强制注册:
code --install-extension MS-CEINTL.vscode-language-pack-zh-hans --force,但生产环境应避免
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的进程,其父目录就是 Server 根路径 - 正确路径是:
~/.vscode-server/data/Machine/下某个带哈希后缀的子目录(如abcd1234...)里的locale.json,不是~/.vscode-server/根目录 - 如果用 WSL,确保
~指向的是 Linux 用户家目录(/home/xxx),而非 Windows 的/mnt/c/Users/xxx - 检查
~/.ssh/config中的HostName和User是否匹配实际登录用户,否则 Server 可能以错误用户身份启动,读取错的家目录
免密登录配好了,但汉化仍失败的隐蔽原因
很多人以为只要 SSH 连得上,路径就一定对。实际上,Remote-SSH 有时会因权限或环境变量绕过预期路径,导致 locale.json 被忽略。
- 检查
~/.ssh/config文件权限:必须是600(chmod 600 ~/.ssh/config),否则 VS Code 可能拒绝读取 - 确认远程
VSCODE_LOCALE环境变量未被设为en:在远程终端执行echo $VSCODE_LOCALE,若有输出,需在~/.bashrc或~/.profile中 unset 它 - 某些发行版(如 Ubuntu Server 最小安装)默认不带
locales包,导致locale -a | grep zh_CN为空,虽不影响 VS Code,但可能干扰其他依赖 locale 的工具 - 最可靠的兜底方式:连接后直接点击右下角显示的
en,从弹出菜单选zh-cn—— 这会强制在当前远程会话中写入正确配置,比手动编辑更稳
locale.json 存在且内容合法、Server 进程读到了它、没有环境变量或权限问题把它屏蔽掉。路径细节和编码格式,是绝大多数人卡住的地方。











