Localization/Simplified Chinese (简体中文)

From ArchWiki
Jump to navigation Jump to search
Warning: 我正在修改本文,请不要编辑。

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

第一次使用Arch Linux时,用户通常会遇上这些(典型)的问题:

系统中文支持

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

locale设定

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

zh_CN.GB2312
zh_CN.GBK
zh_CN.GB18030
zh_CN.UTF-8

推荐使用UTF8的locale。需要注意的是,对于glibc(>=2.3.6),需要修改/etc/locale.gen文件来设定系统中可以使用的locale

en_US.UTF8 UTF-8
zh_CN.UTF8 UTF-8
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030

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

locale

可以通过locale命令来查看目前可以使用的locale:

locale -a

Archlinux中,通过Template:Filename文件可以设置全局有效的locale:

LOCALE=en_US.UTF-8
Note: 不推荐这里设置中文locale,会导致终端乱码。

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

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

在终端(文字)界面下也可以显示和输入中文,但需要安装cce、zhcon或fbterm。

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

不推荐Template:Filename使用全局中文locale,会导致终端乱码。

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

export LANG=zh_CN.UTF-8
export LC_ALL="zh_CN.UTF-8"
Note: 该方法适用于slim或者无登陆管理器的用户,GDM和KDM用户可以在Gnome或KDE设置中选择语言。

安装中文字体

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

pacman -S wqy-zenhei

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

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

另见:[1]

中文输入法设置

安装相应的输入法ibusfcitxscim。具体安装配置参见各自条目。

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

中文字体配置

安装好字体以后,字体显示效果可能不堪入目。需要对fontconfig和某些程序进行调整。

fontconfig是字体选择的接口,你可以用它去控制单个字体或者字体族的属性,比如hint或者autohint。

另外每个程序中可以设置不同的默认字体,比如Arial或者Tohamo。这些字体的属性由fontconfig控制。所以当字体显示不满意时,首先需要判断是调整字体的种类还是字体的属性。

单个程序的字型选择

浏览器中正文的字体可以设为serif。serif和san serif的区别可以参考 (http://www.shocr.com/serif-vs-sans-serif/)。

fontconfig设置

fontconfig的设置文件是Template:Filename(用户)或者Template:Filename(全局)。推荐修改前者。

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

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

另见:

中文显示模糊或没有中文粗体

正常情况下,gnome本身已经转由cairo+pango来渲染字体,不存在这个问题了。但仍可能在浏览一些网页时发生这些问题。

没有中文粗体解决方法: 把下面的配置加入/etc/fonts/local.conf

 <!--
 Synthetic emboldening for fonts that do not have bold face available
 -->

	<match target="font">
		<!-- check to see if the font is just regular -->
		<test name="weight" compare="less_eq">
			<const>medium</const>
		</test>
		<!-- check to see if the pattern requests bold -->
		<test target="pattern" name="weight" compare="more">
			<const>medium</const>
		</test>
		<!--
		  set the embolden flag
		  needed for applications using cairo, e.g. gucharmap, gedit, ...
		-->
		<edit name="embolden" mode="assign">
			<bool>true</bool>
		</edit>
		<!--
		 set weight to bold
		 needed for applications using Xft directly, e.g. Firefox, ...
		-->
		<edit name="weight" mode="assign">
			<const>bold</const>
		</edit>
	</match>
 

中文字幕的显示

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

同时,你还可以设置mplayer自动加载字幕。如果你无法在gmplayer的选项中找到这个选项(天知道你会有这样粗心),直接修改~/.mplayer/gui.conf如下:

sub_auto_load = "yes"
sub_unicode = "yes"
sub_pos = "100"
sub_overlap = "no"
sub_cp = "cp936"
font_factor = "0.750000"
font_encoding = "unicode"
  • mplayer cvs(2005.12以后)已经使用了gtk2的界面,但是很遗憾的是并没有完全利用gtk2良好的国际支持,甚至没有使用gtk.filechooser。
  • 正体中文 codepage 为 cp950。

SMPlayer

SMPlayer 是一个基于QT的MPlayer前端。显示中文字幕很方便。只要在设置对话框里设定缺省字幕编码和字体即可。而且立即生效,无需重新启动程序。

xine

xine也可以显示中文字幕,但需要制作自己的中文字体。具体可以参考 http://forum.ubuntu.org.cn/about2760.html

gstreamer

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

中文乱码

vim乱码

如果locale是utf8编码,用vim显示gbk编码的文件可能会乱码。因此需要在.virc做如下设置

"Chinese GBK support
set fileencodings=utf8,gbk

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 test.mp3

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

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

/dev/hdc5 /media/win ntfs-3g defaults iocharset=utf8 0 0

如果locale是GBK,则应该是

iocharset=cp936

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中做如下设置即可正确显示服务器端gbk编码的文件名

remote_charsets=gb2312

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

JAVA界面乱码

对于java 1.5来说(同样适用于java 1.6),只要在

/opt/java/jre/lib/fonts

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

ln -s /usr/share/fonts/TTF/odosung.ttc /opt/java/jre/lib/fonts/fallback/
cd /opt/java/jre/lib/fonts/fallback/
#以下两个命令要使用root权限
mkfontdir
mkfontscale


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

Doc文件无法打开或显示不正常?

安装openoffice。

 #pacman -Syu openoffice-base openoffice-zh-CN
  • 如果你打算使用英文版的openoffice,你只需要安装openoffice-base包。
  • 正体中文包 openoffice-zh_tw。
  • 开启 amd_64 的 openoffice 时可能发生异常,此时可安装 libsndfile 进行修正。
  • 目前,由于go-openoffice扩充了OpenOffice.org的功能(比如,完善了许多微软私有文档格式的兼容性),因此,我们推荐您使用go-openoffice。

正确显示中文PDF文件

Tips: 要正常显示所有的中文pdf(除了自定义字库外,比如文渊阁版四库全书),都需要安装poppler-data 因为,linux下pdf大都以Poppler为解析PDF后端的,而Poppler已经提供了包含中文字体在内的包poppler-data,所以只要安装poppler-data,中文显示问题就可解决。

okular

pacman -S kdegraphics-okular

arcobat

安装AUR里的acroread,并且安装相应中文包即可。

Evince

pacman -S evince

xpdf

pacman -S xpdf-chinese-simplified

其他可用的pdf阅读器

比如foxit

另外的问题

在中国知网、万方数据库上下载的一些论文没有明确指定字体,系统选用英文字体显示它们,于是导致中文无法显示。要解决这一问题,需要修改系统的字体配置, 下面的方法更加建议使用:修改/etc/fonts/conf.d/65-nonlatin.conf 把里面自己想使用的字体位置提到前面就可以了。

Tips: 下面的建议是以前对字体配置文件不熟悉的时候经常使用的方法,现在建议不要采纳(虽然网上绝大部分流行的教程都是这么做的)

==================================================================== 一种比较简便的方法是直接删除/etc/fonts/conf.d/49-sansserif.conf:

  1. rm /etc/fonts/conf.d/49-sansserif.conf

建议不要这么做,也可以将/etc/fonts/conf.d/49-sansserif.conf的

<edit name="family" mode="append_last">

    <string>sans-serif</string>

</edit>

改成

<edit name="family" mode="append_last">

   <string>文泉驿正黑</string>

</edit>

其中“文泉驿正黑”也可被其它所安装的中文字体代替。

=======================================================================

Latex中如何使用中文

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

如何使用字典

首先请先安装stardict

pacman -S stardict

stardict默认是不带字典的,需要去http://stardict.sourceforge.net/ 下载字典安装。安装方法如下

tar -xjvf testdict.tar.bz2
mv testdict /usr/share/stardict/dic

推荐使用

  • xdict英汉字典
  • Merriam Webster 10th dictionary
  • 牛津现代英汉双解辞典(正体中文)
  • 朗道英汉词典(正体中文)