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¥»¤å´y­zªº¤è¦¡¥[¥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 ÀÉ¡C­Yµ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¤W­zªº patch ¬O
      ±q XFree86-3.3.2.3 °µ¥X¨Óªº¡A¦ýÀ³¸Ó¥i¥H¾A¥Î©ó XFree86-3.3.2 ¥H¤Wªº
      ª©¥»¡C­Y 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·í±z­n°õ¦æ 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§Ú­Ì¥u­n­×§ï 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