必须显式设置LC_TIME等区域格式变量并生成zh_CN.UTF-8 locale,仅改LANG无效;需安装中文语言包、取消/etc/locale.gen中zh_CN.UTF-8注释、执行sudo locale-gen,再配置/etc/default/locale使全局生效。

系统语言没变,但日期、数字、货币格式还是英文的?那不是语言包没装全,而是 LC_TIME、LC_NUMERIC 这些区域格式变量没生效——光改 LANG 不够,必须显式设置或触发完整 locale 生成。
为什么“区域格式”单独设置才生效
Ubuntu 的 LANG 只控制默认语言行为,而 LC_* 环境变量(如 LC_TIME、LC_MONETARY)可以覆盖它。图形界面里点「Regional Formats」选「Chinese (China)」,本质是把 LC_ALL 或各 LC_* 设为 zh_CN.UTF-8,并写入用户级配置。如果只改了 LANG,其他 LC_* 仍继承系统默认(通常是 C 或 en_US.UTF-8),时间就还是 “Jan 1, 2026”,不是 “2026年7月9日”。
- 终端里运行
locale查看当前所有 locale 变量值,重点看LC_TIME和LC_PAPER是否为zh_CN.UTF-8 - GNOME 设置里「Regional Formats」改完后,实际会修改
~/.profile或~/.pam_environment,但有时不立即加载 - 某些应用(如 LibreOffice、VS Code)读取的是会话级 locale,需注销重登录才刷新
手动补全 zh_CN.UTF-8 locale(关键步骤)
很多用户点了「Chinese (China)」却无效,是因为系统根本没生成 zh_CN.UTF-8 这个 locale。Ubuntu 安装时默认只生成 en_US.UTF-8,中文 locale 需要显式生成。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 先确认是否已安装中文语言包:
apt list --installed | grep language-pack-zh-hans,没输出就运行sudo apt install language-pack-zh-hans language-pack-gnome-zh-hans - 编辑
/etc/locale.gen,取消注释这一行:zh_CN.UTF-8 UTF-8 - 执行
sudo locale-gen,完成后检查:locale -a | grep zh_CN应该输出zh_CN.utf8 - 若仍无输出,说明语言包未装全,或
locale-gen没执行成功——此时LC_TIME=zh_CN.UTF-8 date也会报错
让区域格式真正全局生效
图形界面设置有时只改了用户层,而 systemd 服务、cron、SSH 登录等走的是系统级 locale,容易漏掉。
- 临时测试:在终端运行
LC_TIME=zh_CN.UTF-8 date,看是否显示中文日期;若失败,说明 locale 没生成成功 - 永久生效:编辑
/etc/default/locale,写入两行:LANG="zh_CN.UTF-8"和LC_ALL="zh_CN.UTF-8"(注意引号) - 不要只设
LC_ALL而不设LANG,否则部分 GTK 应用可能 fallback 到 C locale - 改完后必须重启
systemd-logind或直接重启:运行sudo systemctl restart systemd-logind,再重新登录
最常被忽略的一点:改完所有配置后,locale 命令输出里 LC_MESSAGES 是中文,但 LC_TIME 还是 POSIX ——这说明 zh_CN.UTF-8 没真正启用,不是设置路径错了,而是 locale 文件压根没生成出来。务必先跑一遍 sudo locale-gen 并验证输出。

















