Ubuntu 18.04 Server / 如何更改系统语言
要更改 Ubuntu 18.04 Server 的默认语言,需要先准备区域设置数据和翻译包,再用 update-locale 配置并重新登录。本文以韩语 ko_KR.UTF-8 为例,分别检查配置文件中保存的值与当前登录会话实际使用的值。
更改前检查并备份
区域设置(locale)决定程序使用的语言、字符编码、日期与数字格式以及排序规则等。本文针对 Ubuntu 18.04 Server 的终端环境;桌面输入法和键盘布局属于其他设置。
Ubuntu 18.04 LTS 的标准安全维护已于 2023 年 5 月结束。如果您仍在维护现有服务器,请另外确认 Ubuntu Pro 扩展安全维护的覆盖情况或操作系统升级计划。支持范围可参阅Ubuntu 官方发布周期。
使用具有 sudo 权限的账户登录,分别执行以下命令。locale 显示当前会话设置,locale -a 列出可用的区域设置,最后一条命令显示系统默认配置文件。
locale
locale -a
cat /etc/default/locale
如果当前会话显示 LANG=en_US.UTF-8,默认区域设置为美式英语。但下面的变量可能覆盖部分或全部设置,因此也需要检查。
| 变量 | 作用与检查要点 |
|---|---|
LANG |
未单独指定某个类别时使用的默认区域设置。 |
LC_*,例如 LC_MESSAGES |
指定消息、时间或数字等特定类别的设置,在相应类别中优先于 LANG。 |
LC_ALL |
一次覆盖所有区域设置类别。通常适合在执行某条命令时临时指定,而不是作为长期默认值。 |
LANGUAGE |
指定使用 GNU gettext 的程序的消息翻译优先顺序。它并不更改全部日期或数字格式;当消息语言不符合预期时应检查此变量。 |
这些变量的作用、优先顺序以及 LANGUAGE 对消息翻译的影响,可参阅Ubuntu 18.04 locale(7) 手册。如果程序没有韩语翻译,即使使用韩语区域设置,也可能显示英语消息。
更改之前,先备份默认配置文件。如果下面的备份文件名已经存在,请换一个名称,避免覆盖原有备份。恢复时也必须使用实际保存的文件名。
sudo cp -a /etc/default/locale /etc/default/locale.backup
准备韩语区域设置和翻译包
区域设置数据与程序的消息翻译作用不同。仅在配置文件中写入区域设置名称,并不会安装所需数据或所有程序的翻译。先更新软件包列表,再安装区域设置工具和韩语语言包。
sudo apt-get update
sudo apt-get install locales language-pack-ko
sudo locale-gen ko_KR.UTF-8
locale -a
确认每条命令都无错误完成后,再执行下一条。最后的列表中如有 ko_KR.utf8,说明韩语 UTF-8 区域设置可用。列表可能写作 .utf8,配置示例则写作 .UTF-8。locale-gen 用于生成数据,选择系统默认语言还需要另行设置。详见Ubuntu 18.04 locale-gen 手册。
如果找不到软件包或下载失败,应先解决 apt-get update 的错误,检查软件源配置与网络连接。安装失败后只强行指定区域设置名称,可能导致后续命令出现相关警告。
更改系统默认语言
如果希望语言以及日期、数字格式等都默认采用韩语区域设置,可执行以下配置。
sudo update-locale --reset LANG=ko_KR.UTF-8
cat /etc/default/locale
--reset 会从 /etc/default/locale 中删除本次命令未指定的变量,以免文件中已有的 LANGUAGE 或各项 LC_* 覆盖韩语默认值。如果您有意让某些类别采用其他地区格式,请勿直接照用此选项;应保留所需设置,仅修改必要的变量。
配置文件应包含以下条目。文件同时保留自动生成的注释也没有问题。
LANG=ko_KR.UTF-8
update-locale 会检查设置值并修改默认配置文件,但不会改变已运行 shell 中的环境变量。其行为与 --reset 的含义见Ubuntu 18.04 update-locale 手册。
重新登录并验证
如果通过 SSH 连接,请断开后建立新会话。通常无需重启整台服务器,但现有会话和已运行程序可能继续使用原来的环境。不能仅凭重新连接 tmux 或 screen 就认定新登录环境已经生效。系统服务还需要检查各自的环境配置。
在新会话中执行以下命令。
locale
locale charmap
如果显示 LANG=ko_KR.UTF-8,没有被其他值覆盖的类别指向韩语区域设置,字符编码为 UTF-8,即可确认基本配置已应用。LC_ALL= 这样的空值不是错误,而是表示没有统一覆盖所有类别。可结合locale 命令手册检查实际环境。
要比较日期格式,可在两种区域设置下输出同一个日期。以下示例只对各自命令临时指定区域设置,不会修改默认配置文件。
LC_ALL=C date -d '2026-01-02' '+%A %B'
LC_ALL=ko_KR.UTF-8 date -d '2026-01-02' '+%A %B'
第一条命令应输出英语名称 Friday January,第二条则应输出已安装的韩语区域设置中的星期和月份名称。日期显示语言与时区是不同的设置。如果是时间本身不正确,请参阅Ubuntu 18.04 Server 时区设置方法。
设置未生效时检查哪些地方
- 出现区域设置警告:检查
locale -a中是否有配置的区域设置。如果没有,请重新检查软件包安装与数据生成步骤。仅在文件中添加名称并不能补齐缺失的数据。 - 文件配置为韩语,但会话使用其他语言:用
locale检查 LC_ALL、各项 LC_* 和 LANGUAGE。还应检查~/.profile、~/.bashrc、/etc/environment等文件中的单独设置。只修改必要的部分,然后重新登录。 - 只有 SSH 登录时语言变化:客户端的 SendEnv 与服务器的 AcceptEnv 设置可能传递 LANG 和 LC_*。请同时检查客户端区域设置和服务器已生成的区域设置。详见OpenSSH 客户端配置与OpenSSH 服务器配置。不要仅为解决语言不一致就随意修改远程访问设置或重启 SSH。
- 只有部分消息仍是英语:确认程序是否提供韩语翻译,并检查 LANGUAGE 的设置。单条英语消息不能证明整个区域设置配置失败。
- 韩文显示为方框或乱码:检查 SSH 终端的 UTF-8 编码与韩文字体支持。更改服务器区域设置不会在客户端安装字体或韩语输入法。
恢复原有配置或改为英语
要恢复最初状态,请还原更改前创建的备份并重新登录。备份中的单独地区设置也会一并恢复。
sudo cp -a /etc/default/locale.backup /etc/default/locale
cat /etc/default/locale
如果不是恢复旧状态,而是要将美式英语 UTF-8 设为新的默认值,请先生成相应数据,再更新配置。以下命令也会重置默认文件中的单独区域设置,因此运行前应确认需要保留的例外。
sudo locale-gen en_US.UTF-8
sudo update-locale --reset LANG=en_US.UTF-8
重新登录后,用 locale 和 locale charmap 再次确认。如果恢复后仍然只有 SSH 会话显示不同的值,请检查前述用户环境变量与 SSH 传递设置,而不是反复用备份覆盖配置文件。




