执行 locale 命令,若所有关键变量(如 lang、lc_all、lc_time)均显示为 zh_cn.utf-8,则说明系统语言区域设置已生效;否则需检查 locale -a 是否输出 zh_cn.utf8、/etc/default/locale 格式是否正确(含双引号)、gnome 设置是否覆盖(gsettings get org.gnome.system.locale region/language)。

如何确认当前系统语言区域设置是否生效
执行 locale 命令,输出中所有关键变量(如 LANG、LC_ALL、LC_TIME)都应显示为 zh_CN.UTF-8 或类似中文 locale 值。如果出现 LANG=en_US.UTF-8 或 POSIX,说明区域设置未真正生效,图形界面可能显示中文但终端、部分 CLI 工具仍用英文。
手动配置 /etc/default/locale 文件的正确写法
直接编辑该文件时,必须严格使用等号+双引号格式,且只写变量名=值,不加空格或注释行:
LANG="zh_CN.UTF-8" LANGUAGE="zh_CN:zh" LC_ALL="zh_CN.UTF-8"
常见错误包括:LANG=zh_CN.UTF-8(缺引号,shell 解析失败)、LC_ALL=zh_CN.UTF-8(无引号导致 UTF-8 被截断)、在行首或行尾加空格。这些都会导致 update-locale 忽略该行。
-
sudo nano /etc/default/locale编辑后保存 - 运行
sudo update-locale生效(不是 reload,也不是重启服务) - 检查
/var/lib/locales/supported.d/local是否自动生成对应条目
为什么改了 /etc/default/locale 还是英文?
因为 Ubuntu 桌面环境(GNOME)会覆盖系统级 locale 设置。即使 locale 命令返回 zh_CN.UTF-8,GNOME 仍可能从用户级配置读取语言——重点检查:gsettings get org.gnome.system.locale region 和 gsettings get org.gnome.system.locale language。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 若返回
'en_US',需同步设置:gsettings set org.gnome.system.locale region 'zh_CN' - 同时设语言:
gsettings set org.gnome.system.locale language 'zh_CN' - 这些设置优先于
/etc/default/locale,尤其影响登录界面、文件管理器、设置应用本身
LC_* 变量要不要单独设?
一般不需要。设了 LC_ALL="zh_CN.UTF-8" 就会强制覆盖所有 LC_* 子项(如 LC_TIME、LC_MONETARY)。但如果你需要混合行为(比如界面中文、时间显示英文),才单独设:LC_TIME="en_US.UTF-8"。注意:LC_ALL 优先级最高,一旦设定,其他 LC_* 全部失效。
实际调试时,可临时在终端运行 LC_TIME=C date 验证单个变量效果,避免误改全局配置。
真正生效的关键不在“改了多少处”,而在 locale -a | grep zh_CN 是否能列出 zh_CN.utf8 —— 如果没有,locale-gen zh_CN.UTF-8 必须先跑一遍,否则任何配置都是空中楼阁。










