红联Linux门户
Linux帮助

汉化你的RedHat全功略

发布时间:2005-09-02 11:36:43来源:红联作者:reing
感谢为中文locale做出贡献的人
愤恨及鄙视那些将linux的汉化技术作为赚钱秘密而秘而不宣的公司.

本文提到的软件包大家可以通过http://bigluo.cn.hongnet.com下载,他们分别是:

locale-zh-0.97.src.rpm - Linux中文环境文件.packaged by Wu yulun
Chinput-3.0 - 中文输入法. developed bu Yu Mingjian
pth-1.3.7 - 可移植线程库
unicon2 - Chinput需要的表码软件包


一.安装中文环境

1-1 确定glibc的版本

这份locale-zh是for glib 2.1.3 (RH 6.2)的,因此如果你的glibc < 2.1.3,请升级他.如果你的glibc > 2.1.3,你可以到我的主页下载相应的locale环境定义文件zh_CN,然后用lcoaledef来产生相应的中文环境.我的RH 是6.1版本的,于是我找到了一张RH6.2的CD,升级了下面几个包:

* egcs
* egcs-c++
* libstdc++
* glibc
* gtk*
* XFree86
make
autoconf
automake
kernel
( 注:打*的,你必须更新 )


1-2 安装中文locale环境

如果你使用的是RH 7,请到我的网页下载zh_CN for glibc 2.2,然后用lcoaledef来产生相应的中文环境,(关于具体问题请参看Wu yulun的 如何在RedHat7.0中安装Chinput3.0中文输入法一文).

安装locale很简单,

rpm -ivh locale-zh-0.97.src.rpm
- 会在/usr/src/redhat/SPECS 下产生一个locale-zh-0.97.spec,

rpm -ba locale-zh-0.97.spec
- 重建这个包.会在/usr/src/RPMS/i386 下产生一个相应的binary包,安装它吧!

他会生成3个环境定义

zh_CN.GB2312 我们需要的就是这个
zh_CN.BIG5 繁体中文环境
zh_CN.GBK 作者说这个是他从TLC借过来,除了测试没有什么太大用处


1-3 测试中文locale

不必要写个程序来测试了.很简单的,首先

export LC_ALL=zh_CN.GB2312 -设定中文环境

输入命令rpm -qi kernel,看看时间部分是不是由 *d-*m-*y => *y-*m-*d,如果没有问题,说明locale-zh安装成功.


1-4 让gnome支持中文

修改 /usr/lib/X11/locale/locale.alias,加入一行:

zh_CN.GB2312 zh_CN.eucCN

该命令指定当终端locale为 zh_CN.GB2312 时,X Windows 使用 zh_CN/XLC_LOCATE 为场所定义。

/usr/lib/X11/locale/目录下没有zh_CN/XLC_LOCALE,所以我们做一个连接就可以了:

ln -s /usr/lib/X11/locale/zh/XLC_LOCALE /usr/lib/X11/locale/zh_CN/XLC_LOCALE

修改 /etc/gtk/gtkrc.zh_CN 将所有的字体定义改为:

fontset = "-*-*-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
-*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0"

采用16点的汉字,这样会看起来舒服一点.


二.安装中文输入法Chinput

2-1 安装pth

tar -zxvf pth-1.3.7.tar.gz
./configure --prefix=/usr #以便pth lib被安装在/usr/lib/
make
make install


2-2 安装unicon

将 unicon2-im 解到 /usr/lib 目录下即可.


2-3 安装Chinput 3.01

tar -zxvf Chinput-3.0.tar.gz

拷贝Chinput-3.0-1.patch到Chinput 3.0目录下patch -p1 < Chinput-3.0-1.patch #打3.0.1的补丁

make
make install

修改 /usr/lib/ZWinPro/Chinput.ad 文件:

由于 XFree86 没有自带的 BIG5 码字体,若你不需要输入 BIG5 码字符,则对 Chinput.ad 做以下调整:

...
chinput.gblocale = zh_CN.GB2312
chinput.big5locale = zh_CN.GB2312
...
chinput.gbfont = -*-*-medium-r-normal--16-*-*-*-c-*-gb2312.1980-0
chinput.big5font = -*-*-medium-r-normal--16-*-*-*-c-*-gb2312.1980-0

注意:在 Chinput.ad 的字体定义中,不能出现空格,这是由于 Chinput 的限制。(应该使用Tab)

由于 Chinput 需要 libstdc++-lib6.1-2.so.3,而 RedHat 的 compat-libstdc++ 兼容库中只包含 libstdc++-2-libc6.1-1-2.9.0.so,则需手动建立一个库链接:

ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.1-2.so.3


2-4 启动Chinput

让你每次启动xwindows的时候都有中文支持,修改你的.bashrc ,加入:

export LC_ALL=zh_CN.GB2312
export LC_LANG=zh_CN.GB2312
export XMODIFIERS=@im=Chinput

到此,linux的汉化基本完成,进入 X Windows 环境。选择Run,输入 chinput,中文输入服务器就加载了。你可以打开一个支持vim的软件(gedit),敲入 ctrl-space 就会出现输入条.

注:chinput 输入服务器,仅对支持 XIM 的软件有效,如果该软件支持这种输入 方式,敲入 ctrl-space 就会出现输入条,否则无任何显示。
文章评论

共有 4 条评论

  1. she 于 2005-09-12 21:12:26发表:

    现在的red hat基本上能安装时就支持中文了

  2. yo 于 2005-09-12 00:37:04发表:

    支持

  3. reing 于 2005-09-02 11:38:15发表:

    今天搞到一张RedHat 7.0(北京LINUX俱乐部版本,中关村刚刚上市),感觉真是太棒了。别的都不说了,由于它采用了XFree86 4.0和glibc 2.2,使得它对东方语系和TrueType的支持性能非常完好,整个中文化工作我只用了十分钟不到就完成了。准备好了吗? Let's go FREE


    一 所需要的软件包

    zh_CN for glibc 2.2 -- glibc 2.2的中文定义文件
    Chinput 3.0 + Chinput 3.0-patch -- 中文输入法及补丁
    unicon 2 -- Chinput的表码库
    pth -- 可移植线程库

    以上软件包你可以到我的主页上下载( http://www.linuxorb.net )


    二 简体中文环境的安装

    2-1 生成简体中文locale
    把下载的zh_CN.gz解包: gunzip zh_CN
    执行命令:localedef -f GB2312 -i zh_CN zh_CN.gb2312
    如果没有意外的话,在 /usr/lib/locale 下会增加 zh_CN.gb2312目录。

    2-2 测试简体中文locale
    由于这个zh_CN定义包含了较多的中文信息,和前两篇文章当中介绍的那个取自于台湾CLE的locale相比,中文信息多多了。
    使用中文locale:export LC_ALL=zh_CN.gb2312
    测试中文locale:执行命令date,看看有没有变化。

    注:在我使用的RedHat 7.0上,我只做了上述的工作,startx就可以看到中文了,最明显的是Gnome的那个桌面时钟变成中文的了。如果在你的RedHat 7.0
    上有什么问题的话,希望能够告诉我。


    三 TrueType字体的使用

    由于RedHat 7.0使用了XFree86 4.0,所以它对TrueType字体有着良好的支持。

    2-1 xfs字体服务
    默认情况下,RH 7采用了xfs,请关闭它:setup->system service->去掉xfs前面的*。同时请更改/etc/X11/XF86Config.4,把 FontPath "unix/:7100" 这一行注释掉。

    2-2 获得TrueType字体
    mkdir /usr/X11R6/lib/X11/fonts/trueType
    cp /windows/fonts/simsun.ttf /usr/X11R6/lib/X11/fonts/TrueType

    cd /usr/X11R6/lib/X11/fonts/TrueType
    ttmkfdir>fonts.dir -- 生成fonts.dir
    我使用的Windows 98是SE版本,将生成的fonts.dir改成了下面的样子.

    3
    simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0 simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0 simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1

    生成fonts.scale:cat fonts.dir>fonts.scale

    2-3 让XFree86能够解析TrueType
    进入 /etc/X11 目录,打开 XF86Config-4 文件,将 FontPath 改为你所需要的字体路径。
    Section "Files"
    # FontPath "unix/:7100"
    FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
    FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
    FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
    FontPath "/usr/X11R6/lib/X11/fonts/misc"
    FontPath "/usr/X11R6/lib/X11/fonts/Type1"
    FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
    FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
    FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
    FontPath "/usr/X11R6/lib/X11/fonts/TrueType"
    FontPath "/usr/share/fonts/default/Type1"
    EndSection

    加载 X-TrueType 字体解释器。
    Section "Module"
    ...
    Load "xtt"
    EndSection

    2-4 让gnome使用TrueType
    修改/etc/gtk/gtkrc.zh_CN,让gtk使用TrueType字体。

    style "gtk-default-zh-cn" {
    "-misc-SimSun-medium-r-normal--12-0-0-0-p-0-*-*" 
    }


    四 Chinput的安装

    请参考 汉化你的RedHat全功略( 1 ) - 中文环境和中文输入法的安装


    五 Gnome桌面的中文显示

    RH 7.0的/usr/share/locale目录下有一个zh_CN.GB2312,包含很多中文mo,由于我们的中文locale是zh_CN.GB2312,所以做一个连接就可以了。
    ln -s /usr/share/locale/zh_CN.GB2312 /usr/share/locale/zh_CN.gb2312

    在进入到X,是不是有些菜单是中文的了!由于Gnome的中文翻译小组到现在还只翻译了一部分的po,所以我们只能看到一部分的中文。

    当然,你还可以通过修改/usr/share/gnome下有关gnome配置文件来显示中文,前面的文章已经介绍过了,不再重复。


    六 Gedit和NetScape

    这两个软件是我在RH上使用最为频繁的两个软件,他们都可以很好支持i18n协议,在菜单edit->preferance下把相关的编码和字体改为chinese就可以了。

  4. reing 于 2005-09-02 11:37:20发表:

    在上一篇文章当中,我向大家介绍了如何安装中文环境和输入法,不知道大家留意到没有,Gnome的桌面字体是非常难看的。想个办法让他好看一点吧。最好的办法当然是让Redhat接受TrueType字体。

    如果你使用的不是Redhat 7.0的话,很不幸,他们所附带的Xf86对TrueType字体的支持并不是很好,甚至可以用非常的差来形容。所以,确定你的Xfree86版本是4.0以上版本是非常必要的。(RH 6.2的Xfree86是3.3.6版本)

    注:网上有文章介绍如何让Xfree 3.3.6支持TrueType,我测试过了,好像并不怎么行,小弟不才,请高手指点!!

    一.XFree86

    1-1 确定Xfree86的版本
    如果你使用的是Redhat 7.0以下的版本,你需要升级你的Xfree86.

    1-2 获得Xfee86 4.01

    下载下面这些软件包(from xree86.org)
    Xlib.tgz
    Xetc.tgz
    Xdoc.tgz
    Xf100.tgz
    Xfcyr.tgz
    Xfenc.tgz
    Xflat2.tgz
    Xfnon.tgz
    Xfnts.tgz
    Xfscl.tgz
    Xfsrv.tgz
    extract

    Xinstall.sh
    Xinstall.bin
    Xjdoc.tgz
    Xhtml.tgz
    Xman.tgz
    Xnest.tgz
    Xprog.tgz
    Xmod.tgz
    Xprt.tgz
    Xps.tgz
    Xvar.tgz
    Xvfb.tgz
    Xxserv.tgz

    总共大概是20M,一个多小时可以下载完毕!

    1-3 升级Xfree86

    其实Xfree86的升级是超级简单,但是在升级以前请备份下面的两个文件:

    /etc/X11/xinitrc/Xclients -- 将来可以用他成为启动X的预读文件
    /usr/X11R6/bin/startx -- 新的startx好像不会读取gnome的gtk资源文件.

    到新的Xree86目录下面

    ./Xinstall.sh -- 安装XFree86
    然后一路 [y] 下去就可以了.

    然后,你就得用xf86config之类的命令来配置XF86Config文件.详细的方法不说了,请参考其他文章.

    然后:
    cp startx /usr/X11R6/bin/startx -- 用旧的startx覆盖新的.
    cp Xclients /etc/X11/xinitrc/xinitrc -- startx会读取这个文件,选用给定的桌面.(一般是gnome)

    修改/etc/xinitrc,注释掉文件最后这些
    xclock -geometry 100x100-5+5 &
    xterm -geometry 80x50-50+150 &
    if [ -f /usr/bin/netscape -a -f /usr/doc/HTML/index.html ];
    then netscape /usr/doc/HTML/index.html &
    fi
    if [ -f /usr/X11R6/bin/fvwm ]; then
    exec fvwm
    else exec twm
    fi
    (不同版本的RH可能会用一些不一样)

    如果一切顺利,startx后会进入gnome环境!

    二 字体

    2-1 xfs

    新的xfree86默认是不使用xfs,如果是想使用TrueType,我也不推荐使用xfs.所以 setup->system service->关闭xfs

    2-2 得到TrueType字体

    mkdir /usr/X11R6/lib/X11/fonts/trueType -- 建立TrueType的存放目录
    cp /windows/fonts/simsun.ttf /usr/X11R6/lib/X11/fonts/TrueType
    -- 将你win98下的simsun字体复制到linux下.

    cd /usr/X11R6/lib/X11/fonts/TrueType
    ttmkfdir>fonts.dir -- 生成fonts.dir

    我使用的Windows 98是SE版本,将生成的fonts.dir改成了下面的样子.

    3
    simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0
    simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
    simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1

    生成fonts.scale:cat fonts.dir>fonts.scale

    2-3 让XFree86能够解析TrueType
    修改/etc/X11/XF86Config,找到解析Fonts的地方,由于FreeType和xtt解析不能够共存,所以我们关闭FreeType解析,打开xtt解析。

    # This loads the Type1 and FreeType font modules
    Load "type1"
    # Load "freetype"
    Load "xtt"

    然后,还是修改/etc/X11/XF86Config,加入字体搜索路径:

    FontPath "/usr/X11R6/lib/X11/fonts/local/"
    FontPath "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
    FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
    FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
    FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
    FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
    FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
    FontPath "/usr/X11R6/lib/X11/fonts/TrueType/" <-加入这一行

    (注:默认条件,新的XFree86不使用xfs)

    2-4 让gnome使用TrueType

    修改/etc/gtk/gtkrc.zh_CN,让gtk使用TrueType字体。

    style "gtk-default-zh-cn" {
    "-misc-SimSun-medium-r-normal--12-0-0-0-p-0-*-*" 
    }

    三 享受TrueType

    到这里,你可以享受TrueType的乐趣了!

    把LC_ALL环境变量设定为zh_CN.GB2312(关于中文环境及中文输入法的安装请参考上一章),startx看一下吧!!

    让netscape使用TrueType
    Edit->Preferance->Fonts 将相应的字体项目改为chinese的就够了。

    汉化 GNOME 的菜单项:
    在 /usr/share/gnome/apps/ 下,有一些以 .desktop 为后缀的文件,打开该文件,加入一行

    Name[zh]=你想要的中文名

    则可对相应的菜单项增加中文名,很容易,一看就会。
    GNOME 的个人菜单项存放在 HOME 目录下的 .gnome/apps目录里,形式相同。


    后记:

    以上是本人安装TrueType字体支持的全过程,如果各位还有什么问题,请发信到bigluo@china.com

    事情到这里看起来好像是非常完美了,X-Windows有了中文支持,有了中文输入法,可以使用TrueType字体。但是事实并不是这样的,BUGS很多,中文的支持也是非常的不完整:

    Gnome所附带的程序当中,好像就有一个gedit是支持vim协议的。

    在qt 1.42的时候,有一个zh_qt-1.4.2.patch可以让kde支持中文,1.44的qt加入更好的东方语系的支持但是好像还需要一个补丁,所以当你在gnome环境下看kde菜单的内容是中文的,但是一旦你使用kde桌面,就变成乱码了。

    gedit对TrueType的支持也不是太好,一旦把它的字体设置成为TrueType,他就会当掉。

    等等。。。。太多了

    我们选择Linux的原因是它的自由性,台湾人很无私的做到了这一点,我们目前所能够看到的合用到的中文支持,好多来自于台湾。我们又做了些什么?看看那些这个版本那个版本的中文Linux,充其量不过是把RedHat拿回来汉化了一遍而已,是如何汉化的呢?-不告诉你,因为这是他们赚钱的法宝!

    Linux到如今,还并不是一个稳定成熟的系统,在中国流行起来也不过是一两年而已,现在就靠他想赚钱,总有一天会走上。。