Re: Fwd: Re: Add Chinese Locale in Debian?
On Mon, Jun 14, 1999 at 11:12:14AM +0800, hashao wrote:
> I guess this email was intended to this list. So I take the liberty to
> just forward it. :)
>
Sorry that in my previous reply I only press 'r' in mutt, so it only
goes to your mail box but does not go to the mailing list. Thank you
very much to forward it to the mailing list. :-))
> For English translation of your i18ntool page, Tung Han, I think it
> will be quite useful. Not only that we shall not assume everyone want
> to install a valid Chinese locale can read Chinese at the moment, but
> also the i18ntool is general enough to be used on system other than
> Linux. Although most commercial UNIX come with better locale support,
> but I don't know if they always ship far east locale with their
> package. Just a thought that someone other than a Chinese might want
> to have a Chinese locale installed on a server. So please... ;)
I have done the translation:
http://xcin.linux.org.tw/files/i18n_tool.Big5.html (In Big5 Chinese)
http://xcin.linux.org.tw/files/i18n_tool.En.html (In English)
Since we should make it general and readable to all the people (especially
to the foreign :-)), so I modify the contents a little and add some
explainations. The English version is also attached in the end of this mail.
Since my English is not well, so if you find any mistake or un-readable
contents in the doc, please feel free to tell me, or just modify it directly.
Best Regards,
T.H.Hsieh
This package includes a zh_TW.Big5 and a zh_CN.GB2312 locale data, and
a fixed lcGen module. These can help to you establish the needed locale
environment in Linux and FreeBSD.
In the following I take Linux system as the example to explain briefly
how to establish the locale environment in your system. Besides the
libwcsmbs and the wcsmbs-locale espects which are only related to Linux,
the method to establish the locale environment in FreeBSD is the same.
A. zh_TW.Big5:
Assuming that your system is Linux with glibc-2.0.7, XFree86 3.3.2.X
or later releases, you can follow the steps below to establish the
zh_TW.Big5 locale environment. Please note: Before you starting, you
should make sure that if all the packages or files mentioned in the steps
are already in your system or not. If yes, you can just bypass the
corresponding step, or you have to finish them one after one.
If you are using glibc-2.1.X or later releases, then you can skip the
1st and 2nd steps and start from the 3rd step. If you are using CLE
(Chinese Linux Extension) distribution, then CLE should have prepared
all of these, so you don't have to do anything at all.
1. Install libwcsmbs. This lib is used to fix glibc-2.0.7 such that it
can support to zh_TW.Big5 and other Asian locales. You can find it in
ftp://xcin.linux.org.tw/pub/xcin/i18n/libwcsmbs-0.0.4.tar.gz
The steps to install it are
tar -xvzf libwcsmbs-0.0.4.tar.gz
cd libwcsmbs-0.0.4
make
make DESTDIR=/usr/local install
2. Install wcsmbs-locale package. Please note that you have to install the
version which is modified by Platin, the coordinator of CLE, since in
that modification the zh_TW.Big5 locale data has been added. You can
find it in
ftp://xcin.linux.org.tw/pub/xcin/i18n/wcsmbs-locale-0.4.7.tar.gz
The steps to install it are
tar -xvzf wcsmbs-locale-0.4.7.tar.gz
cd wcsmbs-locale-0.4.7
make map
make
make install
3. If in your system there already has a zh_TW.Big5/ or zh_TW.BIG5/
directory in /usr/share/locale/, and there also has a LC_CTYPE file
in that directory, then you can skip this step. If not, please go
to the directory i18n_tool/localedata/zh_TW.Big5/ and run the command:
localedef -i zh_TW.Big5 -f BIG5 zh_TW.Big5
Please note: If you are using glibc-2.1.X and the above command gives
error messages, please use this command instead:
localedef -i zh_TW.Big5 -f BIG5 -u charids.894 zh_TW.Big5
After that, there will be a zh_TW.big5 directory in the /usr/share/locale/.
But in the convention of CLE, the locale name is zh_TW.Big5; while in
other conventiion (such as FreeBSD) the name is zh_TW.BIG5, so you can
choose one of the convention to follow. Here we will follow the convention
of CLE. So we should change the directory name "zh_TW.big5" into
"zh_TW.Big5".
4. Please check the /usr/X11R6/lib/X11/locale/ directory to see if there
exists the zh_TW.Big5/ directory (here you should use the convention
you just choosed, see step 3 for details), and in that directory there
is a file named XLC_LOCALE. If not, please put the file
xcin-2.5/localedata/zh_TW.Big5/XLC_LOCALE into the directory
/usr/X11R6/lib/X11/locale/zh_TW.Big5
(you might need to create this directory). Then please modify the file
/usr/X11R6/lib/X11/locale/locale.dir
to add the line in the end of the file:
zh_TW.Big5/XLC_LOCALE zh_TW.Big5
Besides, please check the contents of
/usr/X11R6/lib/X11/locale/zh_TW.Big5/XLC_LOCALE
to see the following two lines
use_stdc_env True
force_convert_to_mb True
Please make sure that their values are both "True".
5. You have to prepare suitable Chinese (Big5) fonts. From the definition
of XLC_LOCALE in step 4, the font to display Chinese in zh_TW.Big5 locale
is named BIG5-0. Therefore your system should have these fonts (or, you
can modify the contents of XLC_LOCALE such that the corresponding font
name matches those in your system). Take my system as an example, since
I have installed the twmoe fonts (you can get them from:
ftp://linux.cis.nctu.edu.tw/packages/chinese ftp site), which has
the font name ended with "big5-1", so I have to alias these font names
to ended with "big5-0":
THH:thhpc $ xlsfonts | grep big5
-twmoe-kai-medium-r-normal--16-160-75-75-c-160-big5-1
-twmoe-kai-medium-r-normal--24-240-75-75-c-240-big5-1
-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0
-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0
THH:thhpc $ more /usr/X11R6/lib/X11/fonts/chinese/fonts.alias
-twmoe-kai-medium-r-normal-fs-16-160-75-75-c-160-big5-0 -twmoe-kai-medium-r-normal--16-160-75-75-c-160-big5-1
-twmoe-kai-medium-r-normal-fs-24-240-75-75-c-240-big5-0 -twmoe-kai-medium-r-normal--24-240-75-75-c-240-big5-1
6. In most releases of XFree86, there is a problem in Xlib such that it
cannot handle Big5 encoding correctly. In some systems (such as CLE)
this problem has been fixed, but others do not. You can do the following
tests:
a. Please install xcin-2.5 and rxvt-2.6.X packages, which can be
found at
ftp://xcin.linux.org.tw/pub/xcin/xcin/xcin-2.5.X.tar.gz
ftp://xcin.linux.org.tw/pub/xcin/crxvt/rxvt-2.6.X.tar.gz
(please see the documents in xcin-2.5 for detailed installation
instructions), and try to see if you can input Chinese characters
from xcin into rxvt or not? If yes, then your Xlib is OK and you
don't need to fix it. If you even cannot start up xcin, or if you type
ctrl+alt+0 in rxvt but cannot switch xcin into Chinese input mode,
it means that you have made mistakes when establishing the locale
environment, or you does not setup xcin correctly. Please check again.
b. A simpler method: Please add the following lines into your
$HOME/.Xdefaults:
xtDefaultFontSet: -*-big5-0,-adobe-*-iso8859-1
xedit*international: True
xedit*fontSet: -*-big5-0,-adobe-*-iso8859-1
and run the commands
xrdb merge $HOME/.Xdefaults
export LC_CTYPE=zh_TW.Big5
xedit &
Now you can try to use mouse to cut & copy the following Big5 Chinese
texts into xedit:
您好,這是一段 Big5 編碼的文字。
If you can see Chinese characters in xedit, then your Xlib is OK,
otherwise you should fix your Xlib.
There are two methods to fix this problem:
a. patch Xlib, rebuild Xlib:
This might be a terrible work, but it is also the most completed
way. Please download XFree86 source code first (it would be better
to get the version of 3.3.2 or above), then apply the
i18n_tool/lcGen/lcGenConv.c.patch patch into lib/X11/lcGenConv.c
of XFree86's source tree:
cd <path_of_XFree86>/lib/X11
patch -p0 < <path_of_i18n_tool>/lcGen/lcGenConv.c.patch
Finally you can follow the documents of XFree86 to rebuild libX11.
Please note that the patch described above comes from the modification
of XFree86-3.3.2.3, but it should be applicable to XFree86-3.3.2 and
its later releases. If there are error messages when you applying
this patch, you probably have to modify the code by yourself. It
should not be difficult :-))
b. You can also go to i18n_tool/lcGen directory and run make. After that
you will get a lcGen.so shared library. Every time when you want to
run Xi18n related programs (such as rxvt), please use this command
(take rxvt as the example):
LD_PRELOAD=<path_of>/lcGen.so <path_of>/rxvt <other_options>
That is, we use lcGen.so to replace the problem function of Xlib.
B. zh_CN.GB2312:
The method to establish this locale is very similar to that of zh_TW.Big5.
The steps are also the same. Hence I only mention the difference of them
in detail:
1. If you are using glibc-2.0.7, please install the libwcsmbs-0.0.4.tar.gz
package.
2. If you are using glibc-2.0.7, please install the wcsmbs-locale-0.4.7.tar.gz
package.
3. If there is already a directory zh_CN.GB2312 in /usr/share/locale/ of
your system and in that directory there is a LC_CTYPE file, then you
can skip this step. Otherwise, please go to the directory
i18n_tool/localedata/zh_CN.GB2312/ and run
localedef -i zh_CN.GB2312 -f GB2312 zh_CN.GB2312
Please note, if you are using glibc-2.1.X and the above command gives
error messages, please use this command instead:
localedef -i zh_CN.GB2312 -f GB2312 -u charids.894 zh_CN.GB2312
After that, there will be a directory zh_CN.gb2312 appeared in
/usr/share/locale/ diretory. Please change its name to be zh_CN.GB2312.
If you are using glibc-2.1.X, please check the contents of
/usr/lib/gconv/gconv-modules to search for the word "EUC-CN". Probably
in line 880, you will see the following contents:
# from to module cost
alias EUCCN// EUC-CN//
alias GB2312// EUC-CN//
module EUC-CN// INTERNAL EUC-CN 1
module INTERNAL EUC-CN// EUC-CN 1
Please note the line 3 above: "alias GB2312// EUC-CN//". If in your
file there does not have this line, please add it by yourself.
4. XFree86 already has the XLC_LOCALE file for GB encoding, so you don't
need to install it. However, it is placed in
/usr/X11R6/lib/X11/locale/zh/
Therefore you have to modify the file locale.dir to add this line:
zh/XLC_LOCALE zh_CN.GB2312
5. You should install the GB fonts, with the font names ended with
"GB2312.1980-0". You can try to find the GB font tar file in XFree86
packages, or search for them in the ftp sites.
6. There is no problem in Xlib to handle the GB encoding like the problem
in Big5 encoding, so you don't need to do any fixes in Xlib.
Author: Tung-Han Hsieh
Email: thhsieh@linux.org.tw
Reply to: