i18n_tool-7
-----------
¥»¤å»¡©ú¦p¦ó¦b GNU/Linux ¨t²Î¤U¡A¨Ï¥Î glibc-2.0.7 ¥H¤Î XFree86-3.3.4 ¥H
«e (¥]§t XFree86-3.3.4) ª©¥»¤¤«Ø¥ß zh_TW.Big5 »P zh_CN.GB2312 locale Àô
¹Ò¡C
½Ðª`·N¡A¥Ñ©ó glibc-2.0.7 ¤Î XFree86-3.3.4 ¥H²{¦bªº²´¥ú¨Ó¬Ý¦¤w¹L®É¡A¦Ó
¥B³o¨Ç¨t²Îªº I18N Àô¹Ò¨Ã¤£¦¨¼ô¡A¤£¾A¦X®³¨Ó«Ø¥ßªF¤è»y¨tªº locale (¯S§O
¬O§Ú̪º zh_TW.Big5 locale)¡C¾¨ºÞ³o¨Ç¥i¥H³z¹L¥»¤å´yzªº¤è¦¡¥[¥H§JªA¡A¦ý
¤´µM·|¦³³\¦h¼ç¦bªº°ÝÃD¦s¦b¡C¬G¦pªG±zªº¨t²ÎÁÙ¦b¨Ï¥Î¥¦Ìªº¸Ü¡A§Ú̱j¯P«Ø
ij±z¤É¯Å¨ì glibc-2.1.3 »P XFree86-3.3.6 ªºª©¥»¡A¨Ã°Ñ¦Ò README.Big5 ªº»¡
©ú¨Ó«Ø¥ß locale Àô¹Ò¡C°£«D±¡«D±o¤w¡A§_«h½Ð±z¤£n¦AÄ~Äò°Ñ¦Ò¥»¤å¥H¤Uªº¤º
®e¤F¡C
¦Ü©ó¤ñ glibc-2.0.7 ÁÙn¦´Áªºª©¥»¡A§¹¥þ¤£¾A¦X¥Î¨Ó«Ø¥ßªF¤è»y¨tªº locale
Àô¹Ò¡A¬G¤£¦b°Q½×¤§¦C¡C
A. zh_TW.Big5:
---------------
°²³]±zªºÀô¹Ò¬O GNU/Linux, ¨Ï¥Îªº¬O glibc-2.0.7, XFree86 3.3.2.X - 3.3.4 ªº
ª©¥»¡A«h±z¥i¥H¨Ì¥H¤Uªº¨BÆJ«Ø¥ß°_ zh_TW.Big5 locale ªºÀô¹Ò¡C½Ðª`·N¡A¦b±z¶}
©l¤§«e¡A½Ð¥ý½T©w¥H¤U¨BÆJ©Ò´£¨ìªº®M¥ó©ÎÀɮ׳]©w¬O§_¤w¦b±zªº¨t²Î¤¤? ¦pªG¬Oªº
¸Ü¡A«h±z¥i¸õ¹L¸Ó¨BÆJ¡A§_«h½Ð¨Ì§Ç±N¥¦Ì§¹¦¨¡C
¦pªG±z¨Ï¥Îªº¬O CLE (Chinese Linux Extension) distribution, «h CLE ¥»¨À³
¸Ó¤w·Ç³Æ¦n©Ò»ÝªºÀô¹Ò¡A«h±z¥i¥Hª½±µ¸õ¹L¥H¤U©Ò¦³ªº¨BÆJ¡C
1. ¦w¸Ë libwcsmbs¡C¦¹ lib ¬O¥Î¨Ó×¥¿ glibc-2.0.7 ¹ï zh_TW.Big5 ¤Î¨ä¥L locale
ªº¤ä´©¡C±z¥i¥H¦b³o¸Ì§ä¨ì¥¦:
ftp://xcin.linux.org.tw/pub/xcin/i18n/old/libwcsmbs-0.0.4.tar.gz
¦w¸Ë¨BÆJ¦p¤U:
tar -xvzf libwcsmbs-0.0.4.tar.gz
cd libwcsmbs-0.0.4
make
make DESTDIR=/usr/local install
2. ¦w¸Ë wcsmbs-locale ®M¥ó¡C½Ðª`·N±z¥²¶·¦w¸Ë CLE ¤¤×§ï¹Lªºª©¥»¡A¦]¬°¸Ó
ª©¥»¤w¥[¤Jªº zh_TW.Big5 locale¡C±z¤]¥i¥H¦b³oùاä¨ì¥¦:
ftp://xcin.linux.org.tw/pub/xcin/i18n/old/wcsmbs-locale-0.4.7.tar.gz
¦w¸Ë¨BÆJ¦p¤U:
tar -xvzf wcsmbs-locale-0.4.7.tar.gz
cd wcsmbs-locale-0.4.7
make map
make
make install
3. Y¦b±zªº¨t²Î /usr/share/locale/ ¥Ø¿ý¤U¤w¦³ zh_TW.Big5 ¥Ø¿ý¡A¥B¨ä©³¤U
¤w¦³ LC_CTYPE ÀÉ¡A«h±z¥i¥H¸õ¹L³o¤@¨B¡C§_«hªº¸Ü¡A½Ð¨ì
i18n_tool/localedata/zh_TW.Big5/ ¥Ø¿ý¤U¡A°õ¦æ:
localedef -i zh_TW.Big5 -f BIG5_1984 zh_TW.Big5
§¹¦¨«á¡A±zªº /usr/share/locale/ ¥Ø¿ý¤U´N·|¥X²{ zh_TW.big5 ¥Ø¿ý¡C¦ý
¦b CLE ªººD¨Ò¤¤¡Alocale ¦W¬° zh_TW.Big5, ¦b¦¹¥»¤å¤]¿í¦u³o¼ËªººD¨Ò¡C
¬G½Ð±N /usr/share/locale ¥Ø¿ý¤Uªº zh_TW.big5 ¥Ø¿ý§ï¦W¬° zh_TW.Big5¡C
4. ½ÐÀˬd±zªº /usr/X11R6/lib/X11/locale/ ¥Ø¿ý¤U¬O§_¦³ zh_TW.Big5/¡A¥B¸Ó¥Ø
¿ý¤U¦³ XLC_LOCALE ÀÉ¡CYµL¡A«h½Ð±N
i18n_tool/localedata/zh_TW.Big5/XLC_LOCALE ÀÉ©ñ¨ì
/usr/X11R6/lib/X11/locale/zh_TW.Big5
¥Ø¿ý¤U (±z¥i¯à»Ýn¦Û¦æ«Ø¦¹¥Ø¿ý) ¡A¦P®É×§ï
/usr/X11R6/lib/X11/locale/locale.dir ÀÉ¡A¦b³Ì
«á¥[¤J³o¤@¦æ:
zh_TW.Big5/XLC_LOCALE zh_TW.Big5
°£¦¹¤§¥~¡A¤]½Ð±zÀˬd¤@¤U /usr/X11R6/lib/X11/locale/zh_TW.Big5/XLC_LOCALE
Àɪº¤º®e¡A¨ä¤¤¦³¨â¦æ¬°:
use_stdc_env True
force_convert_to_mb True
½Ð½T©w¥¦ÌªºÈ¬O³]¬° True ¡C
5. ±z¥²¶··Ç³Æ¾A·íªº¤¤¤å¦r«¬¡C´N²Ä 4 ÂIªº XLC_LOCALE ªº©w¸q¡AÅã¥Ü zh_TW.Big5
locale ¤¤¤å¦r«¬ªº³¡¤À¬O BIG5-0, ¬G±zªº¨t²Î¤¤¥²¶·n¦³³oÃþ¦r«¬¡C¥H§Úªº¨t²Î
¬°¨Ò¡A¦]¬°§Ú¦w¸Ëªº¬O twmoe ¦r«¬ (±z¥i¥H¦b
ftp://linux.cis.nctu.edu.tw/packages/chinese
§ä¨ì¥¦Ì)¡A¨ä¦r«¬¦W¥½§À¬O big5-1, ¬G§Ú¬O±N³o¨Ç¦r«¬ alias ¦¨¥½§À¬O 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. ¦b¤j³¡¤Àªº XFree86 ª©¥»¤¤¡A¨ä Xlib ¦³¤@Ó°ÝÃD¡A³o¨Ï±o Xlib µLªk¥¿½T³B
²z Big5 ½X¡C¦³¨Ç¨t²Î¤¤ (¦p CLE) ¤w±N¦¹°ÝÃD×¥¿¡A¦³¨Ç«hÁÙ¨S¦³¡C±z¥i°µ¦p
¤Uªº´ú¸Õ:
½Ð¦b±zªº $HOME/.Xdefaults Àɤ¤¥[¤J¥H¤Uªº¤º®e:
xtDefaultFontSet: -*-big5-0,-adobe-*-iso8859-1
xedit*international: True
xedit*fontSet: -*-big5-0,-adobe-*-iso8859-1
µM«á°õ¦æ¥H¤Uªº«ü¥O:
xrdb merge $HOME/.Xdefaults
export LC_CTYPE=zh_TW.Big5
xedit &
±µµÛ±z¥i¥H¸ÕµÛ¥Î·Æ¹«°Å¶K¤@¬q Big5 ªº¤¤¤å¦r¨ì xedit, ¨Ò¦p°Å¶K©³¤U³o¤@¦æ:
±z¦n¡A³o¬O¤@¬q Big5 ½s½Xªº¤å¦r¡C
¦pªG±z¥i¥H¦b xedit ¤¤¨£¨ì¥¿½Tªº¤¤¤å¦r¡A«h±zªº Xlib ¨S¦³°ÝÃD¡A§_«hªº¸Ü
±z¥²¶·×¥¿ Xlib ªº°ÝÃD¡C
×¥¿ Xlib ªº°ÝÃD¤èªk¦³¤G:
a. patch Xlib, rebuild Xlib:
³o¬O³Ì³Â·Ðªº¤è¦¡¡A¦ý¤]¬O¤@³Ò¥Ã¶hªº¿ìªk¡C½Ð±z¥ý¨ú±o XFree86 ªºì©l½X
(ª©¥»³Ì¦n¦b 3.3.2 ¥H¤W)¡A¨Ã±N i18n_tool/lcGen/lcGenConv.c.patch ¥[
¤J XFree86 ªº lib/X11/lcGenConv.c ¤¤:
cd <path_of_XFree86>/lib/X11
patch -p0 < <path_of_i18n_tool>/lcGen/lcGenConv.c.patch
µM«á¦A«ö·Ó XFree86 ªº»¡©ú«·s make libX11¡C½Ðª`·N¡A¤Wzªº patch ¬O
±q XFree86-3.3.2.3 °µ¥X¨Óªº¡A¦ýÀ³¸Ó¥i¥H¾A¥Î©ó XFree86-3.3.2 ¥H¤Wªº
ª©¥»¡CY patch ¹L¦¨¤¤¦³¿ù»~°T®§¡A±z¥i¯à»Ýn¦Û¤v×§ï¥H¥[¤J patch, À³
¸Ó¤£Ãø :-))
b. ±z¤]¥i¥Hª½±µ¶i¤J i18n_tool/lcGen ¥Ø¿ý¤U¡A°õ¦æ make, «h·|°µ¥X lcGen.so
³oÓ shared library¡C«h¨C·í±zn°õ¦æ Xi18n ¬ÛÃöµ{¦¡®É¡A½Ð°O±o¨Ï¥Î³oÓ
«ü¥O:
LD_PRELOAD=<path_of>/lcGen.so <run Xi18n_program>
¤]´N¬O§Q¥Î lcGen.so ±N Xlib ¤¤¦³°ÝÃDªº³¡¤ÀÂл\±¼¡C
B. zh_CN.GB2312:
-----------------
¦¹ locale ªº«Ø¥ß¤è¦¡»P zh_TW.Big5 «D±`¬Û¦ü¡A¨BÆJ¤]¦P¤W¡A¬G¦b¦¹§Ú¥uÁ|¥X¤£¦P
ªº³¡¤À¸Ô¥[»¡©ú:
1. ¦w¸Ë libwcsmbs-0.0.4.tar.gz ®M¥ó¡C
2. ¦w¸Ë wcsmbs-locale-0.4.7.tar.gz ®M¥ó¡C
3. Y¦b±zªº¨t²Î /usr/share/locale/ ¥Ø¿ý¤U¤w¦³ zh_CN.GB2312 ¥Ø¿ý¡A¥B¨ä©³¤U
¤w¦³ LC_CTYPE ÀÉ¡A«h±z¥i¥H¸õ¹L³o¤@¨B¡C§_«hªº¸Ü¡A½Ð¨ì
i18n_tool/localedata/zh_CN.GB2312/ ¥Ø¿ý¤U¡A°õ¦æ:
localedef -i zh_CN.GB2312 -f GB2312 zh_CN.GB2312
§¹¦¨«á¡A±zªº /usr/share/locale/ ¥Ø¿ý¤U´N·|¥X²{ zh_CN.gb2312 ¥Ø¿ý¡C³o®É
½Ð±z§ï¦¨ zh_CN.GB2312 ¡C
4. XFree86 «Ü¦´N¦³ GB ½Xªº XLC_LOCALE ÀɤF¡A¬G±z¤£»Ýn¥t¥~¦w¸Ë¡A¤£¹L¥¦
¬O©ñ¦b:
/usr/X11R6/lib/X11/locale/zh/
¬G§ÚÌ¥un×§ï locale.dir ÀÉ¡A¥[¤J³o¤@¦æ:
zh/XLC_LOCALE zh_CN.GB2312
5. ±z¥²¶·¦w¸Ë GB ½Xªº¦r«¬¡A¥B¦r«¬ªº¥½§À¦W¥²¶·¬O GB2312.1980-0 ¡C±z¥i¥H¸Õ
µÛ¦b XFree86 ªº®M¥ó¤¤§ä§ä¬Ý¬O§_¦³ GB ¦r«¬¡A©Î¬O¨ì¦U ftp ¯¸·j´M¡C
6. Xlib ¦b³B²z GB ½X®É¤£·|¦³¹³ zh_TW.Big5 ªº°ÝÃD¡A¬G±z¤£»Ýn¹ï Xlib °µ¥ô
¦ó×¥¿¡C
C. °õ¦æ I18N µ{¦¡:
-------------------
¦b GNU/Linux ¤¤ glibc-2.0.7 »P XFree86-3.3.4 ¥H«eª©¥»ªºÀô¹Ò¤U¡A°õ¦æ I18N µ{
¦¡®É¤£¦ýn³]¦n locale¡A¦P®É¤]n°µ LD_PRELOAD ªº¤u§@¡C¦³Ãö³]©w locale ªº¤è¦¡
½Ð¨£ README.Big5 ªº»¡©ú¡A¦Ü©ó¦p¦ó°µ LD_PRELOAD? «h¤À¬°¥H¤U´XºØ±¡ªp¨Ó°Q½×:
1. ¦pªG±zªºµ{¦¡¤£¬O X Window À³¥Îµ{¦¡¡A«h¤£½×¬O¦b zh_TW.Big5 ©Î zh_CN.GB2312
locale ¤U¡A°õ¦æµ{¦¡«e³£¥²¶·¥Î¥H¤Uªº«ü¥O
LD_PRELOAD="<dir of libwcsmbs.so>/libwcsmbs.so" <run i18n_program>
¨ä¤¤ libwcsmbs.so «üªº´N¬O±z¦b²Ä¤@¨B©Ò¦w¸Ëªº libwcsmbs ®M¥ó¡C½Ðª`·N³o¤@
Ó LD_PRELOAD ¥u¦³¦b glibc-2.0.7 ¤¤¤~¯S§O»Ýn¡C
2. ¦pªG±zªºµ{¦¡¬O X Window À³¥Îµ{¦¡¡A«h¦b zh_CN.GB2312 locale ¤U¡A°õ¦æµ{¦¡
ªº«ü¥O¦P 1.¡C
3. ¦pªG±zªºµ{¦¡¬O X Window À³¥Îµ{¦¡¡A«h¦b zh_TW.Big5 locale ¤U¡A¥B±zªº Xlib
¤]¤w patch/rebuild ¹L¤F¡A«h°õ¦æµ{¦¡ªº«ü¥O¤]¦P 1.¡C
4. ¦pªG±zªºµ{¦¡¬O X Window À³¥Îµ{¦¡¡A«h¦b zh_TW.Big5 locale ¤U¡AµM¦Ó±zªº Xlib
¨Ã¨S¦³ patch/rebuild ¹L¡A«h°õ¦æµ{¦¡ªº«ü¥O¦p¤U:
LD_PRELOAD="<dir of libwcsmbs.so>/libwcsmbs.so <dir of lcGen.so>/lcGen.so" \
<run i18n_program>
¤]´N¬O¡A°£¤F glibc-2.0.7 ¯S§O»Ýnªº libwcsmbs.so ¥H¥~¡AÁÙn¦A¥[¤W¤@Ó
lcGen.so¡A³o¬O¥Î¨Ó×¥¿ Xlib ¤¤³B²z Big5 ¦r¤¸°ÝÃD¥Îªº¡C
§@ªÌ: ÁªF¿« (Tung-Han Hsieh)
Email: thhsieh@linux.org.tw