本地化/简体中文
根据“Arch 之道”:我们无法为您配置一切,因为“每个人的偏好和需求都不同”,但我们会尽力确保配置方便简洁。事实上,它甚至比某些中文版 Linux 更容易。
本文尽可能为各种常用软件提供中文文化指导。但在实际应用中,您可能会遇到各种问题。当您遇到麻烦时,请不要气馁。解决问题本身就是一种乐趣。您可以通过各种平台寻求帮助
基础中文支持
要正确显示中文,您必须正确设置区域设置并安装适当的中文字体。
区域设置
安装中文区域
在 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
以设置系统中可以使用的区域设置(删除对应项目前的注释符号“#
”)
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 乱码文本问题,请在 /etc/locale.conf
中将 LANG 区域设置 全局设置为 en_US.UTF-8
LANG=en_US.UTF-8
用户特定区域
您可以在 ~/.bashrc
、~/.xinitrc
或 ~/.xprofile
中设置您自己的用户环境变量。
- .bashrc:每次您使用终端登录时应用设置。
- .xinitrc:每次您使用 startx 或 SLiM 启动 X 界面时应用设置。
- .xprofile:每次您使用显示管理器(如 GDM)登录时应用设置。
为图形界面设置中文区域
不建议在 /etc/locale.conf
中设置全局中文区域设置,因为它会导致 tty 显示乱码字符。
如前所述,中文区域设置可以在 ~/.xinitrc
或 ~/.xprofile
中单独设置。将以下两行添加到这两个文件之一的开头(如果您不确定使用哪个文件,请添加到两个文件的开头)
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 的设置文件是 ~/.fonts.conf
(用户)或 /etc/fonts/conf.d
(全局)。建议修改前者。
有关中文字体设置,请参阅 Fonts (简体中文) 和 Font configuration (简体中文)。
Font Configuration (简体中文)/Chinese (简体中文) 提供了中文 fontconfig 的演示。
另见
- fontconfig 用户手册[失效链接 2022-09-21 ⓘ]
- Debian 中文支持
- Fontconfig wiki 页面
中文字符显示为变体(日语)字形
安装 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。
- 将
LANG=zh_CN.UTF-8
添加到locale.conf
以将简体中文设置为默认语言。由于 区域设置 是为 CJK 优先级定义的,因此默认优先级将被忽略。 - 手动调整优先级,使中文字体在日文字体之前设置。[2]
在 /etc/fonts/conf.d/
或 /etc/fonts/conf.avail/
下创建一个文件,例如 64-language-selector-prefer.conf
,或修改或创建 ~/.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 xxx.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
,不再维护的 StarDict 词库格式 (.ifo
/.dict
/.idx
/.syn
),dictd 词库格式 (.index
/.dict
(.dz
),ABBYY Lingvo 的词库格式 (.dsl
/.lsa
/.dat
),mdict 的词库格式等。这些词典的词库文件可以在互联网上下载和导入 GoldenDict 的使用(可能存在版权问题)。 - moedictAUR:一个多平台中文词典。除了汉字、词语、成语等,还包含客家话、闽南语、简单的外语翻译、笔顺书写等。moedict 在线地址
- linedictAUR:一个在线英汉词典,通过抓取有道翻译网页获取结果,部分支持英汉互译,模仿 dmenu 在屏幕顶部显示结果。它相当容易使用。ydcvAUR 使用的 API 已过期,新的 API 免费使用有频率限制,因此 linedictAUR 是一个很好的替代品。