Arch Linux Localization (简体中文)

From ArchWiki
Jump to: navigation, search

依据「Arch 之道」:我们不会为你配置好一切,因为“喜好和需求,每人皆不同”,但是会尽量确保让配置时方便和简单。事实上,甚至远比使用某些Linux中文版本容易。

本文尽可能提供了各种常见软件的中文化指导。但实际应用中,你可能遇到各种各样的麻烦。遇到了麻烦,不要气馁,解决问题本身就是一种乐趣。你可以通过各种渠道寻求帮助:

基本中文支持

要正确显示中文,必需设置正确的locale并安装合适的中文字体。

locale设置

安装中文locale

Linux中通过locale来设置程序运行的不同环境。常用的中文locale有(最直观的分别是可显示字的数量):

zh_CN.GB2312
zh_CN.GBK
zh_CN.GB18030
zh_CN.UTF-8
zh_TW.BIG-5
zh_TW.UTF-8

推荐使用UTF-8的locale。对于glibc(>=2.3.6),需要修改/etc/locale.gen文件来设定系统中可以使用的locale(取消对应项前的注释符号「#」即可):

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

然后执行locale-gen命令,便可以在系统中使用这些locale。可以通过locale命令来查看当前使用的locale:亦可通过locale -a命令来查看目前可以使用的locale;

启用中文locale

Arch Linux中,通过/etc/locale.conf文件设置全局有效的locale:

LANG=en_US.UTF-8
警告: 不推荐在此设置中文locale,会导致tty乱码;在tty下亦可显示和输入中文,但需要安装cce、zhcon或fbterm[broken link: archived in aur-mirror]
提示: 如欲为内核打中文补丁,可参见[1]

对于特定用户,还可以在~/.bashrc~/.xinitrc~/.xprofile中设置自己的用户环境。不同之处在于:

  • .bashrc: 每次终端登录时读取并运用里面的设置。
  • .xinitrc: 每次startx启动X界面时读取并运用里面的设置
  • .xprofile: 每次使用gdm等图形登录时读取并运用里面的设置

单独在图形界面启用中文locale

不推荐/etc/locale.conf使用全局中文locale,会导致tty乱码。

如前面所说,可以在~/.xinitrc~/.xprofile单独设置中文locale。添加如下内容到上述文件最前端注释之后(如果不确定使用哪个文件,可以都添加):

export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US
export LC_CTYPE=en_US.UTF-8
注意: 若欲将此三行放至~/.xinitrc中,请注意将其放在exec _example_WM_or_DE_行之前;此为常见错误;
注意: 该方法适用于slim或者无登陆管理器的用户,GDM和KDM用户可以在Gnome或KDE设置中选择语言。

中文字体

安装字体

除了设置好locale,还需要安装中文字体。

常用的免费(GPL或兼容版权)中文字体有:

系统字体将默认安装到/usr/share/fonts。如果没有root权限或只打算自己使用某些字体,可以直接复制这些字体到~/.fonts目录(或其子目录)下面,并把该路径加入/etc/fonts/local.conf中。具体参见后面章节。

另见:[2]

中文字体配置

修正简体中文显示为异体(日文)字形

安装的Noto Sans CJK 或 adobe source han sans otc fonts(思源黑体) 或 adobe source han serif otc fonts(思源宋体)后,在某些情况下(框架未定义地区)汉字字形与标准形态不符,例如门、关、复等字字形与规范中文不符。这是因为每个程序中可以设置不同的默认字体,比如Arial或者Tohamo,而这些字体的属性由fontconfig控制,其使用顺序是据地区代码以A-Z字母表顺序成默认排序,由于 ja-JP 在 zh_{CN,HK,SG,TW} 之前,故优先显示日文字形。

解决方法任选一种:

  • 在 locale.conf 中设置中文为默认语言LANG=zh_{CN,HK,SG,TW}.UTF-8,则不会出现此问题,原因是 locale 定义了框架内地区(即 CJK 优先度),使得字体 prefer 被忽略。
  • 手动调整 prefer,即,将中文字形调整到日文字形之前。[3]

以noto-fonts-cjk 为例,修改文件 /etc/fonts/conf.avail/64-language-selector-prefer.conf 如下,无此文件则创建:

 <?xml version="1.0"?>
 <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 <fontconfig>
 <alias>
 <family>sans-serif</family>
 <prefer>
 <family>Noto Sans CJK SC</family>
 <family>Noto Sans CJK TC</family>
 <family>Noto Sans CJK JP</family>
 </prefer>
 </alias>
 <alias>
 <family>monospace</family>
 <prefer>
 <family>Noto Sans Mono CJK SC</family>
 <family>Noto Sans Mono CJK TC</family>
 <family>Noto Sans Mono CJK JP</family>
 </prefer>
 </alias>
 </fontconfig>


保存文件后,若 /etc/fonts 目录下有 conf.d/ 目录,则在该目录中创建指向 /etc/fonts/conf.avail/64-language-selector-prefer.conf 的同名软链接:

 $ sudo ln -s /etc/fonts/conf.avail/64-language-selector-prefer.conf /etc/fonts/conf.d/64-language-selector-prefer.conf

然后更新字体缓存即可生效:

 $ fc-cache -fv
fontconfig设置

fontconfig的设置文件是~/.fonts.conf(用户)或者/etc/fonts/conf.d(全局)。推荐修改前者。

关于中文字体设置,参见:Fonts (简体中文)Font configuration (简体中文)

Font Configuration (简体中文)/中文字体配置范例提供了中文字体fontconfig示范。

另见:

中文输入法

常用的中文输入法平台有IBusfcitxscim。具体安装配置参见各自条目。

注意: scim现在维护滞后,不推荐使用。

终端中文支持

引导中文支持

请见 grub2

终端中文支持

请见 fbterm

终端中文输入支持

请参见 fbterm

软件中文化配置

桌面环境

KDE外,各大桌面环境已经包含了中文语言文件。KDE的中文包需要额外安装:kde-l10n-zh_cn

Firefox

简体中文用户安装 firefox-i18n-zh-cn

繁体中文用户安装 firefox-i18n-zh-tw

Libreoffice

简体中文用户安装 libreoffice-fresh-zh-CNlibreoffice-still-zh-CN

繁体中文用户安装 libreoffice-fresh-zh-TWlibreoffice-still-zh-CN

Calligra (原 Koffice)

简体中文用户安装 calligra-l10n-zh_cn[broken link: replaced by calligra]

繁体中文用户安装 calligra-l10n-zh_tw[broken link: replaced by calligra]

PDF阅读器

多数PDF查看器已经支持中文。但也有部分需要安装额外的语言包:

Arcobat: AUR版本的中文包为acroread-chsAUR[broken link: archived in aur-mirror]acroread-chtAUR[broken link: archived in aur-mirror]

okular、evince等poppler相关的阅读器及Inkscape、Krita、MyPaint等可以处理pdf的图像处理工具:需要安装 poppler-data

Java

对于Sun Java用户,在/opt/java/jre/lib/fonts中建立fallback目录,然后链接或拷贝若干中文字体到该目录就能使java程序正确显示中文。例如,在已经安装jre和ttf-fireflysung 的情况下,使用root权限执行下面的命令即可:

ln -s /usr/share/fonts/TTF/odosung.ttc /opt/java/jre/lib/fonts/fallback/
cd /opt/java/jre/lib/fonts/fallback/
mkfontdir
mkfontscale

如果是openjdk6,需要复制/usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties.src/usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties,并修改这个文件中的字体位置,因为文泉驿的地址指错了。

vim

如果locale是utf8编码,用vim打开其他中文编码的文件可能会乱码。需要在~/.vimrc做如下设置:

set fileencodings=utf8,cp936,gb18030,big5

中文视频字幕

Mplayer

要使mplayer正确显示字幕,关键是要使字幕文件的编码和mplayer config里使用的编码相一致。字幕文件编码为gbk,则subcp=cp936;字幕文件编码为utf-8,则subcp=utf8。如果字幕文件编码为utf-8,而设置成subcp=cp936,则会出现部分乱码的情况。另一种更为简单的方法是设置成subcp=enca:zh:ucs-2,由enca负责字幕的编码显示问题。

修改~/.mplayer/config

font='文泉驿正黑'
subcp=enca:zh:ucs-2

使用下面的命令手动加载字幕:

mplayer xxx.avi -sub xxxxx.srt

如果使用图形前端(比如SMPlayer),会更简单一些,只要在设置对话框里设定缺省字幕编码和字体即可。

xine

xine也可以显示中文字幕,但需要制作自己的中文字体。具体可以参考:[5]

gstreamer

在totem 1.4.0,由于使用gstreamer0.10,应该是可以自动加载同名的srt字幕。

LaTeX

首先需要安装CJK包,然后需要安装合适的字体。具体可以参考:[6]

乱码问题

避免乱码基本原则:使用utf-8代替gbk/gb2312。

文件名乱码

安装 convmv,使用convmv命令转换编码格式。示例:

convmv -f GBK -t UTF-8 --notest --nosmart file

-f指定原始编码,-t指定输出编码。使用convmv --list可查询所有支持的编码。 --notest表示非测试而是要进行转码(如果不使用该参数只会打印出转换结果而不会实际转码),--smart表示如果已经是UTF-8则忽略。

文件内容乱码

使用iconv命令转换格式。示例:

iconv -f GBK -t UTF-8 -o new-file origin-file

-f指定原始编码,-t指定输出编码。使用iconv -l可查询所有支持的编码。-o指定输出文件。

zip压缩包乱码

避免方法:非utf8编码环境下(一般windwos下的中文环境即是)不使用zip进行压缩(建议使用7z)。 解决方案:安装使用unzip-iconvAUR或者unzip-natspecAUR取代原版的unzip来解压缩,示例:

 unzip -O gbk file.zip

file.zip是压缩文件,gbk是该文件的编码格式,以-O指定(原版unzip无-O选项)。

MP3文件标签乱码

对于用gstreamer做后端的播放器,如Rhythmbox,totem,设置如下的环境变量后即可正确读取mp3中GBK编码的ID3 tag:

export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030
export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030

对于Beep media player,可以在pefenrence->plugins->media中选中MPEG Audio plugin然后点击下方的Penfenrences,此时会出现一个对话框,选择title,将Disable ID3v2和Convert non-UTF8 ID3 tags to UTF8前的选择框选中。然后在ID3 encoding中填入 gbk。这样bmp就能正确显示GBK编码的ID3 tag。

Quod Libet播放器支持tag编辑及设置ID3v2编码。可以在~/.quodlibet/config中设置

id3encoding = gbk

注意:Quod Libet默认支持utf8编码

最为彻底的解决方法为将编码为gbk的id3 tag转化为utf8编码。首先安装mutagen,然后利用下面的命令转换:

mid3iconv -e gbk XXX.mp3

Windows分区下的中文文件名乱码

一般是因为挂载的字符集与locale不同,可以修改/etc/fstab(如果不了解请仔细阅读相关文档)。如果locale是utf8,修改为:

/dev/sdxx /media/win ntfs defaults,iocharset=utf8 0 0

如果locale是GBK,则应该是:

/dev/sdxx /media/win ntfs defaults,iocharset=cp936 0 0

Samba乱码

用Arch作为Samba服务器时,在/etc/samba/smb.conf中加入下面一行就可以解决Windows客户端乱码问题:

unix charset=gb2312

ftp乱码

很多ftp站点是GBK编码。如果使用UTF8的locale,下载的文件名可能会乱码。对于lftp,在.lftp/rc下做如下设置:

set ftp:charset "gbk"
set file:charset "UTF-8"

对于gftp,可以在.gftp/gftprc中做如下设置即可:

remote_charsets=gb2312

但下载下来的文件名仍然是乱码,需要打补丁编译。补丁地址为: http://www.teatime.com.tw/%7Etommy/linux/gftp_remote_charsets.patch

翻译软件

  • sdcv(命令行的星际译王)和ydcv命令行的有道词典。
  • youdao-dictAUR:有道词典(图形界面),屏幕取词翻译。
  • goldendict:默认都不带字典,可下载相应字典包(支持Babylon的词库格式.BGL,已经不再维护的StarDict的词库格式(.ifo/.dict/.idx/.syn),Dictd的词库格式(.index/.dict(.dz) ,ABBYY Lingvo 的词库格式(.dsl/.lsa/.dat),mdict的词库格式等等。可在互联网上下载这些词典的词库文件导入的goldendict使用(可能有版权问题)。
  • moedictAUR一个跨多平台的汉语词典,除汉字、词、成语等,还包含客家话、闽南话、简单的外文翻译、笔顺书写等等,萌典在线地址
  • linedictAUR一个通过爬取有道翻译网页得到结果的在线英汉词典,部分支持英汉翻译,模仿dmenu在屏幕顶端显示结果,使用方便,由于ydcv使用的api将在2017年底失效,而有道新的api有免费使用次数限制,linedict是一个较好的替代品