本地化/简体中文
按照“Arch 之道”:我们无法为您配置好一切,因为“每个人的偏好和需求都不相同”,但我们会尽量确保配置过程便捷简单。事实上,这比某些中文版的 Linux 还要简单。
本文尽可能为各种常用软件提供中文文化指南。但在实际应用中,您可能会遇到各种各样的问题。遇到困难时不要灰心。解决问题本身就是一种乐趣。您可以通过各种平台寻求帮助:
基本中文支持
要正确显示中文,必须正确设置 区域设置 (locale) 并安装相应的字体。
区域设置
安装中文区域设置
在 Linux 中,区域设置用于为程序运行设定不同的环境。常用的中文区域设置(最直观的是能显示的字数)如下:
zh_CN.GB2312 zh_CN.GBK zh_CN.GB18030 zh_CN.UTF-8 zh_TW.BIG-5 zh_TW.UTF-8
建议使用 UTF-8 区域设置。您需要修改 /etc/locale.gen 来设定系统中可用的区域(取消对应条目前方的注释符号“#”)。
/etc/locale.gen
en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8
执行 locale-gen 后,选定的区域即可在系统中使用。您可以使用 locale 查看当前使用的区域,使用 locale -a 查看当前系统可用的区域。
启用中文区域设置
/etc/locale.conf 中全局设置中文区域会导致 tty 显示乱码,这是因为 Linux 内核的 tty 字形限制。要在 tty 下正确显示中文字符,请安装并 配置 zhconAUR。设置全局默认区域为英语(可选)
为避免上述 tty 乱码问题,可将全局 LANG 区域 设置为 en_US.UTF-8。
/etc/locale.conf
LANG=en_US.UTF-8
用户级区域设置
您可以设置自己的用户 环境变量。
为图形界面设置中文环境
不建议在 /etc/locale.conf 中设置全局中文区域,因为这会导致所有 tty 显示乱码。
如前所述,可以在 启动文件 中单独设置中文区域。将以下两行添加到两个文件之一的开头(如果不确定使用哪个文件,则两个都添加):
export LANG=zh_CN.UTF-8 export LANGUAGE=zh_CN:en_US
中文字体
安装字体
除了区域设置,还需要中文字体。
常用的自由(GPL 或兼容版权)中文字体包括:
- adobe-source-han-sans-cn-fonts
- adobe-source-han-serif-cn-fonts
- noto-fonts-cjk
- wqy-microhei
- wqy-microhei-lite
- wqy-bitmapfont
- wqy-zenhei
- ttf-arphic-ukai
- ttf-arphic-uming
系统字体默认安装在 /usr/share/fonts。如果您没有 root 权限或者计划自行使用某些字体,可以直接将这些字体复制到 ~/.fonts(或其子目录),并将路径添加到 /etc/fonts/local.conf。详情请查阅后续章节。
参见:[1]
中文字体配置
fontconfig 设置
fontconfig 的配置文件是 ~/.config/fontconfig/fonts.conf(用户级)或 /etc/fonts/conf.d(全局)。建议修改前者。
有关中文字体设置,请参阅 字体 (简体中文) 和 字体配置 (简体中文)。
字体配置 (简体中文)/中文 (简体中文) 提供了中文字体 fontconfig 的演示。
参见
- fontconfig 用户手册[失效链接 2022-09-21—HTTP 404]
- Debian 中文支持
- Fontconfig 维基页面
中文字符显示为变体(日文)字形
安装 Noto Sans CJK adobe-source-han-sans-otc-fonts(思源黑体)或 Noto Serif CJK adobe-source-han-serif-otc-fonts(思源宋体)后,在某些情况下,渲染的中文字符可能与标准写法不符,例如“门”、“关”和“复”。
这是因为每个程序可以设置不同的默认字体(如 Arial 或 Tahoma),而这些字体的属性受 fontconfig 控制。使用顺序基于区域代码和 A-Z 的默认顺序。由于 ja-JP 排在 zh_{CN,HK,SG,TW} 之前,因此会优先使用日文字体。
您可以使用以下方法解决此问题(以简体中文为例):
- 确保您的桌面环境使用了正确的区域设置。例如,KDE 可能会错误配置其自己的区域设置文件,您应该进行修复。
- 仅安装符合简体中文标准的字体。对于 Noto CJK 字体,这意味着仅安装 CN 变体,即 Noto Sans CJK CN 和 Noto Serif CJK CN,即 adobe-source-han-sans-cn-fonts 和 adobe-source-han-serif-cn-fonts,或者 noto-fonts-scAUR。
- 在
locale.conf中添加LANG=zh_CN.UTF-8以将简体中文设置为默认语言。由于 Locale 定义了 CJK 优先级,默认优先级会被忽略。 - 手动调整优先级,使中文字体排在日文字体之前。[2]
在 /etc/fonts/conf.d/ 或 /etc/fonts/conf.avail/ 下创建一个文件,例如 64-language-selector-prefer.conf,或者修改/创建 ~/.config/fontconfig/fonts.conf(仅对用户有效)。
如果安装了 noto-fonts-cjk,则写入:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Serif CJK SC</family>
<family>Noto Serif CJK TC</family>
<family>Noto Serif CJK JP</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK JP</family>
</prefer>
</alias>
</fontconfig>
如果您安装了 adobe-source-han-sans-otc-fonts:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Source Han Sans SC</family>
<family>Source Han Sans TC</family>
<family>Source Han Sans HW</family>
<family>Source Han Sans K</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Source Han Sans SC</family>
<family>Source Han Sans TC</family>
<family>Source Han Sans HW</family>
<family>Source Han Sans K</family>
</prefer>
</alias>
</fontconfig>
请注意,如果您在 /etc/fonts/conf.avail 下创建了 xml 文件,例如:
# ln -s /etc/fonts/conf.avail/64-language-selector-prefer.conf /etc/fonts/conf.d/64-language-selector-prefer.conf
您必须更新字体缓存才能生效:
# fc-cache -fv
执行以下命令进行检查。如果出现 NotoSansCJK-Regular.ttc: "Noto Sans CJK SC" "Regular",则说明设置已成功应用。
# fc-match -s | grep 'Noto Sans CJK'
中文输入法
常用的中文输入法框架有 IBus、fcitx5 和 scim。具体安装和配置请参考各自的维基文章。
终端中文支持
引导加载程序中文支持
参见 GRUB2 (简体中文)。
软件的中文环境配置
Firefox
简体中文安装:firefox-i18n-zh-cn。
繁体中文安装:firefox-i18n-zh-tw。
Libreoffice
简体中文安装:libreoffice-fresh-zh-cn 或 libreoffice-still-zh-cn。
繁体中文安装:libreoffice-fresh-zh-tw 或 libreoffice-still-zh-cn。
PDF 阅读器
大多数 PDF 阅读器已经支持中文。但是,对于基于 poppler 的阅读器和可以处理 PDF 文件的图像处理工具,需要安装 poppler-data。
Java
对于 Sun Java 用户,在 /opt/java/jre/lib/fonts 下创建一个 fallback 目录,然后将几个中文字体链接或复制到该目录,即可让 Java 程序正确显示中文。例如,如果已安装 jreAUR 和 opendesktop-fonts,请使用以下命令:
# ln -s /usr/share/fonts/TTF/odosung.ttc /opt/java/jre/lib/fonts/fallback/ # cd /opt/java/jre/lib/fonts/fallback/ # mkfontdir # mkfontscale
vim
如果区域设置是 utf8 编码,使用 vim 打开其他中文编码的文件可能会出现乱码。需要在 ~/.vimrc 中进行以下设置:
~/.vimrc
... set fileencodings=utf8,cp936,gb18030,big5 ...
中文视频字幕
MPlayer
要使 MPlayer 正确显示中文字幕,关键在于确保字幕文件的编码与 MPlayer 配置中使用的编码一致。如果字幕文件是 gbk 编码,使用 subcp=cp936;如果是 utf-8 编码,使用 subcp=utf8。如果字幕文件是 utf-8 编码却设置为 subcp=cp936,则会出现乱码。另一个更简单的方法是设置为 subcp=enca:zh:ucs-2,让 enca 负责字幕的编码识别和显示。
修改 ~/.mplayer/config:
~/.mplayer/config
font='文泉驿正黑' subcp=enca:zh:ucs-2
使用以下命令手动加载字幕:
$ mplayer xxxxx.avi -sub xxxxx.srt
如果使用图形前端(如 SMPlayer),只需在设置对话框中设置默认的字幕编码和字体即可正常工作。
xine
Xine 也可以显示中文字幕,但需要自行制作中文字体。详情请参考 [3]。
gstreamer
在 totem 1.4.0 中,由于使用 gstreamer0.10,应该能够自动加载同名的 srt 字幕。
LaTeX
您需要安装 CJK 软件包和相应的字体。详情请参考 [4]。
乱码问题
避免乱码的基本原则是使用 utf-8,而不是 gbk/gb2312。
有关排查说明,请参见 字符编码#故障排查。
翻译软件
- stardict:星际译王。
- sdcv:命令行版星际译王。
- ydcvAUR:命令行有道词典。
- youdao-dictAUR:有道词典(图形界面),支持划词翻译。
- GoldenDict:默认无词典,可下载相应的词典包(支持 Babylon 的
.BGL格式、星际译王不再维护的词库格式 (.ifo/.dict/.idx/.syn)、dictd 词库格式 (.index/.dict(.dz)、ABBYY Lingvo 词库格式 (.dsl/.lsa/.dat)、mdict 词库格式等。这些词典文件可在网上下载并导入到 GoldenDict 中使用(可能存在版权问题)。 - moedictAUR:多平台中文词典。除了汉字、词语、成语等,还包含客家语、闽南语、简单的外语翻译、笔顺书写等。萌典在线地址
- linedictAUR:一个在线英汉词典,通过爬取有道翻译网页获取结果,支持英汉互译,模仿 dmenu 在屏幕顶部显示结果。使用起来非常方便。ydcvAUR 使用的 API 已失效,且新 API 有免费使用频率限制,因此 linedictAUR 是一个很好的替代品。