Difference between revisions of "Arch Linux Localization (简体中文)"

From ArchWiki
Jump to: navigation, search
(怎么输入中文?)
m (怎么输入中文?)
Line 150: Line 150:
 
== '''怎么输入中文?''' ==
 
== '''怎么输入中文?''' ==
 
安装相应的输入法 [[scim]] 、 [[fcitx]] 或 [[ibus]]。
 
安装相应的输入法 [[scim]] 、 [[fcitx]] 或 [[ibus]]。
 +
 
scim:
 
scim:
 
  pacman -S scim-pinyin
 
  pacman -S scim-pinyin

Revision as of 02:56, 29 March 2011


请再仔细看看Arch的哲学"Arch 之道": 这意味着我们不会为你配置好一切,因为“喜好和需求,每人皆不同”,但是我们会尽量确保让你自行配置时,方便和简单。事实上,甚至远比你使用一些可能的Linux中文版本容易。

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

怎么显示中文的界面?

要正确实现中文,必需设置正确的locale和安装合适的中文字体。

locale的设定

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

zh_CN.GB2312
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命令,这样便可以在系统中使用zh_CN.UTF8,zh_CN.GBK,zh_CN.GB2312,zh_CN.GB18030,en_US.UTF8等locale。可以通过locale命令来查看当前使用的locale

locale

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

locale -a

Archlinux中,通过rc.conf文件可以设置全局有效的locale:

LOCALE=en_US.UTF-8

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

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

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

安装中文字体

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

pacman -S wqy-zenhei

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

wqy-bitmapfont
wqy-zenhei
wqy-microhei (AUR中)
wqy-microhei-lite(AUR中)
ttf-arphic-ukai
ttf-arphic-uming
ttf-fireflysung


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

参考网点:

fontconfig设置

安装好字体以后,你可能对中文字体的显示不太满意。这时需要对fontconfig做某些设置。你可以在~/.fonts.conf中设定,也可以在/etc/fonts/conf.d中设定。

重排字型的显示顺序

Serifs字型

<alias>
 <family>serif</family>
 <prefer>
  <family>Bitstream Vera Serif</family>
  <family>Times New Roman</family>
  <family>Nimbus Roman No9 L</family>
  <family>Luxi Serif</family>
  <family>Times</family>
  <family>WenQuanYi Bitmap Song</family> 
  <family>AR PL ShanHeiSun Uni</family>
  <family>AR PL New Sung</family>
  <family>AR PL ZenKai Uni</family>
  <family>Ming(ISO10646)</family>
  <family>Kochi Mincho</family>
  <family>Baekmuk Batung</family>
 </prefer>
</alias>

Sans字型

 <alias>
 <family>sans-serif</family>
 <prefer>
  <family>Bitstream Vera Sans</family>
  <family>Verdana</family>
  <family>Arial</family>
  <family>Tahoma</family>
  <family>WenQuanYi Bitmap Song</family> 
  <family>AR PL ShanHeiSun Uni</family>
  <family>AR PL New Sung</family>
  <family>AR PL ZenKai Uni</family>
  <family>Helvetica</family>
  <family>Ming(ISO10646)</family>
  <family>Kochi Gothic</family>
  <family>Baekmuk Dotum</family>
 </prefer>
 </alias>

Mononspace字型

 <alias>
 <family>monospace</family>
 <prefer>
  <family>Bitstream Vera Sans Mono</family>
  <family>Courier</family>
  <family>Courier New</family>
  <family>Andale Mono</family>
  <family>Luxi Mono</family>
  <family>Nimbus Mono L</family>
  <family>WenQuanYi Bitmap Song</family>
  <family>AR PL ShanHeiSun Uni</family>
  <family>AR PL New Sung</family>
  <family>AR PL ZenKai Uni</family>
  <family>Ming(ISO10646)</family>
  <family>Kochi Mincho</family>
  <family>Baekmuk Batung</family>
 </prefer>
 </alias>

关闭小号字体的AA(反锯齿)

对于比较小的字体,关闭小号字体的反锯齿,会更加清晰。

<match target="font" >
 <test compare="eq" name="family" qual="any" >
     <string>AR PL New Sung</string>
     <string>AR PL ShanHeiSun Uni</string>
     <string>AR PL ZenKai Uni</string>
     <string>AR PL Mingti2L Big5</string>
     <string>AR PL SungtiL Big5</string>
     <string>MingLiu</string>
     <string>PMingLiu</string>
  </test>
  <test compare="more_eq" name="pixelsize" >
     <double>8</double>
  </test>
  <test compare="less_eq" name="pixelsize" >
     <double>15</double>
  </test>
  <edit name="antialias" >
     <bool>false</bool>
  </edit>
  <edit name="hinting" >
     <bool>true</bool>
  </edit>
 </match>

Tips:可以到这里得到更详细的字体设置文档和完整的中文字体配置范例

参考文档

怎么输入中文?

安装相应的输入法 scimfcitxibus

scim:

pacman -S scim-pinyin

简体中文的用户推荐:

scim-pinyin  智能拼音
scim-tables  五笔等基于码表的输入法

繁体中文的用户推荐:

scim-chewing

要使用scim,还应该设置以下的环境变量(以scim为例),(可在~/.xinitrc, ~/.bashrc或~/.xprofile中设置)

export XIM="SCIM"
export XMODIFIERS=@im=SCIM  #设置scim为xim默认输入法
export GTK_IM_MODULE="scim"  #设置scim为gtk程序默认的输入法
export QT_IM_MODULE="scim"   #设置scim为qt程序默认的输入法
scim -d #使可以自动启动

已知问题:

  • 由于SCIM的ABI兼容性问题,目前可能会造成一些软件拒绝运行,这些软件包括但不限于:Acrobat Reader, 直接从mozilla.org下载的firefox, thunderbird,以及realplay。

fcitx: 与scim类似:

pacman -S fcitx

并将上述配置中的SCIM/scim 改成 FCITX/fcitx。

中文显示很模糊(淡),或没有中文粗体?

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

或者使用了下面的local.conf文件替换系统默认的local.conf文件。

cp local.conf /etc/fonts/ 

或者,自行编译fontconfig2.3.92以上的版本,并打开local.conf中的autohint

KDE环境:

其他环境:见上。

  • 官方新版本的mozila firefox(大于1.5.0.1)已经使用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字幕。

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分区下的中文文件是乱码?

如果使用了hal,应该是没有问题了,但是如果没有,请不妨试一下:

在/etc/rc.conf中的daemon一段中添加hal。

或者直接修改/etc/fstab,注意危险,你如果不懂,就不要学我:-)。如果locale是utf8,挂载windows分区时应该做如下设置

/dev/hdc5 / reiserfs 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 -Sy 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>

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

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

vim乱码

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

"Chinese GBK support
set fileencodings=utf8,gbk

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
  • 牛津现代英汉双解辞典(正体中文)
  • 朗道英汉词典(正体中文)