Ubuntu系统语言切换需三步:安装language-pack-zh-hans及language-pack-gnome-zh-hans语言包,执行sudo locale-gen生成zh_CN.UTF-8 locale,再配置/etc/default/locale含LANG="zh_CN.UTF-8"和LC_ALL="zh_CN.UTF-8"并重启登录会话。

Ubuntu 设置系统语言、地区和编码,本质是三件事:装对语言包、生成可用 locale、让环境变量生效。只改 /etc/default/locale 文件但没生成 zh_CN.UTF-8,界面照样是英文;只拖动语言顺序但没装 language-pack-gnome-zh-hans,GNOME 桌面菜单还是英文。下面分步说清楚。
确认并生成 zh_CN.UTF-8 locale
很多用户执行完图形化设置后仍显示英文,根本原因是 zh_CN.UTF-8 这个 locale 根本没在系统里生成出来。运行 locale -a | grep zh_CN,如果无输出,说明它不存在。
- 先编辑
/etc/locale.gen:取消注释这一行:zh_CN.UTF-8 UTF-8 - 再执行
sudo locale-gen—— 这一步必须做,否则后续所有配置都无效 - 验证是否成功:
locale -a | grep zh_CN.UTF-8应该返回一行结果
注意:不要手动添加 zh_CN.GB2312 或 zh_CN.GBK。UTF-8 是现代 Ubuntu 唯一推荐的编码,GB 系列仅用于极老软件兼容,且容易引发终端乱码或 Python 编码错误。
设置系统级 locale 变量(/etc/default/locale)
/etc/default/locale 是系统启动时读取的全局 locale 配置文件,它决定登录前、TTY 终端、systemd 服务等的默认语言环境。
- 用
sudo nano /etc/default/locale打开,确保内容类似这样:
LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_ALL="zh_CN.UTF-8"
不需要写全所有 LC_* 变量(如 LC_TIME),LC_ALL 已覆盖全部。若已有 LC_ALL 行,直接修改值即可;若没有,务必补上 —— 它优先级最高,能避免某些程序(如 cron、apt)忽略 LANG。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 改完保存后,**无需重启**,但需重新登录或运行
sudo systemctl restart systemd-logind让新设置对图形会话生效
补全 GNOME 桌面中文翻译包
即使 locale 正确、/etc/default/locale 正确,Ubuntu 22.04+ 的 GNOME 桌面仍可能部分显示英文(比如「Settings」、「Files」、「Power Off」),这是因为 GNOME 自身的中文翻译未安装。
- 运行:
sudo apt install language-pack-gnome-zh-hans - 顺带装上基础语言包:
sudo apt install language-pack-zh-hans - 装完后执行:
sudo update-language-pack-codes && sudo dpkg-reconfigure locales(后者可跳过,但保险起见建议执行)
这个步骤常被图形界面设置绕过,尤其在最小化安装或服务器版转桌面版时几乎必现。不装 language-pack-gnome-zh-hans,只靠「拖动语言顺序」是没用的。
终端与 SSH 乱码问题怎么解
远程 SSH 登录后中文显示为问号或方块?不是系统 locale 错了,而是客户端没告诉服务器“我支持 UTF-8”。
- 本地 Windows 上用 PuTTY:Connection → Data → Terminal-type string 设为
xterm,Window → Translation → Remote character set 选UTF-8 - 本地 macOS/Linux 用 ssh:确保本地 shell 的
LANG是 UTF-8,且连接时不加-o SendEnv=LANG(默认已发) - 服务器端检查:
echo $LANG应为zh_CN.UTF-8;若仍是en_US.UTF-8,说明你当前会话没继承系统设置 —— 此时在~/.profile或~/.bashrc末尾加export LANG=zh_CN.UTF-8即可
真正容易被忽略的是:SSH 连接建立时,服务器只读取 login shell 的 profile,不会自动加载图形会话的设置。所以终端里 locale 显示不对,大概率是个人配置文件没设好,而不是系统级配置失败。

















