语言

语言

概述

Linux 系统的语言环境配置(Locale)影响系统界面、日志输出和字符编码,对多语言环境下的运维操作有重要影响。本文档涵盖 Alpine、Ubuntu/Debian、CentOS 7 和 Rocky Linux 9 四种主流系统的语言配置方法。

适用场景

  • 系统界面和错误信息本地化(中文化)
  • 应用程序日志输出语言设置
  • 字符编码问题修复(如乱码)
  • 容器或服务器国际化部署

Alpine 系统

查看当前语言

# 查看当前系统语言
echo $LANG
# 示例输出:en_US.UTF-8

# 查看已安装的语言包
locale -a
# 示例输出:C、en_US.utf8、POSIX(如未安装中文语言包,不显示 zh_CN)

安装并配置中文语言

Alpine 默认仅支持英文语言包,中文需要额外安装:

# 步骤1:安装中文语言包
apk add -U musl-locales musl-locales-lang

# 步骤2:设置系统语言环境变量
echo "export LANG=zh_CN.UTF-8" >> /etc/profile.d/lang.sh
echo "export LANGUAGE=zh_CN.UTF-8" >> /etc/profile.d/lang.sh

# 步骤3:使环境变量立即生效
source /etc/profile.d/lang.sh

验证修改结果

echo $LANG
# 正确输出示例:zh_CN.UTF-8

locale
# 正确输出示例:LANG=zh_CN.UTF-8,LC_ALL未设置时继承LANG值

Ubuntu & Debian 系统

Ubuntu/Debian 使用 localelocale-gen 命令管理语言环境:

查看当前语言

# 查看当前系统语言
echo $LANG
# 示例输出:en_US.UTF-8

# 查看当前生效的完整语言环境
locale
# 示例输出:所有 LC_* 变量值

安装并配置中文语言

# 步骤1:安装中文语言包
sudo apt update
sudo apt install -y language-pack-zh-hans

# 步骤2:生成中文语言环境
sudo locale-gen zh_CN.UTF-8

# 步骤3:设置系统默认语言
sudo update-locale LANG=zh_CN.UTF-8
sudo update-locale LANGUAGE="zh_CN.UTF-8"

验证修改结果

locale
# 正确输出示例:LANG=zh_CN.UTF-8

echo $LANG
# 正确输出示例:zh_CN.UTF-8

临时切换语言(当前会话有效)

export LANG=en_US.UTF-8     # 切换至英文
export LANG=zh_CN.UTF-8     # 切换至中文

CentOS 7 系统

CentOS 7 通过 /etc/locale.conf 文件管理系统语言配置:

查看当前语言

# 查看当前系统语言
echo $LANG
# 示例输出:en_US.UTF-8

# 查看 locale.conf 配置
cat /etc/locale.conf
# 示例输出:LANG="en_US.UTF-8"

安装并配置中文语言

# 步骤1:检查可用中文语言包
yum list installed | grep -i chinese
locale -a | grep zh_CN

# 步骤2:若未安装,安装中文支持
sudo yum install -y glibc-langpack-zh

# 步骤3:设置系统语言
sudo localectl set-locale LANG=zh_CN.UTF-8

# 步骤4:使配置生效(或重启系统)
source /etc/locale.conf

验证修改结果

locale
# 正确输出示例:LANG=zh_CN.UTF-8

cat /etc/locale.conf
# 正确输出示例:LANG="zh_CN.UTF-8"

临时切换语言(当前会话有效)

export LANG=en_US.UTF-8
export LANG=zh_CN.UTF-8

Rocky Linux 9 系统

Rocky Linux 9 基于 RHEL 9,同样使用 locale.conf 管理语言配置:

查看当前语言

echo $LANG
# 示例输出:en_US.UTF-8

cat /etc/locale.conf
# 示例输出:LANG="en_US.UTF-8"

安装并配置中文语言

# 步骤1:安装中文支持
sudo dnf install -y glibc-langpack-zh

# 步骤2:检查中文语言包是否可用
locale -a | grep zh_CN

# 步骤3:设置系统语言
sudo localectl set-locale LANG=zh_CN.UTF-8

# 步骤4:使配置生效
source /etc/locale.conf

验证修改结果

locale
# 正确输出示例:LANG=zh_CN.UTF-8

echo $LANG
# 正确输出示例:zh_CN.UTF-8

各系统命令速查表

操作 Alpine Ubuntu/Debian CentOS 7 Rocky 9
查看当前语言 echo $LANG echo $LANG echo $LANG echo $LANG
查看所有语言包 locale -a locale -a locale -a locale -a
安装中文包 apk add musl-locales apt install language-pack-zh-hans yum install glibc-langpack-zh dnf install glibc-langpack-zh
生成中文语言 无需生成 locale-gen zh_CN.UTF-8 无需生成 无需生成
设置系统语言 写入 /etc/profile.d/lang.sh update-locale LANG=zh_CN.UTF-8 localectl set-locale LANG=zh_CN.UTF-8 localectl set-locale LANG=zh_CN.UTF-8
配置生效 source /etc/profile.d/lang.sh source /etc/default/locale source /etc/locale.conf source /etc/locale.conf

常见问题与注意事项

修改后无法显示中文

检查是否已安装中文字体(尤其是 Web 应用和终端显示):

# Ubuntu/Debian
apt install -y fonts-wqy-microhei fonts-wqy-zenhei

# CentOS / Rocky
yum install -y wqy-microhei-fonts wqy-zenhei-fonts

# Alpine
apk add font-wqy-microhei

locale 命令报错

# 报错示例:locale: Cannot set LC_CTYPE to default locale: No such file or directory

# 解决方案:重新生成语言包
sudo locale-gen zh_CN.UTF-8

SSH 会话仍显示英文

退出当前会话重新登录,或检查 /etc/ssh/sshd_config 中是否配置了 AcceptEnv LANG LC_*,如有则注释后重启 SSH。

容器内语言配置持久化

在 Dockerfile 中添加:

ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8

或在 docker-compose.yaml 中:

environment:
  - LANG=zh_CN.UTF-8
  - LANGUAGE=zh_CN:zh
  - LC_ALL=zh_CN.UTF-8

参考链接