离线安装中文包到所有本地用户必须用System Installer并部署至全局扩展目录,而非用户级extensions文件夹;需解压vsix后复制language-pack-zh-hans内容到C:\Program Files\Microsoft VS Code\resources\app\extensions\(Windows)等对应路径,并确保各用户首次启动时生成UTF-8无BOM的{"locale":"zh-cn"} locale.json。

离线安装中文包到所有本地用户,必须用 System Installer + 全局扩展目录
VSCode 本身不支持“一键装给所有用户”的语言包部署,因为语言包本质是扩展,而扩展默认只写入当前用户的 ~/.vscode/extensions/(Linux/macOS)或 %USERPROFILE%\.vscode\extensions\(Windows)。想让所有本地用户都看到中文界面,核心不是复制 .vsix 文件,而是让每个用户首次启动时自动加载同一份语言资源——这只能靠预配置 + 共享路径实现。
- 先确保你用的是 VSCode
System Installer(即VSCodeSetup-x64.exe),不是 User Installer 或 .zip 版;只有 System Installer 才会把 VS Code 安装到C:\Program Files\Microsoft VS Code\(Windows)或/usr/share/code/(Linux)这类全局路径 - 下载匹配版本的官方语言包:
vscode-language-pack-zh-hans-*.vsix(发布者必须是MS-CEINTL,ID 是ms-ceintl.vscode-language-pack-zh-hans) - 解压该 .vsix 文件(它本质是 ZIP),进入
extension/目录,把整个内容复制到全局扩展目录:
— Windows:C:\Program Files\Microsoft VS Code\resources\app\extensions\language-pack-zh-hans
— Linux:/usr/share/code/resources/app/extensions/language-pack-zh-hans
— macOS:需手动挂载 app 包并复制到Contents/Resources/app/extensions/language-pack-zh-hans - 该目录下必须包含
package.json、nls.js和zh-cn子目录(含messages.i18n.json等),否则 VS Code 启动时直接忽略
locale.json 不能写进系统目录,必须由用户自己生成
VSCode 不读取全局 locale.json。每个用户首次启动时,会在自己的用户配置目录下创建 locale.json,内容为 {"locale":"zh-cn"}。你无法提前替所有用户写好这个文件,但可以预置模板并引导自动创建。
- 在用户首次启动前,**不要手动创建**
%APPDATA%\Code\User\locale.json(Windows)或~/.config/Code/User/locale.json(Linux)——VS Code 会拒绝加载非 UTF-8 无 BOM 编码的文件,且若路径不存在或权限不对,它会静默跳过 - 更可靠的做法:用组策略(Windows)或 login script(Linux/macOS)在用户首次登录时执行一次命令:
code --install-extension /path/to/ms-ceintl.vscode-language-pack-zh-hans-*.vsix --force(注意加--force跳过兼容性检查) - 或者,在用户第一次运行 VSCode 前,预先写一个脚本,自动执行:
echo '{"locale":"zh-cn"}' > ~/.config/Code/User/locale.json && chmod 600 ~/.config/Code/User/locale.json(Linux/macOS) - Windows 下可用 PowerShell 一次性初始化所有已有用户:
Get-LocalUser | ForEach-Object { $p = "$env:LOCALAPPDATA\Programs\Microsoft VS Code\resources\app\extensions\language-pack-zh-hans"; if (Test-Path $p) { echo '{"locale":"zh-cn"}' | Out-File "$env:APPDATA\Code\User\locale.json" -Encoding UTF8 } }
远程开发或 WSL 环境下,所有用户 ≠ 所有终端会话
如果你在公司内网用 WSL 或 SSH 连接统一开发机,那“所有本地用户”其实是指所有连接该机器的终端会话。此时语言包必须部署在目标系统(WSL 发行版或远程服务器)的全局路径,并且每个会话首次启动 VS Code Server 时,仍需各自触发 Configure Display Language。
- VS Code Server(
vscode-server)不共享桌面端的语言包缓存,即使你在 Windows 主机装了中文包,WSL 里的code-server仍是英文 - 正确做法:在 WSL 中运行
curl -fsSL https://update.code.visualstudio.com/install.sh | sh安装 server,再用code --install-extension安装语言包到 WSL 的$HOME/.vscode-server/extensions/ - SSH 远程连接时,右下角状态栏点击
SSH: xxx→Install 'Chinese (Simplified) Language Pack' in SSH: xxx,这个操作会把包装进远程用户的~/.vscode-server/extensions/,而非本地 - 关键点:远程环境里没有图形界面时,
Configure Display Language命令不可用,必须手动写$HOME/.vscode-server/data/Machine/locale.json,内容严格为{"locale":"zh-cn"}
验证是否真对所有用户生效,看这三处
别只信右下角状态栏显示 zh-cn——那是最浅层的提示。真正生效要同时满足三个条件,缺一不可:
- 顶部菜单栏(File/Edit/View…)全部是中文,不是部分翻译或混搭
- 命令面板(
Ctrl+Shift+P)里输入任意命令,提示文字全中文(比如 “Preferences: Open Settings (JSON)” 应显示为 “设置:打开设置 (JSON)”) - 设置页面(
Ctrl+,)左侧导航栏、搜索框 placeholder、每个设置项的描述文字,全部为中文;如果某块仍是英文(比如“Extensions”或“Debug”页),说明语言包没加载完整或版本不匹配
最容易被忽略的是:Windows 上杀不干净后台进程会导致新用户启动时复用旧进程的 locale 缓存;Linux/macOS 上 locale.json 若保存为 UTF-8 with BOM,VS Code 会完全无视它——连错误日志都不输出。


















