BBSˮľÇ廪վ¡Ã¾«»ªÇø

·¢ÐÅÈË: reden (OFFERÂíÉÏÀ´°É¡«), ÐÅÇø: Linux        
±ê  Ìâ: Linux µÄÖÐÎÄ»¯ÎÊÌâ¼ò½é 
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Sun Mar  7 20:52:35 1999) 
 
×÷Õß°´ 
 
   
          µ×ÏÂÕâÆªÎÄÕÂÊÇÎÒ×î½üд³ÌʽµÄÒ»µãµãÐĵ㬳ýÁËǰ¶Î 
   
          ²¿ÌÖÂÛÁË Linux I18N »·¾³Íâ (ÒÑÔÚ Linux Á¬Ïß°æÌù 
   
          ³ö)£¬áá°ë²¿»¹¼ÓÁËһЩÓйؠI18N ³Ìʽд×÷µÄ¼ò½é¡£ 
   
          ÎÒÏëÕâÆªÎÄÕ¾ͷ¢±íÔÚ CLDP ÉÏ£¬ Ï£Íû CLDP ¿ÉÒÔÊÕ 
   
          Â¼¡£¸üÏ£ÍûÕâÆªÎÄÕ¶ÔÓÐÐËȤµÄÅóÓÑÓаïÖú£¬ Èôó¼Ò 
   
          ÄÜÔçÈÕ½øÈë I18N µÄÊÀ½ç :-))  
 
   
          ÓÉì¶ÎÒËùÖªºÜÓÐÏÞ£¬ËùÒÔÎÄÕÂÖпÉÄÜÓкܶà´íÎ󣬶ø¹Ø 
   
          ì¶ Xi18n µÄ²¿·Ö£¬ ÎÒÒ²ÓкܶàÒòΪûÓÐÈ¥Ñо¿£¬¹ÊÂÔ 
   
          ¹ý²»ÌáÁË¡£ Òò´Ë£¬Ï£Íû¸÷λ¸ßÊÖÄܶà¶à¸øÎÒÅúÆÀÓ뽨 
   
          Ò飬 »ò°ïæÎÒ½«²»×ãÖ®´¦²¹Æë£¬ÈÃÕâÆªÎÄÕ¸üÍêÃÀ¡£  
 
   
          ÔÚ´ËÏÈлл¸÷λ¡£  
 
   
          Ð»¶«º² (Tung-Han Hsieh) < 
   
          thhsieh@twcpro.phys.ntu.edu.tw>  
 
 
 
   
                     Linux µÄÖÐÎÄ»¯ÎÊÌâ¼ò½é 
 
   
  Ò»¡¢Ç°ÑÔ:  
 
   
  ×î½üÕâ¸ö»°Ìâ´ó¼Ò³³µÃÓеãÀ÷º¦£¬´ó¼Ò¶¼Ï£Íû Linux ÄÜÔÚÖÐÎÄ·½ÃæÓР
   
  Ëù½ø ²½£¬¸÷¼ÒÓи÷¼ÒµÄ˵·¨£¬ÄªÖÔÒ»ÊÇ¡£ÓÉì¶ÎÒ×î½ü³£Óë CLE µÄ 
   
  group ÓÐÁªÏµ£¬ Í¬Ê±Ò²ÕýÔÚдһЩÓëÖÐÎÄÏà¹ØµÄ³Ìʽ£¬Òò´ËÎÒ´óÂÔ˵ 
   
  Ò»Ï¡¸ÎÒÃÇÕýÔÚ×öʲ÷᡹£¬ Èôó¼Ò²Î¿¼¡£  
 
   
  ÎÒÏ£Íû´ó¼ÒÄܽ«ÕâÆªÎÄÕµ±×ö¼¼ÊõÐÔÎÄÕÂÀ´¶Á£¬²»ÒªÔÙÓÐÇéÐ÷»¯µÄÅú 
   
  ÆÀ£¬±Ø¾³ ÎÒÃÇÒªµÄÊÇ solution, ÇéÐ÷»¯µÄÅúÆÀ¶ÔÎÒÃÇʵÔÚûÓаï 
   
  Öú¡£³ý´ËÖ®Í⣬ÎҵĹ۠µã¿ÉÄÜÓÐ´í£¬Ò²¿ÉÄܹý·ÝÀÖ¹Û£¬Ò²»¶Ó­´ó¼ÒÄÜ 
   
  ¾Í¼¼Êõ·½Ãæ¸øÓèÎÒÖ¸½Ì¡£  
 
   
  ¶þ¡¢ I18N Óë locale:  
 
   
  Òª½« Linux ÖÐÎÄ»¯£¬³¯Öø±ê×¼×ß²ÅÊdz¤Ô¶Ö®¼Æ¡£¸÷λÈç¹ûÓмû¹ý½ü´ú 
   
  ÉÌÒµ°æµÄ UNIX ¾Í»áÏþµÃ£¬ËüÃÇ¡¸ÖÐÎÄ»¯¡¹Ö®³¹µ×£¬ÁîÈ˾ªÌ¾£¬ÖîÈç 
   
  ÖÐÎÄÑ¡µ¥¡¢ÖÐÎÄѶϢ .... ÄúÄÜÏëÏñµÃµ½£¬»ò˵ֻÄÜÔÚ Win95/98/NT 
   
  OS/2 .... µÈÉÏÍ·²Å¼ûµÃµ½µÄ ÖÐÎÄ»·¾³£¬ËüÃǶ¼ÓС£È»¶ø£¬ËüÃǵÄÖР
   
  ÎIJ¢²»ÊÇÏñĿǰ Linux Éϳ£¼ûµ½µÄÄÇÑù£¬ ÓÉÒ»¶Ñ³ÌʽÆßÆ´°Ë´Õ³öÀ´ 
   
  µÄ£¬ËüÃÇÈ«²¿¶¼ÊÇ×ñÑ­Ò»¸ö±ê×¼: I18N ¡£  
 
   
  I18N ÊÇ InternationalizatioN (¹ú¼Ê»¯) µÄËõд£¬µÚÒ»¸ö×Ö I Óë×î 
   
  ááÒ»¸ö×Ö N Ö®¼äÓР18 µÄ×Öĸ£¬¹ÊÃû¡£ I18N ²¢²»ÊÇÖ»ÓбíÃæÉϽ« X 
   
  Window ¡¸¹ú¼Ê»¯¡¹ ¶øÒÑ£¬ËüÊÇ¡õ»ùÔÚ×îµ×²ãµÄ libc ÉÏ¡£ libc ±Ø 
   
  ÐëÒªÓРlocale µÄÖ§Ô®£¬²ÅÄÜÏò I18N Æð²½¡£  
 
   
  Ê²÷áÊÇ locale? ¼òµ¥Ëµ¾ÍÊÇÒ»×顸µØÇøÓïÑÔ¡¹µÄ×ÊѶ¡£Ëü°üÀ¨ÁË (Ïê 
   
  ¼û man setlocale):  
 
   
       LC_CTYPE: ×ÖÔª¶¨Òå  
   
       LC_MESSAGES: Ñ¶Ï¢ÏÔʾ  
   
       LC_TIME: Ê±¼äÏÔʾ¸ñʽ  
   
       LC_NUMERIC: Êý×ÖÏÔʾ¸ñʽ  
   
       LC_MONETARY: »õ±ÒÏÔʾ¸ñʽ  
   
       LC_COLLATE: ×Öĸ˳ÐòÓë×Ö´®±È½Ï  
 
   
  ÆäÖУ¬ÓëÒ»°ãʹÓÃÕß×îÓйØÏµµÄ£¬ÊÇ LC_CTYPE Óë LC_MESSAGES ¡£ 
   
  LC_CTYPE Ö± ½Ó¹ØÏµµ½Ä³Ð©×ÖÔª»òÄÚÂëÔÚĿǰµÄ locale ÏÂÊÇ·ñ¿ÉÓ¡? 
   
  ÒªÈçºÎת»»? ¶ÔÓ¦µ½ÄÇ Ò»¸ö×Ö? .... µÈµÈ¡£ LC_MESSAGES Ôò¹ØÏµµ½ 
   
  ÈíÌåµÄѶϢÊä³öÊÇʲ÷áÑùµÄÓïÎÄ¡£Õæ ÕýÍêÕûµÄ locale Ö§Ô®£¬Êǵ±ÎÒ 
   
  ÃÇÔÚ shell prompt Ï£¬Ö±½ÓÉèºÃ»·¾³±äÊý£¬ÔòÎÒ ÃÇÂíÉϾÍÄÜÇл»µ½ 
   
  ÄǸöÓïÎÄÁË¡£ÀýÈç:  
 
   
  bash: export LC_CTYPE=zh_TW.Big5  
 
   
  ÓÐÁË locale µÄ¡¸Ð­¶¨¡¹£¬Ê¹µÃÈκεØÇøµÄÓïÎÄ£¬Ö»ÒªÔÚ¼ÓÈëÊʵ±µÄ 
   
  locale data Ö®áᣬ libc ¾ÍÄÜÕýÈ·µØ´¦ÀíËüÁË£¬¶øÎÒÃǵġ¸ÖÐÎÄ¡¹ 
   
  µ±È»Ò²²»ÀýÍâ¡£ÓÉì¶Ç°ÈËÓë CLE group µÄŬÁ¦£¬Ä¿Ç°ÎÒÃÇÒÑÓÐ×Ô¼ºµÄ 
   
  locale data ÁË¡£Óа²×° CLE µÄÅóÓѿɠÒÔµ½ /usr/share/locale Ï 
   
  ¿´¿´£¬ zh_TW.Big5 ¾ÍÊÇÎÒÃǵĠlocale data, ËäÈ»»¹ ²»¹»ÍêÕû£¬µ« 
   
  ÒÑÄÜ work¡£  
 
   
  Ä¿Ç° Linux ¶Ôì¶ locale µÄÖ§Ô®ÈçºÎ? ¿ÉÒÔ´ó¸ÅµØËµ£¬Î÷·½Óïϵ²î²» 
   
  ¶àûÎÊÌâÁË£¬ µ«¶«·½Óïϵ»¹Óв»ÉÙÎÊÌâ¡£Èç¹ûÄúµÄ Linux ÏµÍ³ÊÇÓà
   
  libc5 (ÀýÈç Slackware) µÄ»°£¬ÄDz¶à¿ÉÒÔ˵֧ԮµÃÏ൱²î£¬¼¸ºõ 
   
  Ö»ÄÜ¿¿¡¸ÆßÆ´°Ë´Õ¡¹µÄ·½·¨À´ÓÐÏ޶ȵؠʹÓÃÖÐÎÄ¡£Èç¹ûÊÇÓàlibc6 
   
  (glibc2) µÄ»°£¬ÄǾÍÓÐÏ൱µÄ locale Ö§Ô®ÁË¡£  
 
   
  È»¶ø£¬Ä¿Ç°´ó²¿·ÖʹÓàglibc2 µÄϵͳ¶¼ÊÇ glibc-2.0.7, ÕâÒ»°æ¶Ô 
   
  ¶«·½ÓïϵµÄÖ§ Ô®»¹²»¹»ºÃ£¬ÌرðÊÇ LC_CTYPE £¬ËüÎÞ·¨±æÈÏ¡¢×ª»»ÎÒ 
   
  ÃǵĠBig5 Â룬±ØÐëÒªµÈµ½ glibc-2.1 ÒÔáᣬ²ÅÄÜÍêÈ«½â¾öÕâЩÎÊ 
   
  Ìâ¡£µ«Õâ²¢²»ÊÇ˵ʹÓàglibc-2.0.7 µÄ¹ã ´óʹÓÃÕß¶¼Ã»Ï£ÍûÁË£¬Ê 
   
  ÊµÉÏÓÐÒ»¸ö libwcsmbs µÄÌ×¼þ£¬Ëü¿ÉÒÔ½« glibc ÖÐÓÐÎÊ ÌâµÄ²¿·ÖÈ¡ 
   
  ´úµô£¬ÈÃÎÒÃǵĠLC_CTYPE ²¿·Ö¿ÉÒÔ¡¸¼¸ºõ 90% ÕýÈ·¡¹µØ¹¤×÷¡£¶øÕâ 
   
  ¸ö Ì×¼þ¾ÍÊÇĿǰ CLE µÄ±ê×¼Ö®Ò»£¬Ò²ÊǺÜÖØÒªµÄÒ»¸ö²¿·Ö£¬ËäÈ»´ó 
   
  ¼Ò¿ÉÄܸÐÊܲ»µ½Ëü µÄ´æÔÚ¡£  
 
   
  ×î½ü glibc-2.1 µÄ pre-release ÒѾ­³öÀ´£¬ÎÒ¸öÈËÒÑ×ö¹ý³õ²½²â 
   
  ÊÔ£¬ LC_CTYPE ÔÚÎÒÃǵĠlocale ÏÂÒѾ­Õý³££¬ËäÈ»ÈÔÓÐÆäËûÎÊÌâ´æ 
   
  ÔÚ£¬µ«ÕâÒÑÊÇÒ»¸öºÃÏûÏ¢£¬ÎÒ Ô¤¼ÆÔÚδÀ´µÄÒ»ÄêÄÚ£¬µÈ´ó²¿·ÖµÄ 
   
  Linux distribution ¶¼»»×°ÁË glibc-2.1 Ö® áᣬÎÒÃǾÍÓÐÁË×îµ×²ã 
   
  µÄ¡¸ÖÐÎÄ»¯¡¹Ìõ¼þ¡£  
 
   
  Èý¡¢ X Window µÄ²¿·Ö:  
 
   
  ½ÓÖøÎÒÃÇÀ´¿´¿´Éϲ㣬 X Window µÄ¡¸ÖÐÎÄ»¯¡¹ (»ò¡¸¹ú¼Ê»¯¡¹)¡£ 
   
  X11R6 Ò²ÓÐÒ» ¸ö locale µÄĿ¼£¬·ÅÔÚ /usr/X11R6/lib/X11/locale 
   
  ¡õÍ·£¬Èç¹ûÊÇ×° CLE µÄÅó ÓÑ£¬¾Í»á¼ûµ½Ò»¸ö zh_TW.Big5 µÄĿ¼£¬ 
   
  ÄǾÍÊÇÎÒÃǵĠXLC Locale data¡£ÔÚ¡¸±ê ×¼¡¹µÄÇé¿öÏ£¬ XLC 
   
  Locale ±ØÐë¼Ü¹¹ÔÚ libc locale Ö®ÉÏÔË×÷£¬Ëü¡õÍ·³ýÁ˶¨ ÒåһЩ×Ö 
   
  Ôª¶ÔÓ¦£¬×îÖØÒªµÄÊÇÄÚÂëÓë×ÖÐ͵ĶÔÓ¦¡£ÒÔÎÒÃǵĠlocale ÎªÀý£¬ÎÒ 
   
  ÃÇÐè ÒªÁ½ÖÖ×ÖÐÍ£¬Ò»ÊÇ¡¸°ëÐΠ(µ¥Î»Ôª)¡¹£¬ÏÔʾ ASCII ÂëÓã¬ÁíÒ» 
   
  ÊÇ¡¸È«ÐΠ(˫λԪ)¡¹ ÓÃÀ´ÏÔʾÖÐÎÄ¡£¾ÙÒ»¸öÀý×Ó£¬ÏñÒÔÏÂÕâÒ»´®×Ö: 
 
   
  ÕâÊÇÒ»¸ö abcd .... ²âÊÔ×Ö´® string! £Ï£Ë£¡  
 
   
  ÄÇЩҪÓÃÈ«ÐÎÏÔʾ? ÄÇЩҪÓðëÐÎÏÔʾ? Õâ±ØÐë¿¿ libc µÄ LC_CTYPE 
   
  À´Åжϡ£Òò ´Ë£¬ LC_CTYPE Èç¹û¹Òµô£¬¿ÉÒÔ˵ʲ÷ᶼûéü¡£  
 
   
  ÎÒÏàÐÅ£¬ÓÐÁËÉÏÊöµÄ¡¸Å䱸¡¹áᣬ»ù±¾µÄ I18N »·¾³¾ÍÒѾ­¾ß±¸ÁË¡£ 
   
  µ«Ò»¶¨ÓÐÈË»á ÎÊ: ¡¸¿´ÆðÀ´ CLE ÔÚÉÏÊöËù˵µÄ¶¼Ã»ÎÊÌ⣬Ϊʲ÷ỹ 
   
  Êǵ½´¦¶¼²»ÊÇÖÐÎÄ?¡¹ Ã»´í£¬ ÄÇÊÇÒòΪĿǰ Linux Éϴ󲿷ֵijÌʽ 
   
  »¹²»ÊÇÓàI18N µÄ±ê×¼¶øÐ´µÄ¡£ÀýÈç´ó¼Ò³£ÓàµÄ Netscape, xcin, 
   
  crxvt .... µÈµÈ£¬ËüÃǶ¼ÊÇÓá¸×Ô¼º¡¹µÄÕÐÊõÀ´´¦ÀíÖÐÎÄ£¬ ÕâÒ²¾Í 
   
  ÊÇΪʲ÷á xcin Ö»ÄÜÔÚ crxvt ÉÏÊäÈ룬Ϊʲ÷áÎÒÃÇÒª¿¿ CXWin À´¿´ 
   
  ÖÐÎÄ .... µÈµÈ¡£ÕâЩ¶¼²»ÊÇÕý½â£¬Ö»ÊÇÔÝʱµÄÒ»¸öÊֶΣ¬×îáá¶¼ÊÇ 
   
  Òª·ÅÆúµÄ¡£  
 
   
  Ä¿Ç°£¬ÓÐÔ½À´Ô½¶à³Ìʽ½«³¯Ïò I18N À´·¢Õ¹£¬¶øÎÒÃÇĿǰ×îÐèÒªµÄ¹¤ 
   
  ×÷£¬¾ÍÊÇŪ I18N µÄ zh_TW.Big5 ²¿·Ö¡£¾Ù¸öÀý×Ó£¬Ä¿Ç° CLE group 
   
  Õýæ춠GNOME µÄÖÐÎÄ»¯£¬ ËüËãÊÇĿǰ I18N »¯Ï൱³¹µ×µÄÒ»¸ö X 
   
  Disktop / Window Manager, Platin Ô¤¼Æ ÔÚÏÂÒ»°æµÄ CLE ¾ÍÊÇÒÔ 
   
  GNOME ÎªÖ÷£¬Ö»Òª½«ÆäÖеÄѶϢ¶¼·­Òë³ÉÖÐÎÄ£¬×öºÃ LC_MESSAGES µÄ 
   
  ¹¤×÷£¬Î´À´ÔÚ GNOME ÖУ¬½«²»ÐèÒªÒÀ¿¿ CXWin, ´ò¿ªáá¾Íµ½´¦¶¼ ÊÇ 
   
  ÖÐÎÄ¡£  
 
   
  ÆäËûµÄ GNU ÈíÌåÒ²ÊÇ£¬ÓÐÁíÒ»×éÈËÂíÕý½«Ò»Ð©³£¼ûÖ¸ÁîÈç ls, cp µÈ 
   
  µÄѶϢÖÐÎÄ »¯£¬²¢½«½á¹û»Ø±¨¸ø GNU, ÆÚÍûδÀ´Ð°æµÄ GNU ÈíÌå 
   
  ÖУ¬ÖÐÎÄѶϢ¾ÍÊDZê×¼µÄÒ» ²¿·Ö£¬ÎÒÃDz»ÔÙÐèҪÿ´ÎÈ˼Ҹüаæ¾Í¼± 
   
  ¼±Ã¦Ã¦µØ×ö patch ÁË¡£  
 
   
  ÖÐÎÄÊäÈë¾Í±È½Ï¸´ÔÓ£¬³ýÁËÉÏÊöµÄ I18N ÒÔÍ⣬»¹ÓÐÒ»¸ö XIM (X 
   
  Input Method) Ð­¶¨¡£ÎÒÃDZØÐëÒªÓРXIM server À´È¡´úĿǰµÄ 
   
  xcin, ¶øÇÒ»¹Òª X Window µÄÓ¦ ÓóÌʽÄܹ»×ñÑ­ XIM Ð­¶¨£¬²ÅÄÜ×ö 
   
  µ½ "Chinese Input Anywhere"¡£Ä¿Ç° CLE ÒÑ ÓÐÒ»¸ö XIM server, 
   
  ¼´ xcin-cxim Ö®ÀàµÄ³Ìʽ£¬µ«Âé·³µÄÊÇ×ñÑ­ XIM Ð­¶¨µÄÓ¦ ÓóÌʽÈÔ 
   
  ²»¶à£¬×îÖøÃûµÄ¾ÍÊÇ GNOME, xemacs, ÒÔ¼°Ò»Ð© X11R6 Ëù¸½µÄÈíÌå  
   
  (Èç xedit, ÓÉ Xt ¼° Xaw Ìṩ I18N Ö§Ô®)¡£¶øÎÒ¸öÈËĿǰÕýÔÚдµÄ 
   
  xcin-2.5 ¾ÍÊÇÒ»¸ö XIM server, ÎÒÏ£ÍûÕâ¸öÈíÌåÄÜÔÚ½«À´Ó롸¸÷· 
   
  ÈËÂí¡¹ÅäºÏ£¬×ö³öÒ»µã¹±Ïס£  
 
   
  Òò´Ë£¬¡¸ÖÐÎÄ»¯¡¹µÄ¹¤×÷£¬²¢²»ÊÇÄÇ÷á¼òµ¥µØËµ¡¸ÒòΪ Linux ÊÇÃâ 
   
  ·Ñ¡¢Ã»ÓÐÈ˸¶ Ç®¸ø³ÌʽÉè¼ÆÊ¦£¬ËùÒÔ×ö²»ºÃ¡¹£¬»òÕß˵¡¸ÎÒÃÇÖйúÈË 
   
  ²»ÍŽᣬ´ó¼Ò²»¿ÏºÏ×÷·¢ Õ¹³Ìʽ¡¹£¬»òÕß˵¡¸ Linux ÊÇ server µ¼ 
   
  Ïò£¬²»ÊʺÏ×öÖÐÎÄ¡¹ .... µÈµÈ¡£ Linux ¿ÉÒÔ·¢Õ¹ÖÐÎÄ£¬¶øÇÒÓкܶà 
   
  ÈËÕýŬÁ¦µØÔÚ¹¤×÷£¬µ«ÊǸüÖØÒªµÄÊÇ£¬ÎÒÃÇ»¹µÃÅäºÏ¹ú Íâ (»ò˵ÈíÌå 
   
  µÄÔ­Éè¼ÆÕß) µÄ½Å²½¡£Ç°ÃæËµ¹ý£¬ÎÒÃÇÒªÓÐÍêÕû locale Ö§Ô®µÄ 
   
  libc, ÕâÒ»ÇвÅÓÐÏ£Íû£¬ÎÒÃÇÒ²ÐèÒªÎÒÃdz£ÓõÄÈíÌå (Èç Netscape, 
   
  window manager, ÉõÖÁ database, office ....) µÄÉè¼ÆÕß¾õÎòµ½£¬ 
   
  ÕæÕýµÄ±ê×¼ÊÇ I18N, ÊÇ locale, ÊÇ XIM, ÎÒÃDzÅÄܸú½ø£¬½«ÖÐÎÄ»¯ 
   
  µÄ²¿·Ö¼Ó½øÈ¥¡£¸üÖØÒªµÄÒ»µã£¬ÎÒÃÇ×Ô¼ºµÄ³Ìʽ Éè¼ÆÊ¦ÔÚдÈíÌåʱ£¬ 
   
  ÊDz»ÊÇÒ²ÄÜ×ñÑ­ I18N, locale, XI   
  ¹©²Î¿¼£¬Ò²Çë¸÷ Î»¶à¶à¸øÓèÎÒÅúÆÀÓëÖ¸½Ì¡£  
 
   
    1.µÚÒ»²½: setlocale (Ïê¼û man setlocale ÓëÆäËûÏà¹Ø man 
   
       page)  
 
   
       ³ÌʽµÄµÚÒ»²½±ØÐëÒªÉ趨 locale, ¶øÒ»°ãµÄд·¨ÊÇ locale ×ÊÁÏ 
   
       ÊǾ­ÓÉ»·¾³±äÊýÈ¡ µÃ£¬¶ø²»ÒªÐ´ËÀÔÚ³Ìʽ¡õÍ·£¬ÀýÈç:  
 
 
   
       #include  
   
       main() 
   
       { 
   
               setlocale(LC_ALL, ""); 
   
               ..... 
   
       } 
 
 
   
       »ò·Ö±ðÉ趨:  
 
   
               setlocale(LC_CTYPE, ""); 
   
               setlocale(LC_MESSAGES, ""); 
   
               ..... 
 
   
       ÎÒ¸öÈ˵Ľ¨ÒéÊÇ£¬ÔÚ setlocale() Ê±Ö»ÒªÉèÎÒÃdzÌʽÖÐÐèÒªµÄÏî 
   
       Ä¿¼´¿É£¬¶ø²»ÒªÉè LC_ALL, Ô­ÒòÊÇÔÚijЩ locale Ï (ÈçÎÒÃǵĠ
   
       zh_TW.Big5), ²¢·ÇËùÓеÄÏîÄ¿¶¼ÄÜ ÕýÈ·ÔË×÷¡£ÎÒÏë¶Ô´ó²¿·ÖµÄ 
   
       ³Ìʽ¶øÑÔ£¬ÉèºÃ LC_CTYPE Óë LC_MESSAGES ¾Í²î²»¶àÁË£¬ ¹ÊÒÔ 
   
       ÏÂÎÒÕë¶ÔÕâÁ½¸ö×ö˵Ã÷¡£  
   
    2.wcs. vs. mbs. (Ïê¼û man mbstowcs ÓëÏà¹Ø man page)  
 
   
       "wcs" ÊÇ "wide-chararater string" µÄËõд£¬¶ø "mbs" ÊÇ 
   
       "multi-byte string" µÄËõд£¬¶þÕß·Ö±ð´ú±í×Ö´®µÄ±íÏÖ·½Ê½¡£ 
   
       ËùνµÄ multi-byte ÊÇÖ¸Êý¸ö char ×é³É Ò»¸ö×Ö (ÈçÈ«ÐÎ×Ö»òÖР
   
       ÎÄ×ÖÊÇÓÉÁ½¸ö char ×é³É)£¬¶ø wide-char ÊÇÖ¸Ò»¸ö wchar_t 
   
       type ¾ÍÊÇÒ»¸ö×Ö, ¶ø sizeof(wchar_t) µÄ´óСÓëϵͳÓйأ¬Ò» 
   
       °ã¶øÑÔÊÇ 4 bytes¡£ Ò»°ãÎÒÃÇ¿ÉÒÔÖ±½Ó¿´¡¢Êä³öÊäÈëµÈ¶¼ÊÇ 
   
       multi-byte, Èç:  
 
   
               char *str = "ÕâÊÇÒ»¸ö¾ä×Ó: abcd"; 
 
   
       µ«ÎÒÃǻὨÒéÔÚ³ÌʽÄÚ²¿£¬Óàmbstowcs() ½«Ëüת³É wchar_t À´ 
   
       Í³Ò»´¦Àí£¬Õâ¸ö ×ª»»ÆäʵÊǸù¾Ý locale ÖеĠLC_CTYPE µÄ»ú 
   
       ÖÆ£¬Ëü¶¨ÒåÁË multi-byte Óë wide- char Öµ¶þÕß¼äµÄ¶ÔÓ¦¹Ø 
   
       Ïµ¡£×öÕâÑùת»»µÄºÃ´¦ÊÇ£¬Äú²»Óõ£ÐÄÈ«ÐΡ¢°ëÐεÄÎÊÌ⣬ ÒòΪ 
   
       Ò»¸ö wchar_t ¾ØÕóÔª¾ÍÊÇÒ»¸ö×Ö¡£  
 
   
       wchar_t ÓÐÒ»×éÓë string.h ÖÐÏà¶ÔÓ¦µÄ×Ö´®´¦Àíº¯Ê½ (ĿǰÔÚ 
   
       Linux ÖпÉÄÜ»¹Ã» ÓРman page ËµÃ÷)£¬¾Í¶¨ÒåÔÚ wchar.h ÖУ¬ 
   
       ÈÃÎÒÃÇ¿ÉÒÔÈçͬ´¦Àí (char *) ÄÇÑù µØ´¦Àí (wchar_t *), Æä²¿ 
   
       ·ÖµÄ¶ÔÓ¦¹ØÏµÈçÏ£¬ÆäËûµÄ¿ÉÒÔÖ±½Ó¿´ wchar.h µÄÄÚÈÝ:  
 
   
               wcscpy()        <====>          strcpy() 
   
               wcsncpy()       <====>          strncpy() 
   
               wcslen()        <====>          strlen() 
   
               wcsdup()        <====>          strdup() 
   
               wcscmp()        <====>          strcmp() 
   
               wcsncmp()       <====>          strncmp() 
   
               ........................................ 
 
   
       ÓÉì¶ mbs ÂëÓë wcs ÂëµÄ¶ÔÓ¦¹ØÏµÊÇÓɸàlocale µÄ LC_CTYPE 
   
       À´¾ö¶¨µÄ£¬Ò²¾ÍÊDz» Í¬µÄ locale Ð´·¨Æä¶ÔÓ¦¹ØÏµ¿ÉÄܻ᲻һ 
   
       Ñù¡£¾ÍÎÒÃǵĠglibc2, zh_TW.Big5 locale ¶øÑÔ£¬ÓÉ mbs ×ª³É 
   
       µÄ wcs ¼´Îª unicode (Óйؠunicode µÄ×ÊѶ¿ÉÒÔÔÚ  
   
       http://www.unicode.org/ ÖÐÕÒµ½)£¬µ«²»Äܱ£Ö¤ÔÚÆäËûµÄϵͳ»ò 
   
       »·¾³ÏÂÒ²ÊÇÈç´Ë¡£ ¹Ê×î±£ÏÕµÄ×ö·¨£¬Êǽ«×Ö´®´¢´æ³É 
   
       multi-byte, È»ááÔÚ run-time Ê±²ÅÓàmbstowcs() ×ª³É 
   
       wide-char À´ÔË×÷¡£  
 
   
    3.ѶϢÊä³ö (Ïê¼û info gettext):  
 
   
       Ò»°ãÎÒÃdzÌʽµÄѶϢÊä³ö£¬ÊǾ­ÓÉ stdio.h ¡õÍ·µÄº¯Ê½£¬Ö±½ÓÊä 
   
       ³öµ½ stdout »ò stderr, ¶øÊä³öµÄÄÚÈÝÊÇÖ±½ÓдËÀÔÚ³ÌʽÂëÖС£ 
   
       ÕâÑùµÄ³ÌʽҪ×ö¶à¹úÓïÎÄ»¯»áÔì³ÉÀ§ ÈÅ£¬ÒòΪÎÒÃDZØÐëÒªÐÞ¸ÄÔ­ 
   
       Ê¼Â룬½«ËùÓеÄѶϢ×Ö´®·­Òë³ÉÁíÒ»ÖÖÓïÎÄ¡£Òò´Ë£¬ÎÒÃÇ ±ØÐë͸ 
   
       ¹ý locale µÄ LC_MESSAGES À´´¦ÀíѶϢÊä³ö¡£ÆäÔ­ÀíºÜ¼òµ¥£¬¾Í 
   
       Êǽ«³ÌʽÖРµÄËùÓÐѶϢ³éÀë³öÀ´£¬ÎªÃ¿Ò»¸ö locale ·Ö±ð×öºÃÒ» 
   
       ¸öѶϢµµ£¬µ±³ÌʽҪÊä³öѶϢʱ£¬ Ôò͸¹ý libc µÄº¯Ê½ÒÀĿǰµÄ 
   
       locale È¥ÕýÈ·µÄѶϢµµÖÐץȡѶϢ¡£  
 
   
       ÔÚ´ËÎÒÓàGNU gettext ÎªÀý£¬¼òµ¥ËµÃ÷ÆäÔ­Àí¡£ÔÚ 
   
       /usr/share/locale ÖУ¬¡õÍ·ÓР¸÷ÖÖ locale µÄ×ÊÁÏĿ¼¡£¶øÃ¿ 
   
       ¸öĿ¼Ï£¬¶¼»áÓÐÒ»¸ö LC_MESSAGES µÄĿ¼£¬¶øÕâ Ð©Ä¿Â¼¾ÍÊÇ 
   
       ÓÃÀ´·Å¸÷±ð³ÌʽµÄѶϢµµ¡£ÀýÈç:  
 
   
          /usr/share/locale/ja/LC_MESSAGES/prog.mo                (ÈÕÎÄ) 
   
          /usr/share/locale/zh_TW.Big5/LC_MESSAGES/prog.mo        (Big5) 
 
   
       ÆäÖÐÔÚ ja/ Ä¿Â¼ÏµĠprog.mo ¾ÍÊÇ prog Õâ¸ö³ÌʽµÄÈÕÎÄѶ 
   
       Ï¢£¬¶ø zh_TW.Big5/ ÏµĠprog.mo ¾ÍÊÇ prog Õâ¸ö³ÌʽµÄÖÐÎÄ 
   
       Ñ¶Ï¢¡£¼ÙÉèÔÚ»¹Ã»¼ÓÈë LC_MESSAGES Ö§ Ô®Ö®Ç°£¬ prog.c ³¤µÃ 
   
       ÏñÕâÑù:  
 
 
   
       #include  
   
       main() 
   
       { 
   
           printf("This is a test string.\n"); 
   
       } 
 
 
   
       ÏÖÔÚÎÒÃÇÒªÓàgettext À´¼ÓÈëÖ§Ô®£¬Ôò³ÌʽֻҪ¸Ä³É:  
 
 
   
       #include  
   
       #include  
   
       #define _(STRING) gettext(STRING) 
   
       #define PACKAGE "prog" 
 
   
       main() 
   
       { 
   
           setlocale(LC_MESSAGES, ""); 
   
           textdomain(PACKAGE); 
   
               /* Õâ¡õ¾ÍÊÇÖ¸¶¨Óà
   
                   /usr/share/locale/$LOC/LC_MESSAGES/prog.mo 
   
                  ×÷ΪѶϢµµ¡£ÆäÖР$LOC ÊÇÔÚ setlocale ÖÐÉ趨µÄ */ 
   
           printf(_("This is a test string.\n")); 
   
               /* Ê¹Óàgettext À´×¥³öѶϢ£¬ÔÙ½»¸ø printf À´Ó¡ */ 
   
       } 
 
 
 
   
       Èç¹ûÔÚÖ¸¶¨µÄ locale ÏÂÕÒ²»µ½ prog.mo µµ£¬Ôò³Ìʽ¾ÍÖ±½ÓÒÔÔ­ 
   
       Ó¢ÎÄѶϢӡ³ö¡£Òò ´Ë£¬¼ÓÈë LC_MESSAGES µÄÖ§Ô®£¬Ô­ source 
   
       code Ð޸IJ¢²»¶à£¬ÆäʵÏ൱·½±ã¡£  
 
   
       ±È½ÏÂé·³µÄÊǸ÷ locale ÏµÄѶϢµµÖÆ×÷£¬¶øÕâЩ²½Öè¿ÉÒÔ¾­ÓÉ 
   
       GNU gettext Ì×¼þ ºÜÈÝÒ׵شï³É£¬Æä²½Öè¼òÊöÈçÏ (Ïê¼û info 
   
       gettext):  
 
   
                   xgettext    editor   msgfmt  (install) 
   
          source code --> .pot --> .pox --> .gmo --> .mo -->  
   
          (½Ú¼×Ô Platin.bbs@csie.nctu.edu.tw µÄÎÄÕÂ: 
   
                  [REF] ¹Øì¶ gettext (Ò»¡¢¼ò½é)) 
 
   
            Ê¹Óàxgettext ²úÉú .pot µµ:  
 
   
                    xgettext -a -o prog.pot prog.c  
 
   
            ¶ø prog.pot µµµÄÄÚÈÝÈçÏÂ:  
 
 
   
            # SOME DESCRIPTIVE TITLE. 
   
            # Copyright (C) YEAR Free Software Foundation, Inc. 
   
            # FIRST AUTHOR , YEAR. 
   
            # 
   
            #: prog.c:8 
   
            #, fuzzy 
   
            msgid "" 
   
            msgstr "" 
   
            "Project-Id-Version: PACKAGE VERSION\n" 
   
            "POT-Creation-Date: 1999-02-28 19:18+0800\n" 
   
            "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
   
            "Last-Translator: FULL NAME \n" 
   
            "Language-Team: LANGUAGE \n" 
   
            "MIME-Version: 1.0\n" 
   
            "Content-Type: text/plain; charset=CHARSET\n" 
   
            "Content-Transfer-Encoding: ENCODING\n" 
 
   
            #: prog.c:10 
   
            msgid "This is a test string.\n" 
   
            msgstr "" 
 
 
   
            ¸÷λ¿ÉÒÔ×¢Òâµ½µ¹ÊýÁ½ÐУ¬ msgid ¾ÍÊÇÔ­À´ source ¡õÍ· 
   
            µÄÓ¢ÎÄѶϢ£¬¶øÎÒ ÃÇ¿ÉÒÔÖ±½ÓÔÚ msgstr Öн«Ô­Ñ¶Ï¢·­Òë 
   
            ³ÉÖÐÎÄ¡£ËùÒÔ£¬½ÓÏÂÀ´µÄ¹¤×÷Æäʵ¾Í ÊÇ·­Ò룬ÎÒÃÇ¿ÉÒÔÓà
   
            ÈÎÒâµÄ±à¼­Æ÷±à¼­Õâ¸öµµ°¸£¬²¢½«·­ÒëºÃµÄµµ°¸´æ³É 
   
            prog.pox µµ¡£  
 
   
            ½« prog.pox ±àÒë³É prog.gmo:  
 
   
                       msgfmt -o prog.gmo prog.pox 
 
   
            ÆäÖРprog.gmo¡£¾ÍÊÇÎÒÃÇÒªµÄѶϢµµ£¬µÈµ½ÎÒÃǰÑËü°²×° 
   
            µ½  
 
   
                 /usr/share/locale/..../LC_MESSAGES/ 
 
   
            Ö®áᣬ¾ÍÃû¸ÄΪ prog.mo ¡£ÔÚ´Ë£¬ .pot, pox, gmo µÈ¸½ 
   
            µµÃûÊÇ info gettext Öн¨ÒéµÄ£¬·Ö±ð´ú±íδ·­ÒëǰµÄѶϢ 
   
            Ô­Ê¼µµ¡¢·­ÒëááµÄѶϢԭʼµµ¡¢ ¾­ GNU gettext Ì×¼þ±àÒë 
   
            ááµÄѶϢµµ¡£  
 
   
  Æß¡¢×«Ð´ Xi18n ³Ìʽ:  
 
   
  Xi18n ÒâÖ¸ÔÚ X Window ÖмÓÈë I18N µÄÖ§Ô®¡£³ýÁËÉÏÊöµÄ²¿·ÖÍ⣬ 
   
  Xi18n »¹ÐèÒª ¿¼ÂÇ×ÖÐÎÉ趨¡¢Í¼ÐÎ×Ö´®Êä³ö¡¢ÒÔ¼°ÊäÈëµÄÎÊÌâ¡£ÓÉì¶ 
   
  Ä¿Ç°ÎÒÖ»Óп´¹ý Xlib, ¶Ôì¶ ÆäËû Widget »¹Ã»ÓÐÉîÈëÑо¿£¬Òò´ËÎÒ 
   
  Ö»ÄܶԠXlib µÄ²¿·ÖÉÔ×÷˵Ã÷¡£¶øÕâÀàµÄ²Î¿¼ ×ÊÁÏ£¬ÓÐÐËȤµÄÅóÓѿɠ
   
  ÒÔÕÒ  
 
   
  The Definitive Guides to the X Window System  
 
   
  ÕâһϵÁеÄÊéÀ´¿´£¬³ö°æÉÌÊÇ O'Reilly & Associates Inc. £¬ÆäÖР
   
  ÓÐÁ½±¾  
 
   
    1.Volume One, Xlib Programming Manual (for Version 11)  
 
   
       Author: Adrian Nye  
   
    2.R6 Update for the R5 Editions of vols. 1, 2, 4, & 5 
   
       Programmer's Supplement for Release 6 of the X Window 
   
       System.  
 
   
       Author: Adrian Nye  
 
   
  ÔÚ I18N ·½ÃæÓÐÏ꾡µÄ×ÊÁÏ£¬ºÜÖµµÃ²Î¿¼¡£»òÕßÊÇ¿ÉÒÔ¿´¿´ XFree86 
   
  ÄÚ¸½µÄ .ps ÎÄ ¼þ (Èç¹ûÄúÓа²×°µÄ»°£¬Ó¦¸ÃÔÚ 
   
  /usr/X11R6/lib/X11/doc ¡õÍ·)¡£  
 
   
    1.µÚÒ»²½ (Ïê¼û man XSupportsLocale):  
 
   
       ³ýÁË setlocale() Ö®Í⣬Äú»¹Òªºô½Ð XSupportsLocale() À´È· 
   
       ¶¨ X Window ¶ÔÄú Ä¿Ç°µÄ locale ÊÇ·ñÓÐÖ§Ô®¡£ÁíÍ⣬Äú»¹Òªºô 
   
       ½Ð XSetLocaleModifiers() À´É趨 Ò»Ð© X-modifier µÄÖµ£¬¡õ 
   
       ÀýÈçÏÂ:  
 
 
   
       #include  
   
       #include  
   
       #include  
 
   
       main() 
   
       { 
   
          setlocale(LC_CTYPE, ""); 
   
          if (XSupportsLocale() != True) { 
   
               printf("error X locale setting\n"); 
   
               exit(0); 
   
          } 
   
          XSetLocaleModifiers(""); 
   
       } 
 
 
   
       ÔÚ´ËÎÒÃÇÓàX11/Xlocale.h À´È¡´úÔ­À´µÄ locale.h, ÕâÊÇ 
   
       "Xlib programming manual" ÊéÖн¨ÒéµÄ£¬ÔÚÆä±¸ÍêÕû locale 
   
       Ö§Ô®µÄ libc »·¾³Ï£¬ËüÆäʵÊǵȼ۠춠include , µ«ÈôÔÚÆäËû 
   
       »·¾³£¬ Xlocale.h »áÓàXLOCALE »úÖÆÀ´ È¡´úÔ­ÓеĻúÖÆ¡£  
 
   
       ÉÏÍ·µÄ XSetLocaleModifiers »á´æ»·¾³±äÊý XMODIFIERS ÖÐÈ¡µÃ 
   
       X-modifier µÄÖµ²¢¼ÓÒÔÉ趨֮¡£ XMODIFIERS µÄ¸ñʽΪ:  
 
   
          export XMODIFIERS='@category=value' 
 
   
       Ä¿Ç° category Ö»ÓР"im" ÓÐÓã¬Èç "@im=xcin-cxims", ÒâÖ¸Éè 
   
       ¶¨ xcin-cxims ×÷Ϊ´Ë X Window ³ÌʽµÄ XIM server¡£  
 
   
    2.É趨 fontset (Ïê¼û man XCreateFontSet):  
 
   
       ÒÔÍù X Window ³Ìʽ¶¼ÊǺô½Ð XLoadQueryFont() Ö®ÀàµÄº¯Ê½À´ 
   
       ÔØÈ벢ʹÓÃ×ÖÐÍ¡£ µ«ÔÚ Xi18n µÄ¼Ü¹¹Ï£¬Ò»¸ö locale µÄ 
   
       encoding Í¨³£²»ÄܹâÓÃÒ»ÖÖ×ÖÐÍÀ´±íʾ¡£ ÀýÈçÎÒÃǵĠ
   
       zh_TW.Big5, °ëÐÎ×ÖÐèÓÃÓ¢ÎÄ×ÖÐÍ (Èç -*-iso8859-1)£¬¶øÈ«ÐΠ
   
       ×ÖÐè ÓÃÖÐÎÄ×ÖÐÍ (Èç -twmoe-*-big5-0), Òò´Ë£¬ÎÒÃDz»ÄÜÓà
   
       XLoadQueryFont() ½«Õâ Ð©×ÖÐÍ·Ö±ðÔØÈ룬¶øÒªÓà
   
       XCreateFontSet() À´ÔØÈëËùÐèµÄ fontset¡£  
 
 
 
   
       Display *display; 
   
       XFontSet fontset; 
   
       char *fontset_name, **missing_charset, *def_string; 
   
       int missing_charset_count; 
 
   
       fontset_name = "-*-iso8859-1,-twmoe-*-big5-0"; 
   
       fontset = XCreateFontSet(display, fontset_name, 
   
                    &missing_charset_list, &missing_charset_count, &def_stri 
ng); 
 
 
 
   
       ÔÚÕâ¡õÎÒÃÇ¿ÉÒÔ½« fontset ¿´³ÉÒ»¸ö¡¸×ÖÐÍÎï¼þ¡¹£¬¶ø²»Òª°ÑËü 
   
       ¿´³É "-*-iso8859-1" Óë "-twmoe-*-big5-0" ÕâÁ½ÖÖ×ÖÐ͵Ä×é 
   
       ºÏ¡£µ±ÎÒÃÇÒª»­ÈκÎ×Ö ´®Ê±£¬ÎÒÃDz»Óõ£ÐÄÒª»­µÄµ½µ×ÊÇÈ«ÐÍ×Ö 
   
       »ò°ëÐÍ×Ö£¬Ê¹Óàfontset ±ãÄܰïÎÒÃÇ ´¦ÀíÒ»ÇС£  
 
   
    3.»­³ö×Ö´® (Ïê¼û man XwcDrawImageString, man 
   
       XmbDrawImageString, manXOpenOM)  
 
   
       Æ½³£ÎÒÃÇÒªÔÚÊÓ´°»­×Ö´®Ê±£¬¶¼»áÓàXDrawImageString() µÈº¯ 
   
       Ê½£¬»òÕßÓàXDrawImageString16() À´»­Ë«Î»ÔªµÄ×Ö´® (¼´È«ÐÍ 
   
       ×Ö)¡£ÏÖÔÚ¿ÉÒÔÎÒÃÇÓàXwcDrawImageString (ÓÃÀ´»­ wide-char 
   
       (wchar_t *) ×Ö´®) »ò XmbDrawImageString (ÓÃÀ´»­ 
   
       multi-byte (char *) ×Ö´®) ¡£²»¹ÜÄúÊäÈëµÄ×Ö ´®ÊÇÈ«ÐÍ»ò°ë 
   
       ÐÍ£¬»ò¶þÕߵĻìºÏ£¬Ê¹ÓÃÕßÁ½¸öº¯Ê½¶¼ÄÜÕýÈ·´¦Àí£¬Í¬Ê±»á¸ù¾Ý 
   
       ÄúµÄ fontset µÄÉ趨À´»­×Ö¡£  
 
   
       ³ý´ËÖ®Í⣬ X11R6 »¹ÓÐÒ»¸ö Output Method »úÖÆ£¬ÓÃÀ´×ö¶à¹ú 
   
       Óïϵ×Ö´®Êä³ö (»­×Ö´®)£¬ÎÒÃÇ¿ÉÒÔÔÚ³ÌʽÖкô½Ð XOpenOM() À´ 
   
       ¿ªÆôÒ»¸ö Output Method ¡£ µ«Õⲿ·ÖÎÒ»¹Ã»ÓÐ×ÐϸÑо¿£¬ÓÐÐË 
   
       È¤µÄÅóÓÑ¿ÉÒԲο¼±¾Õ¿ªÍ·ËùÁеIJο¼×ÊÁÏ ÒÔ»ñµÃ½øÒ»²½×ÊѶ¡£ 
 
   
    4.XIM (Ïê¼û man XOpenIM)  
 
   
       XIM Ó¦·ÖÁ½·½ÃæÀ´Ì¸£¬Ò»ÊÇ XIM server, ÁíÒ»ÊÇ XIM client¡£ 
   
       ¶Ô XIM client ¶øÑÔ£¬Èçͬ Output Method Ò»°ã£¬ÎÒÃÇ¿ÉÒÔÔڳ̠
   
       Ê½Öкô½Ð XOpenIM() À´¿ªÆôÒ» ¸ö Input Method, Í¬Ê±Ö¸¶¨ XIM 
   
       server µÄÃû×Ö¡£µ«Õⲿ·ÖÎÒ»¹Ã»ÓÐ×ÐϸÑо¿£¬ ÓÐÐËȤµÄÅóÓѿɠ
   
       ÒԲο¼±¾Õ¿ªÍ·ËùÁеIJο¼×ÊÁÏ¡£  
 
   
       ÎÒĿǰÊÇÔÚд XIM server µÄ²¿·Ö£¬µ«ÎÒûÓÐÖ±½ÓÄàX Window 
   
       µÄº¯Ê½À´Ð´£¬¶ø ÊÇÄàIMdkit lib À´Ð´£¬ÒÔ¼ò»¯Õû¸ö³Ìʽд×÷¡£ 
   
       ÔÚ´ËÎÒ²»¶à×÷˵Ã÷ÁË£¬ÓÐÐËȤµÄ ÅóÓÑ¿ÉÒÔץȡ:  
 
   
       xcin-2.5-19990218.tar.gz  
 
   
       »ØÈ¥¿´£¬¡õÍ·µÄ doc/programming/ Ä¿Â¼ÖÐÓжԴËÉÔ×÷˵Ã÷£¬Í¬ 
   
       Ê± IMdkit µÄ source Ò²Õû¸ö¸½ÔÚ xcin-2.5 source ÖС£  
 
 
   
       ÒÔÉÏ×ÊÁÏ£¬½ö¹©²Î¿¼£¬»¶Ó­´ó¼ÒÖ¸½Ì¡£ Ö 
   
-- 
ÔÚ½­ºþÖУ¬Ö»ÒªÄÃÆðÁ˵¶£¬¾ÍÊÇÒ»³¡ÎÞÑĵÄÃΡ£ 
 
¡ù À´Ô´:¡¤BBS Ë®Ä¾Ç廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: 159.226.21.168] 

BBSˮľÇ廪վ¡Ã¾«»ªÇø