本文介绍在 TencentOS Server 上进行本地化管理的基础知识及相关配置方法。通过本地化管理,可以使系统更符合用户所在地区的使用习惯。
本地化管理通常涉及以下内容:
语言和地区
系统的语言和地区等设置通过 locale 变量控制。locale 环境变量是一组用于控制本地化设置的变量,影响系统中的语言、字符编码、日期等方面。主要的
locale 环境变量及其作用如下:变量 | 说明 |
LANG | 设置系统的默认语言和字符编码。其他未设置的 LC_* 变量将使用 LANG 变量的值。 |
LC_CTYPE | 控制字符分类和转换,例如字符的大小写转换、字符集和编码等。还影响输入法和终端中的字符显示。 |
LC_NUMERIC | 控制数字的显示格式,例如小数点符号和千位分隔符等。 |
LC_TIME | 控制日期和时间的显示格式,例如星期名、月份名、日期顺序等。 |
LC_COLLATE | 控制字符串比较和排序的规则。影响文件名排序和命令行参数排序等操作。 |
LC_MONETARY | 控制货币的显示格式,例如货币符号、正负数表示等。 |
LC_MESSAGES | 控制系统消息和提示的语言。影响程序的错误消息、帮助信息等文本输出。 |
LC_PAPER | 控制打印和页面设置的默认纸张尺寸。 |
LC_NAME | 控制个人名字的显示格式,例如姓名顺序、姓名缩写等。 |
LC_ADDRESS | 控制地址的显示格式,例如国家名、城市名、邮政编码等。 |
LC_TELEPHONE | 控制电话号码的显示格式,例如国家代码、区号等。 |
LC_MEASUREMENT | 控制度量单位的显示格式,例如公制或英制单位。 |
LC_IDENTIFICATION | 控制元数据的显示格式,例如语言代码、国家代码等。 |
查看当前 locale 配置
locale 配置记录于
/etc/locale.conf 文件,系统默认配置为 LANG="C.UTF-8",在 systemd 初始启动时会读取该文件进行系统环境配置。查看
/etc/locale.conf 文件内容:cat /etc/locale.conf
返回结果如下:
# This is the fallback locale configuration provided by systemd.LANG="C.UTF-8"
通过
locale 命令查看当前 locale 配置,其他未设置的 LC_* 变量都将使用 LANG 变量的值:locale
返回结果如下:
LANG=C.UTF-8LC_CTYPE="C.UTF-8"LC_NUMERIC="C.UTF-8"LC_TIME="C.UTF-8"LC_COLLATE="C.UTF-8"LC_MONETARY="C.UTF-8"LC_MESSAGES="C.UTF-8"LC_PAPER="C.UTF-8"LC_NAME="C.UTF-8"LC_ADDRESS="C.UTF-8"LC_TELEPHONE="C.UTF-8"LC_MEASUREMENT="C.UTF-8"LC_IDENTIFICATION="C.UTF-8"LC_ALL=
列出可用字符集
执行以下命令,列出系统支持的所有 locale 字符集,主要支持中文、英文以及默认的
C.UTF-8:localectl list-locales
返回结果如下:
C.UTF-8en_AU.UTF-8en_BW.UTF-8en_CA.UTF-8en_DK.UTF-8en_GB.UTF-8en_HK.UTF-8en_IE.UTF-8en_NZ.UTF-8en_PH.UTF-8en_SC.UTF-8en_SG.UTF-8en_US.UTF-8en_ZA.UTF-8en_ZW.UTF-8zh_CN.UTF-8zh_HK.UTF-8zh_SG.UTF-8zh_TW.UTF-8
locale 命名规则为:
语言_地区.字符集编码。常见的中文和英文 locale 定义如下:zh_CN.UTF-8:表示语言为中文 zh,地区为中国大陆 CN,字符集编码为 UTF-8。en_US.UTF-8:表示语言为英文 en,地区为美国 US,字符集编码为 UTF-8。查看当前语言和地区设置
查看当前的语言和地区设置,其中
System Locale 指明系统使用的默认 LANG 值,默认为 C.UTF-8:localectl status
返回结果如下:
System Locale: LANG=C.UTF-8VC Keymap: n/aX11 Layout: n/a
说明:
C.UTF-8 采用标准 C 作为语言环境,但字符编码为 UTF-8。字符串排序和比较基于字节值而非特定语言规则,日期、时间和数字格式使用基本的英语表示。使用 C.UTF-8 不依赖特定的本地化设置,可确保程序在不同系统之间具有更好的兼容性和可移植性。本系统使用 C.UTF-8 作为默认 locale。设置系统语言和地区
通常使用
localectl 命令对语言和地区进行设置,不建议直接修改 /etc/locale.conf 文件。1. 将系统的本地化字符集设置为简体中文:
sudo localectl set-locale zh_CN.UTF-8
2. 设置完成后,执行以下命令重启系统使配置生效:
reboot
说明:
重启期间实例将无法正常提供服务,因此在重启之前,请确保实例已暂停业务请求。
如需查看更多参数及信息,请执行
localectl --help。时区
时区用于表示计算机的本地时间与协调世界时(UTC)之间的差异。正确设置时区对于确保系统时间准确、计划任务和日志记录等功能正常运行非常重要。
基本概念
概念 | 说明 |
世界协调时 UTC(Universal Time Coordinated) | 最主要的世界时间标准,以原子时的秒长为基础,与时区无关。 |
时区 | 基于用户所在地区的时间标准。 |
硬件时钟(Real-Time Clock, RTC) | 由主板上电池供电的物理时钟,系统电源掉电后仍可正常运行。 |
系统时钟(System Clock) | 系统启动过程中根据硬件时钟计算初始值,启动后独立于硬件时钟运行。 |
timedatectl 与 date 都是 Linux 系统中用于管理和显示日期和时间的命令,但功能有所不同:命令 | 说明 |
timedatectl | systemd 工具,侧重于管理系统时钟和时区设置,可同时修改系统时间和硬件时间。 |
date | UNIX 工具,主要用于查看和设置当前日期和时间,只会修改系统时间,需配合 hwclock 修改硬件时间。 |
使用 timedatectl
列出当前所有可用时区:
timedatectl list-timezones
返回结果如下(部分显示):
Africa/AbidjanAfrica/AccraAfrica/Addis_AbabaAfrica/AlgiersAfrica/AsmaraAfrica/Asmera...
查看系统当前的日期、时间及时间同步状态:
timedatectl status
返回结果如下:
Local time: Mon 2023-05-08 16:19:13 CST # 本地时间Universal time: Mon 2023-05-08 08:19:13 UTC # UTC 时间RTC time: Mon 2023-05-08 08:19:13 # RTC 时间Time zone: Asia/Beijing (CST, +0800) # 时区System clock synchronized: no # NTP 同步情况NTP service: active # NTP 启用状态RTC in local TZ: no # RTC 是否使用本地时间
修改系统时区。请将
<TIMEZONE> 替换为目标时区,例如 Asia/Shanghai:timedatectl set-timezone <TIMEZONE>
分别修改系统的日期和时间。请根据实际情况替换对应的日期和时间值:
timedatectl set-time <YYYY-MM-DD> # 仅修改系统日历的年月日部分,时间部分保持不变timedatectl set-time <HH:MM:SS> # 仅修改系统时钟的时分秒部分,日期部分保持不变
设置 NTP 时间同步
网络时间协议 NTP(Network Time Protocol)用于使客户端和服务器之间进行时钟同步。NTP 服务器从权威时钟源(如原子钟、GPS)接收精确的世界协调时 UTC,客户端再从服务器请求和接收时间。
执行以下命令,开启或关闭 NTP 时间同步。将
<BOOL> 替换为 true 或 false,该操作会修改 NTP service 的状态:timedatectl set-ntp <BOOL>
使用 date 和 hwclock
查看系统时间
查看当前本地时间:
date
查看当前 UTC 时间:
date --utc
如需自定义日期输出格式,可通过
date +"format" 实现。关于 format 格式的详细说明,请执行 man date 查看手册:示例一,输出当前日期的简写年份、月份和日期:
date +%y%m%d
返回结果如下:
230508
示例二,输出当前日期和时间,包含日期、小时、分钟和秒:
date +"%D %H:%M:%S"
返回结果如下:
05/08/23 17:48:31
修改系统时间
执行以下命令,分别修改系统的日期和时间。请根据实际情况替换对应的日期和时间值:
date --set <YYYY-MM-DD> # 将系统日期设置为指定值,时间部分保持不变date --set <HH:MM:SS> # 将系统时间设置为指定值,日期部分保持不变
查看硬件时间
查看当前硬件时钟的日期和时间:
hwclock
修改硬件时间
执行以下命令,修改硬件时钟的日期和时间。注意将
MM/DD/YYYY HH:MM 替换为实际日期和时间:hwclock --set --date "MM/DD/YYYY HH:MM"
同步硬件时间与系统时间
如果硬件时间与系统时间不一致,可通过以下命令进行双向同步。
将硬件时间同步到系统时间:
hwclock --hctosys
将系统时间同步到硬件时间:
hwclock --systohc
说明:
如果在虚拟机环境中启动后发现时间显示错误,可能是虚拟机将本地时间当成 UTC 时间进行了错误的硬件时间设置,从而影响了系统时间。可通过修改硬件时间并同步到系统时间来恢复。
如需查看更多参数及信息,请执行
timedatectl --help,或参考 man timedatectl(1)、man date(1)、man hwclock(8)。键盘布局
不同的国家和地区可能使用不同的键盘布局,通过
localectl 可以设置当前系统的键盘布局。列出系统支持的所有键盘布局:
localectl list-keymaps
返回结果如下(部分显示):
alal-plisiatat-macat-nodeadkeysazba...
查看当前的键盘布局设置:
localectl status
返回结果如下:
System Locale: LANG=en_US.UTF-8VC Keymap: n/aX11 Layout: n/a
设置系统的键盘布局。以将
us 替换为目标键盘布局为例,需以 root 用户执行:sudo localectl set-keymap us
字体
通过设置字体可以控制系统中文本的显示样式。本节介绍如何安装中文字体并使用
fontconfig 进行字体管理。安装系统字体
首先安装
fontconfig 软件包,用于后续的字体管理操作。1. 安装
fontconfig:yum install fontconfig
2. 安装完成后,执行以下命令,查看系统中当前可用的字体:
fc-list
如需筛选查看可用的中文字体,执行以下命令:
fc-list :lang=zh
执行以下命令,列出系统中可下载的简体中文字体包:
dnf list *cjk-sc*
返回结果如下:
Last metadata expiration check: 3:44:09 ago on Thu May 25 13:03:02 2023.Available Packages# 简体中文无衬线字体google-noto-sans-cjk-sc-fonts.noarch 20201206-4.ocs23 AppStream# 简体中文等宽字体google-noto-sans-mono-cjk-sc-fonts.noarch 20201206-4.ocs23 AppStream# 简体中文衬线字体google-noto-serif-cjk-sc-fonts.noarch 20201206-4.ocs23 AppStream
3. 以下载简体中文无衬线字体为例,执行以下命令进行安装:
dnf install google-noto-sans-cjk-sc-fonts.noarch
安装完成后,执行以下命令,验证中文字体是否安装成功:
fc-list :lang=zh
安装第三方字体
如果系统未提供所需字体,也可自行获取字体文件进行安装。
1. 首先创建存放字体文件的目录,并将待安装的字体文件上传至该目录下。
为所有用户安装字体,建议将字体文件复制到
/usr/local/share/fonts/ 目录下:mkdir -p /usr/local/share/fonts/new_fontscp example.ttf /usr/local/share/fonts/new_fonts
为单个用户安装字体,建议将字体文件复制到用户主目录下的
~/.local/share/fonts/ 中:mkdir -p ~/.local/share/fonts/new_fontscp example.ttf ~/.local/share/fonts/new_fonts
2. 字体文件放置完成后,执行以下命令,更新系统字体缓存使新字体生效:
fc-cache
3. 执行以下命令,检查新添加的字体是否已出现在可用字体列表中:
fc-list | grep -i new_fonts
4. (可选)如需验证系统为指定字体名称匹配到的实际字体文件,执行以下命令返回第一个匹配的字体:
fc-match Font-Name
说明:
如需查看更多参数及信息,请执行
fc-list --help。输入法
本节为您介绍如何通过 IBus(Intelligent Input Bus)输入法框架在图形界面中使用拼音输入法和五笔输入法。
(可选)安装图形界面
如当前系统已是图形界面,可跳过本步骤。
1. 执行以下命令,安装图形界面:
dnf groupinstall 'Server with GUI'
2. 执行以下命令,设置图形模式为默认启动目标:
systemctl set-default graphical.target
3. 执行以下命令,重启系统使配置生效:
注意:
重启期间实例将无法正常提供服务,因此在重启之前,请确保实例已暂停业务请求。
reboot
安装中文输入法
执行以下命令,安装拼音输入法:
dnf install ibus-libpinyin
系统提供了"海峰五笔"和"极点五笔"两种五笔输入法,根据需要选择安装。执行以下命令,安装海峰五笔输入法:
dnf install ibus-table-chinese-wubi-haifeng
执行以下命令,安装极点五笔输入法:
dnf install ibus-table-chinese-wubi-jidian
安装完成后,执行以下命令,重启系统使输入法生效:
注意:
重启期间实例将无法正常提供服务,因此在重启之前,请确保实例已暂停业务请求。
reboot
配置输入法
重启进入图形界面后,进入系统设置界面,选择键盘中的输入源,单击+添加输入法,选择
Chinese(China),添加所需的输入法。GNOME 在菜单栏上会显示当前选择的输入源,默认切换输入法快捷键为 Super + 空格,其中 Super 键通常为 Windows 键(徽标键)。如需了解系统提供的全部中文输入法,执行以下命令查看可用列表:
dnf list ibus-table-chinese*
返回结果如下:
Last metadata expiration check: 2:34:07 ago on Thu May 25 13:03:02 2023.Available Packagesibus-table-chinese.noarch 1.8.11-3.ocs23 AppStream# 行列输入法ibus-table-chinese-array.noarch 1.8.11-3.ocs23 AppStream# 仓颉输入法ibus-table-chinese-cangjie.noarch 1.8.11-3.ocs23 AppStream# 广东话输入法ibus-table-chinese-cantonese.noarch 1.8.11-3.ocs23 AppStream# 基于耶鲁拼音的粤语输入法ibus-table-chinese-cantonyale.noarch 1.8.11-3.ocs23 AppStream# 轻松输入法ibus-table-chinese-easy.noarch 1.8.11-3.ocs23 AppStream# 二笔输入法ibus-table-chinese-erbi.noarch 1.8.11-3.ocs23 AppStream# 速成输入法ibus-table-chinese-quick.noarch 1.8.11-3.ocs23 AppStream# 快速仓颉输入法ibus-table-chinese-scj.noarch 1.8.11-3.ocs23 AppStream# 笔顺五码输入法ibus-table-chinese-stroke5.noarch 1.8.11-3.ocs23 AppStream# 上海吳语注音输入法ibus-table-chinese-wu.noarch 1.8.11-3.ocs23 AppStream# 海峰五笔输入法ibus-table-chinese-wubi-haifeng.noarch 1.8.11-3.ocs23 AppStream# 极点五笔86输入法 极爽词库 6.0ibus-table-chinese-wubi-jidian.noarch 1.8.11-3.ocs23 AppStream# 永码输入法ibus-table-chinese-yong.noarch 1.8.11-3.ocs23 AppStream