唯一确保全系统中文生效的路径是:装语言包、生成zh_CN.UTF-8 locale、写死LANG=zh_CN.UTF-8到系统级配置文件(如/etc/default/locale或/etc/locale.conf),再重启或重登录;仅改shell变量或仅运行dpkg-reconfigure locales而不写配置,90%会回退英文。

直接装完语言包、生成 zh_CN.UTF-8 locale、写死 LANG=zh_CN.UTF-8 到系统级配置文件,再重启或重登录——这是唯一能确保桌面菜单、终端提示、GUI 应用全部变中文的路径。只改当前 shell 的 LANG 或只运行 dpkg-reconfigure locales 而不写配置,90% 情况下重启后就退回英文。
检查是否已安装中文 locale
先确认系统有没有现成的 zh_CN.UTF-8,避免重复操作:
- 运行
locale -a | grep zh_CN.UTF-8,有输出说明已存在 - 若无输出,别急着装包,先看发行版:Ubuntu/Debian 用
apt,CentOS/RHEL 用dnf groupinstall,Arch 需手动启用/etc/locale.gen,Kali 必须用dpkg-reconfigure locales -
zh_CN.utf8(小写)和zh_CN.UTF-8(大写)在部分老系统里是两个不同条目,优先选带连字符和大写的那个
Ubuntu/Debian/Kali 安装与配置关键步骤
Kali 和 Ubuntu 共享同一套 APT 流程,但 Kali 默认不预装 locales,容易卡在第一步:
- 必须先运行
sudo apt update && sudo apt install -y locales language-pack-zh-hans fonts-noto-cjk;漏掉fonts-noto-cjk会导致中文显示为方块 - 接着执行
sudo dpkg-reconfigure locales,用空格选中zh_CN.UTF-8 UTF-8(注意不是zh_CN.GBK),Tab 切换到<OK>回车,再选默认项 - 这步只是生成 locale,**不会自动写入系统默认语言**。必须手动写入:
echo 'LANG="zh_CN.UTF-8"' | sudo tee /etc/default/locale - 最后执行
sudo reboot,仅靠source /etc/default/locale无法让 GNOME/KDE 桌面环境生效
CentOS/RHEL/Rocky Linux 设置要点
Red Hat 系列不依赖单独语言包,而是通过“软件组”一次性拉取 locale + 字体 + 翻译资源:
- 运行
sudo dnf groupinstall "Chinese Support"(RHEL 8+)或sudo yum groupinstall "Chinese Support"(RHEL 7/CentOS 7) - 检查
/etc/locale.conf是否存在,若无则创建;内容只需一行:LANG=zh_CN.UTF-8 - 更推荐用
sudo localectl set-locale LANG=zh_CN.UTF-8,它会自动更新/etc/locale.conf并通知 systemd - 注意:RHEL/CentOS 默认不装中文字体,需额外运行
sudo dnf install glibc-common(提供基础 locale)和sudo dnf install google-noto-sans-cjk-fonts(防乱码)
为什么改了 locale 还是英文?三个高频盲区
界面没变中文,大概率栽在这三处:
-
/etc/default/locale(Debian 系)或/etc/locale.conf(RHEL 系)没写,或写错格式,比如少了引号、用了zh_CN.utf8(小写)而非zh_CN.UTF-8 - 桌面环境(GNOME/KDE/XFCE)有自己的语言设置,独立于系统 locale。GNOME 用户需打开“Settings → Region & Language”,把“Language”拖到顶部;KDE 用户进“System Settings → Locale”手动选
- 终端模拟器(如 gnome-terminal、konsole)可能缓存了启动时的
LANG值,关掉所有终端窗口再开新实例,别只新建标签页
真正麻烦的不是装包,而是各层配置的优先级:shell 环境变量 /etc/default/locale


















