· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Locales

<!doctype linuxdoc system>
 <article>
<title>
Locales mini-HOWTO
 <author> Peeter Joot, <url url="mailto: joot@ecf.toronto.edu" name="joot@ecf.toronto.edu" >
   <date>v1.3, 1996³â 6¿ù 6ÀÏ
<trans>ÀÌ ¸¸ ¿ë	<url url="mailto: geoman@nownuri.net" name="geoman@nownuri.net">
<abstract>
ÀÌ ¹®¼­´Â ¸®´ª½º¿¡¼­ locale ¸¦ ¾²±â À§ÇØ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù.
</abstract>
<toc>
<sect>¼Ò°³<p>
¿©±â¼­ ³ª´Â localdef ¸¦ ÀνºÅçÇϱâ À§ÇÏ¿© ¹«¾ùÀ» ÇßÀ¸¸ç ¾î¶»°Ô localeÀ» ÄÄÆÄ
  ÀÏÇß´ÂÁö ±×¸®°í ±× °æÇè¿¡ ´ëÇØ¼­ À̾߱â½ÄÀ¸·Î ÁøÇàÇÏ·Á°í ÇÑ´Ù.
  ³ª´Â ´ÜÁö Àç¹Ì·Î ÀÌ ÀÏ¿¡ ¶Ù¾îµé¾ú°í ´Ù¸¥ »ç¶÷µéµµ ÀÌ ÀÏ¿¡ Èï¹Ì¸¦ °¡Áú °ÍÀÌ
  ¶ó°í »ý°¢Çß´Ù. ÀÏ´Ü ¼³Á¤¸¸ µÇ¸é ¿©·¯ºÐÀÇ ¼±ÅÃÇÑ ·ÎÄÉÀÏÀ» °¡Áö°í NLS Áö¿øÀÇ
  ¾îÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. Á¶±Ý ÀÖÀ¸¸é ·ÎÄÉÀÏ Áö¿øÀº Ç¥ÁØ ¹èÆ÷ÆÇÀÇ ÀϺÎ
  °¡ µÉ °ÍÀ̰í ÀÌ ¹Ì´Ï ÇÏ¿ìÅõ ¹®¼­¿¡µµ ¸¹Àº ³»¿ëÀÌ Ãß°¡µÇ¸®¶ó º»´Ù.
</p>

<sect>  µµ´ëü ·ÎÄÉÀÏ(locale)À̶õ ¹«¾ùÀΰ¡?<p>
·ÎÄÉÀÏÀº ¿©·¯ºÐÀÌ ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ ¼ÓÀ¸·Î ÇϵåÄÚµùÀ» ÇØ¼­´Â ¾ÈµÇ´Â ¾ð¾î/¹®
  È­ °ü·ÃÀÇ »çÇ×À» ´Ù·é´Ù.
¸¸¾à ´Ù¾çÇÑ ·ÎÄÉÀÏÀ» ¼³Ä¡Çصξú´Ù¸é ´ÙÀ½ ȯ°æ º¯¼ö ¼³Á¤À» ÅëÇÏ¿© ·ÎÄÉÀÏÀ»
  Áö¿øÇÏ´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà ¹æ½ÄÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.

  ±âº» ·ÎÄÉÀÏÀº C ¶Ç´Â POSIX À̸ç libc ¿¡ ÇϵåÄÚµùµÇ¾î ÀÖ´Ù.
<descrip>
   <tag/LANG/
        ÀÌ ¼¼ÆÃÀ» ÅëÇØ ·ÎÄÉÀÏÀ» ¼³Á¤ÇÑ´Ù. ÇÏÁö¸¸ LC_xxxx ȯ°æ º¯¼ö¿¡ ÀÇÇØ
        º¯È­µÉ ¼ö ÀÖ´Ù.
  <tag/ LC_COLLATE/
        Á¤·Ä ¼ø¼­
  <tag/ LC_CTYPE/
        ¹®ÀÚ Á¤ÀÇ, ´ë¹®ÀÚ, ¼Ò¹®ÀÚ,... À̵éÀº toupper, tolower, islower,
        isdigit µîÀÇ ÇÔ¼ö¿¡ »ç¿ëµÈ´Ù.
   <tag/LC_MONETARY/
        ±Ý¾×À» Ç¥ÇöÇÏ´Â Çü½Ä Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù. õ´ÜÀ§¸¦ ±¸ºÐÇÏ´Â ¹®ÀÚ,
        ¼Ò¼öÁ¡ ¹®ÀÚ, ±×¸®°í ±Ý¾× Ç¥½Ã ¹®ÀÚ, ±× À§Ä¡ µîÀÇ Á¤º¸¸¦ Á¦½ÃÇÑ´Ù.
  <tag/ LC_NUMERIC/
        ¼ýÀÚ¸¦ Ç¥ÇöÇÔ¿¡ ÀÖ¾î, õ´ÜÀ§, ¼Ò¼öÁ¡, ¼ýÀÚ ±×·ìÇÎÀ» ´Ù·é´Ù.
   <tag/LC_TIME/
        ½Ã°£°ú ³¯Â¥ÀÇ Ç¥ÇöÇü½ÄÀ» ÁöÁ¤ÇÑ´Ù. ÁÖ¿Í ´Þ¿¡ ´ëÇÑ ¸íΰú ¾à¾î¸¦ ´Ù·é
        ´Ù.
   <tag/LC_MESSAGES/
        ¿¹/¾Æ´Ï¿À Ç¥Çö
   <tag/LC_ALL/
        ·ÎÄÉÀÏÀ» ÁöÁ¤ÇÑ´Ù. ÇÏÁö¸¸ ´Ù¸¥ LC_xxxx À¸·Î º¯È­µÉ ¼ö ÀÖ´Ù.
¿©±â ¸î °¡Áö ·ÎÄÉÀÏ¿¡ ´ëÇÑ ¿¹°¡ ÀÖ´Ù.
  <tag/ en_CA/
        ¿µ¾î±Ç Ä«³ª´Ù
   <tag/en_US/
        ¹Ì±¹ ¿µ¾î±Ç
   <tag/de_DE/
        µ¶ÀÏÀÇ µ¶ÀϾî
   <tag/fr_FR/
        ÇÁ¶û½ºÀÇ ÇÁ¶û½º¾î
</descrip>

¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» Â¥´Âµ¥ ÀÖ¾î ±×°ÍÀÌ ±¹Á¦ÀûÀ¸·Î »ç¿ëµÇ±â À§Çؼ­´Â ·ÎÄÉÀÏ
  À» ÀÌ¿ëÇØ¾ß ÇÑ´Ù. °¡Àå Áß¿äÇÑ ÀÌÀ¯ Áß Çϳª´Â ¸ðµç »ç¶÷ÀÌ ¿©·¯ºÐ°ú °°Àº ¹®ÀÚ
  ¸¦ »ç¿ëÇÏÁö´Â ¾Ê´Â´Ù´Â »ç½ÇÀÌ´Ù.
¿©·¯ºÐÀÇ ÇÁ·Î±×·¥¿¡¼­ ´ÙÀ½°ú °°Àº ½ÄÀ¸·Î »ç¿ëÇÏÁö ¸»¶ó.

     /* check for alphabetic characters */
       if ( (( c >= 'a') && ( c <= 'z' )) ||
            (( c >= 'A') && ( c <= 'Z' )) ) { ... }

¿©·¯ºÐÀÌ ÀÌ·¸°Ô ¸ðµç È­ÀÏÀ» ASCII È­ÀÏÀ̶ó°í¸¸ °¡Á¤ÇÏ°í ¸¸µç´Ù¸é »ç¿ëÀÚÀÇ
  ·ÎÄÉÀÏ¿¡ µû¸¥ ÄÚµå ÆäÀÌÁö Á¤ÀǸ¦ Á¸ÁßÇÏÁö ¾Ê°Ô µÇ´Â °ÍÀÌ´Ù.

  ¿¹¸¦ µé¾î µ¶ÀϾî ȯ°æ¿¡¼­ ¾²ÀÌ´Â ¿ò¶ó¿ìÇÁ ¹®ÀÚ µîÀÌ Á¦¿ÜµÈ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù.
  ¿©·¯ºÐÀº ´ë½Å isalpha() °ú °°Àº ·ÎÄÉÀÏ ÀÎ½Ä ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
  ¿©·¯ºÐÀÌ US-ASCII ¾ËÆÄºª ¹®ÀÚ¸¸À» ¿ä±¸ÇÑ´Ù ÇÒ Áö¶óµµ ¿©ÀüÈ÷ isalpha() ÇÔ¼ö¸¦
  »ç¿ëÇϱ⠹ٶõ´Ù. ÇÏÁö¸¸ ¿ì¼± setlocalte(LC_TYPE,"C")¶ó°í ÇϵçÁö ¾Æ´Ï¸é
  LANG, LC_TYPE, LC_ALL µîÀÇ È¯°æ º¯¼ö¸¦ "C"·Î ¼³Á¤ÇÏ¸é µÈ´Ù.
·ÎÄÉÀÏÀº »ó´çÇÑ À¯¿¬¼ºÀ» Á¦°øÇϸç ÇÁ·Î±×·¡¸ÓµéÀÌ ASCII ±â¹ÝÀÇ C ÇÁ·Î±×·¥À»
  À߸ø ¸¸µé¾î¿Ô´Ù°í »ý°¢ÇÑ´Ù.

¿¹¸¦ µé¾î ¿©·¯ºÐÀº ¹®ÀÚÀÇ ÄÚµå À§Ä¡¸¦ °¡Á¤ÇÒ ¼ö ¾ø´Ù. ¿©·¯ºÐÀº A ¶ó´Â ¹®ÀÚÀÇ
  ÄÚµå À§Ä¡¸¦ 0x41 ÀÌ ¾Æ´Ñ 0xC1 À¸·Î Á¤ÀÇÇÏ´Â ¹®ÀÚÇ¥ È­ÀÏÀ» ¸¸µé ¼öµµ ÀÖ´Ù.
  À̰ÍÀº ¸ÞÀÎÇÁ·¹ÀÓ¿¡¼­ »ç¿ëµÈ´Â IBM ÄÚµå ÆäÀÌÁö 37¿¡¼­ÀÇ A °¡ °®´Â À§Ä¡ÀÌ´Ù.
  ±×¸®°í ÀüÀÚ´Â ¹Ù·Î US-ASCII, iso8859-x µî¿¡¼­ »ç¿ëµÇ°í ÀÖ´Â ¹æ½ÄÀÌ´Ù.
±âº»ÀûÀÎ ¾ÆÀ̵ð¾î´Â ¼­·Î ´Ù¸¥ »ç¶÷µéÀÌ ´Ù¸¥ ¾ð¾î¸¦ »ç¿ëÇϸç Á¤·Ä ¼ø¼­µµ ´Ù¸£
  °í ´Ù¸¥ ÄÚµå ÆäÀÌÁö¸¦ »ç¿ëÇÏ¸ç ´Ù¸¥ ³ª¶ó¿¡ »ì°í ÀÖ´Ù´Â »ç½Ç·ÎºÎÅÍ ³ª¿Â´Ù.
  ¹Ù·Î ·ÎÄÉÀϰú ·ÎÄÉÀÎ ÀÎ½Ä ÇÁ·Î±×·¥ÀÌ ±×·¯ÇÑ ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥À» Á¦½ÃÇϰí ÀÖ
  ´Ù. ¸¹Àº ÀÛ¾÷ÀÌ ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï°í ´ÜÁö ÇÁ·Î±×·¥ ÀÛ¼º½Ã ¾à°£ ´Ù¸¥ »ç°í¹æ½ÄÀ»
  ¿ä±¸ÇÑ´Ù.
</p>

 <sect>  ÁÖÀÇ »çÇ×<p>
[] ³» ¸Ó½Å¿¡¼­ ·ÎÄÉÀÏÀ» ¼³Á¤Çϱâ À§ÇÏ¿© ¾à°£ÀÇ ¾÷±×·¹À̵尡 ÇÊ¿äÇß´Ù.
     <url url="ftp:// ftp.tu-clausthal.de:/pub/linux/SLT/nls" name=" ftp.tu-clausthal.de:/pub/linux/SLT/nls" > ¿¡´Â a.out ¹öÀüÀÇ ·ÎÄÉÀϰú local-
     def( nlsutils-0.5.tar.gz È­ÀÏ ¾È¿¡ )ÀÌ µé¾îÀÖ´Ù. ELF ½Ã½ºÅÛÀÌ ¾Æ´Ï°Å³ª
     ELF ¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸·Á´Â »ç¶÷¿¡°Ô À¯¿ëÇÏ´Ù. ´Ù¸¥ °÷¿¡ ¾Æ¸¶µµ nls À¯Æ¿
     ÆÐŰÁö°¡ ÀÖÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸ ãÁö ¸øÇß´Ù. µ¶¸³ÀûÀÎ ·ÎÄÉÀÏ, localdef°¡
     ÀÖ´ÂÁö ¸ð¸£°ÚÀ¸¸ç ±×·¯ÇÑ libc ¸¦ °¡Áö°í ÀÖ´ÂÁöµµ ¸ð¸£°Ú´Ù.
     ÀÌ ÇÏ¿ìÅõ ¹®¼­´Â º»ÀÎÀÌ libc µîÀ» ¾÷±×·¹À̵åÇÑ °³ÀÎÀûÀÎ °æÇèÀÏ ºÐÀÌ´Ù.
     ¿©·¯ºÐÀÌ ÀÌ ÀÛ¾÷À» ÇÏ·Á¸é º»ÀÎó·³ ELF ½Ã½ºÅÛÀ» ¿î¿µÇϰųª ELF ½Ã½ºÅÛÀ¸
     ·Î ¾÷±×·¹À̵åÇØ¾ß ÇÒ °ÍÀÌ´Ù.
<itemize>
<item> º»ÀÎÀÌ ÇÑ ½Ã½ºÅÛ ¾÷±×·¹À̵å´Â a.out ¿¡¼­ ELF ¾÷±×·¹À̵åÇϱâ À§ÇØ ÇÊ¿äÇÑ
     °ÍµéÀ̾ú´Ù. ELF ½Ã½ºÅÛÀÌ ¾Æ´Ï¶ó¸é ¿©·¯ºÐÀº ÀÏ´Ü ÃÖ±Ù ELF HOWTO ¹®¼­¸¦ ±¸
     ÇØ¾ß ÇÒ °ÍÀÌ´Ù. »ó´çÈ÷ ÁÁÀº ¹®¼­À̸ç libc, ld.so, ±×¸®°í ´Ù¸¥ ELF ½Ã½ºÅÛ
     ÀνºÅç, ¾÷±×·¹À̵忡 ´ëÇÑ ¸¹Àº Áö½ÄÀ» ÀüÇØÁÙ °ÍÀÌ´Ù.

<item> ¿©·¯ºÐÀÌ ÀνºÅçÇÏ´Â ¸ðµç °Í¿¡ ´ëÇØ¼­ ¸±¸®Áî ³ëÆ®³ª README ¸¦ Àо¶ó.
     ¿©±â¼­ º»ÀÎÀÌ ¸»ÇÑ ¹Ù¸¦ Á¦´ë·Î ÀÌÇØÇÏÁö ¸øÇϰųª ±×·Î ÀÎÇØ ½Ã½ºÅÛÀ» ¸ÁÃÆ
     ´Ù°í º»ÀÎÀ» ¿ø¸ÁÇÏÁö´Â ¸»±â ¹Ù¶õ´Ù.

<item> »õ·Î¿î libc, ld.so ¸¦ À߸ø ¼³Ä¡ÇÏ´Â °æ¿ì ºÎÆÃ ÀÚü°¡ ¾ÈµÉ ¼ö ÀÖ´Ù.
     ÀÏ´ÜÀº ºÎÆ® µð½ºÅ©¸¦ Çϳª °¡Áö°í Áß¿äÇÑ ÀÚ·á´Â ¹é¾÷À» ÇØµÎ´Â °ÍÀÌ ÁÁ´Ù.
</itemize>
</p>

<sect>¿©·¯ºÐ¿¡°Ô ÇÊ¿äÇÑ »çÇ×<p>
¸î °³ÀÇ ÀڷḦ ´Ù¿î·Îµå¹ÞÀ» Çʿ䰡 ÀÖ´Ù. locale ¼Ò½º È­ÀÏÀ» Á¦¿ÜÇÑ ´ëºÎºÐÀº
  sunsite.unc.edu, tsx-11.mit.edu, ¶Ç´Â ·ÎÄà ¹Ì·¯ »çÀÌÆ®¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.
<verb>
[] ·ÎÄÉÀÏ, ¹®ÀÚÇ¥ ¼Ò½º - localdef ¸¦ °¡Áö°í ÄÄÆÄÀÏÇÏ°Ô µÉ °ÍÀÌ´Ù.
[] libc-5.2.18.bin.tar.gz --- ELF C °øÀ¯ ¶óÀ̺귯¸®¿Í ¼öÇÐ ¶óÀ̺귯¸®
[] libc-5.2.18.tar.gz --- ELF ¶óÀ̺귯¸®¿¡ ´ëÇÑ ¼Ò½º ÄÚµå. localdef ¸¦ ÄÄÆÄ
     ÀÏÇϱâ À§Çؼ­´Â ¹Ù·Î ÀÌ È­ÀÏÀÌ ÇÊ¿äÇÏ´Ù.
[] make-3.74.tar.gz -- dirent ¹ö±×¸¦ °íÄ£ ¹öÀüÀÌ ÇÊ¿äÇÏ´Ù.
[] release.libc-5.2.18 --- make ¿¡ ´ëÇÑ ÆÐÄ¡¸¦ Æ÷ÇÔÇÑ ¸±¸®Áî ³ëÆ®
[] ld.so-1.7.12+ -- µ¿Àû ¸µÄ¿
[] ELF gcc-2.7.2+ --- ÄÄÆÄÀÏ¿¡ »ç¿ë
[] ELF Ä¿³Î 1.1.92+ ¶Ç´Â ELF Ä¿³Î 1.3.40+ -- ÄÄÆÄÀÏ¿¡ »ç¿ë
[] binutils 2.6.0.2+ --- ÄÄÆÄÀÏ¿¡ »ç¿ë
</verb>

·ÎÄÉÀÏ ¼Ò½º¸¦ ¾òÀ» ¼ö ÀÖ´Â °÷Àº ¸¹´Ù. °ø°³ ·ÎÄÉÀϰú ¹®ÀÚÇ¥¸¦ ´ÙÀ½°ú °°Àº
  »çÀÌÆ®¿¡¼­ ¾òÀ» ¼ö ÀÖ¾ú´Ù.
  dkuug.dk:/i18n/WG15-collection/locales
  <<url url="ftp:// ftp.dkuug.dk/i18n/WG15-collection/locales" name="ftp.dkuug.dk/i18n/WG15-collection/locales" >>
  dkuug.dk:/i18n/WG15-collection/charmaps
  <<url url="ftp:// ftp.dkuug.dk/i18n/WG15-collection/charmaps" name=" ftp.dkuug.dk/i18n/WG15-collection/charmaps" >>
</p>

<sect>   ¸ðµç °ÍÀ» ÀνºÅçÇϱâ<p>
ÀÌ°Í ¸ðµÎ°¡ º»ÀÎÀÌ ÀνºÅçÇÑ °ÍÀÌ´Ù. º»ÀÎÀº ÀÌ¹Ì ELF ½Ã½ºÅÛ( ÄÄÆÄÀÏ·¯, Ä¿³Î )
  À» °¡Áö°í ÀÖ¾ú´Ù.
<enum>
<item> ¿ì¼±Àº tar xvzf binutils-2.6.0.2.bin.tar.gz -C / ÇÏ¿© ¹ÙÀ̳ʸ® À¯Æ¿¸®Æ¼¸¦
     ¼³Ä¡ÇÏ¿´´Ù.
<item> ´ÙÀ½À¸·Î´Â µ¿Àû ¸µÄ¿¸¦ ¼³Ä¡ÇÏ¿´´Ù.

     tar zxf ld.so-1.7.12.tar.gz -C /usr/src
       cd /usr/src/ld.so-1.7.12
       sh instldso.sh

<item>. ±× ´ÙÀ½ ³ª´Â lib ¸¦ ¼³Ä¡ÇÏ¿´´Ù. ÀÚ¼¼ÇÑ ¼³¸íÀº release.libc-5.2.18 À» º¸±â
     ¹Ù¶õ´Ù.

     rm -f /usr/lib/libc.so /usr/lib/libm.so
       rm -f /usr/include/iolibio.h /usr/include/iostdio.h
       rm -f /usr/include/ld_so_config.h /usr/include/localeinfo.h
       rm -rf /usr/include/netinet /usr/include/net /usr/include/pthread
       tar -xzf libc-5.2.18.bin.tar.gz -C /

<item> »õ·Î¿î °øÀ¯ ¶óÀ̺귯¸®ÀÇ À§Ä¡¸¦ ¾Ë¸®±â À§ÇÏ¿© ldconfig -v ¸¦ ½ÇÇà
<item> make °ú ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¹ö±× ÆÐÄ¡°¡ libc ¿¡ µé¾îÀÖ¾ú´Ù.
     ¿©±â¼­ ³ª´Â make ¸¦ ´Ù½Ã ÄÄÆÄÀÏÇÏ¿© ÀνºÅçÇÏ¿´´Ù.

     tar zxf make-3.74.tar.gz -C /usr/src
       cd /usr/src/make-3.74
       patch < /whereever_you_put_it/release.libc-5.2.18
       configure --prefix=/usr
       sh build.sh
        ../make install
       cd ..
       rm -rf make-2.74

<item> ¿©±â¼­ localdef ¸¦ ÄÄÆÄÀÏÇÏ¿© ¼³Ä¡ÇÏ¿´´Ù.

mkdir /usr/src/libc
  tar zxf libc-5.2.18.tar.gz -C /usr/src/libc
  cd /usr/src/libc
  cd include
  ln -s /usr/src/linux/include/asm .
  ln -s /usr/src/linux/include/linux .
  cd ../libc
  ./configure

  # ÀÌ µÎ °¡Áö make °úÁ¤ÀÌ ÇÊ¿äÇÑÁö´Â ¸ð¸£°ÚÀ¸³ª ¾ÈÀüÇÏ°Ô ÇØµÎµµ·Ï ÇÏÀÚ.

  make clean ; make depend
  cd locale
  make programs
  mv localedef /usr/local/bin
  mv locale /usr/local/bin

<item> localdef °¡ ãÀ» ¼ö ÀÖ´Â °÷¿¡ ¹®ÀÚÇ¥¸¦ ¼³Ä¡ÇÑ´Ù. dkuug.dk FTP »çÀÌÆ®·Î
     ºÎÅÍ charmaps.tar, locales.tar ¶ó´Â È­ÀÏ·Î ±¸ÇÑ °ÍÀ» »ç¿ëÇÏ¿´´Ù.
</enum>
tar xf charmaps.tar -C /tmp
  mkdir /usr/share/nls
  mkdir /usr/share/nls/charmap
  mkdir /usr/share/locale
  mv /tmp/charmaps/* /usr/share/nls/charmap
  rm -rf /tmp/charmaps
  tar xf locales.tar -C /usr/share # put these where you want.

<code>
# ¾î¶² ·ÎÄÉÀÏ ¼Ò½º´Â `copy'¸¦ »ç¿ëÇÏ¸ç µû¶ó¼­ ´Ù¸¥ ·ÎÄÉÀÏ¿¡ ´ëÇÑ
  # ÀÇÁ¸¼ºÀ» °¡Áø´Ù. º»ÀÎÀº grep, cut, sed ¸¦ »ç¿ëÇÏ¿© makefile À» 
  # ÀÌ·¸°Ô ÇØÁÖ¸é /usr/share/locale µð·ºÅ丮¿¡ ¸ðµç ·ÎÄÉÀÏ °´Ã¼¸¦
  # ¸¸µé¾î ÁÙ °ÍÀÌ´Ù.
  #
  localedef -ci locales/en_DK -f ISO_8859-1:1987 en_DK
  localedef -ci locales/sv_SE -f ISO_8859-1:1987 sv_SE
  localedef -ci locales/fi_FI -f ISO_8859-1:1987 fi_FI
  localedef -ci locales/sv_FI -f ISO_8859-1:1987 sv_FI
  localedef -ci locales/ro_RO -f ISO_8859-1:1987 ro_RO
  localedef -ci locales/pt_PT -f ISO_8859-1:1987 pt_PT
  localedef -ci locales/no_NO -f ISO_8859-1:1987 no_NO
  localedef -ci locales/nl_NL -f ISO_8859-1:1987 nl_NL
  localedef -ci locales/fr_BE -f ISO_8859-1:1987 fr_BE
  localedef -ci locales/nl_BE -f ISO_8859-1:1987 nl_BE
  localedef -ci locales/da_DK -f ISO_8859-1:1987 da_DK
  localedef -ci locales/kl_GL -f ISO_8859-1:1987 kl_GL
  localedef -ci locales/it_IT -f ISO_8859-1:1987 it_IT
  localedef -ci locales/is_IS -f ISO_8859-1:1987 is_IS
  localedef -ci locales/fr_LU -f ISO_8859-1:1987 fr_LU
  localedef -ci locales/fr_FR -f ISO_8859-1:1987 fr_FR
  localedef -ci locales/de_DE -f ISO_8859-1:1987 de_DE
  localedef -ci locales/de_CH -f ISO_8859-1:1987 de_CH
  localedef -ci locales/fr_CH -f ISO_8859-1:1987 fr_CH
  localedef -ci locales/en_CA -f ISO_8859-1:1987 en_CA
  localedef -ci locales/fr_CA -f ISO_8859-1:1987 fr_CA
  localedef -ci locales/fo_FO -f ISO_8859-1:1987 fo_FO
  localedef -ci locales/et_EE -f ISO_8859-1:1987 et_EE
  localedef -ci locales/es_ES -f ISO_8859-1:1987 es_ES
  localedef -ci locales/en_US -f ISO_8859-1:1987 en_US
  localedef -ci locales/en_GB -f ISO_8859-1:1987 en_GB
  localedef -ci locales/en_IE -f ISO_8859-1:1987 en_IE
  localedef -ci locales/de_LU -f ISO_8859-1:1987 de_LU
  localedef -ci locales/de_BE -f ISO_8859-1:1987 de_BE
  localedef -ci locales/de_AT -f ISO_8859-1:1987 de_AT
  localedef -ci locales/sl_SI -f ISO_8859-2:1987 sl_SI
  localedef -ci locales/ru_RU -f ISO_8859-5:1988 ru_RU
  localedef -ci locales/pl_PL -f ISO_8859-2:1987 pl_PL
  localedef -ci locales/lv_LV -f BALTIC lv_LV
  localedef -ci locales/lt_LT -f BALTIC lt_LT
  localedef -ci locales/iw_IL -f ISO_8859-8:1988 iw_IL
  localedef -ci locales/hu_HU -f ISO_8859-2:1987 hu_HU
  localedef -ci locales/hr_HR -f ISO_8859-4:1988 hr_HR
  localedef -ci locales/gr_GR -f ISO_8859-7:1987 gr_GR
</code>
</p>

<sect> ÀÌÁ¦ ¹«¾ùÀ» ÇÒ °ÍÀΰ¡?<p>
ÀÌ·¸°Ô ¼³Ä¡ÇÏ°í ³­ ÈÄ ¿©·¯ºÐÀº ·ÎÄÉÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
  ¿©±â ¾ÆÁÖ °£´ÜÇÑ ¿¹°¡ ÀÖ´Ù.
<code>
     /* test.c : ·ÎÄÉÀÏÀÌ ·ÎµùµÇ°í »ç¿ëµÇ´ÂÁö Å×½ºÆ® */
       #include <locale.h>
       #include <stdio.h>
       #include <time.h>
     main(){
               time_t t;
               struct tm * _t;
               char buf[256];
             time(&t);
               _t = gmtime(&t);
             setlocale(LC_TIME,"");
               strftime(buf,256,"%c",_t);
             printf("%s\n",buf);
       }
</code>
·ÎÄÉÀÏ ÇÁ·Î±×·¥À» »ç¿ëÇÏ¿© ÇÏ¿© ÇöÀç ·ÎÄÉÀÏ È¯°æº¯¼ö°¡ ¾î¶²Áö ¾Ë¾Æº¼ ¼ö
  ÀÖ´Ù.
<code>
     $ # ¼­·Î ´Ù¸¥ ¸î °¡Áö ·ÎÄÉÀÏ ¼³Á¤À» ÇÏ¿© À§ ÇÁ·Î±×·¥À» ¼öÇà½ÃŲ´Ù.
       $ gcc -s -o Test test.c
       $ # ·ÎÄÉÀÏÀÌ ¹«¾ùÀÎÁö ¾Ë¾Æº»´Ù.
       $ locale
       LANG=POSIX
       LC_COLLATE="POSIX"
       LC_CTYPE="POSIX"
       LC_MONETARY="POSIX"
       LC_NUMERIC="POSIX"
       LC_TIME="POSIX"
       LC_MESSAGES="POSIX"
       LC_ALL=
       $ # Áö·çÇϱâ ¦ÀÌ ¾ø´Â C ·ÎÄÉÀÏÀ» »ç¿ëÇϰí ÀÖ´Ù. -_-
       $ # ¿µ¾î±Ç Ä«³ª´Ù·Î ¹Ù²Ù¾îº¸ÀÚ.
       $ export LC_TIME=en_CA
       $ Test
       Sat 23 Mar 1996 07:51:49 PM
       $ # À̹ø¿¡´Â ÇÁ¶û½º¾î±Ç Ä«´Ù³ª·Î ¹Ù²Ù¾îº¸ÀÚ.
       $ export LC_TIME=fr_CA
       $ Test
       sam 23 mar 1996 19:55:27
</code>
</p>

 <sect>   catopen ¹ö±× °íÄ¡±â<p>
·ÎÄÉÀÏÀ» ÀνºÅçÇÏ°Ô µÇ¸é ¸®´ª½º libc ¿¡ ÀÖ´Â catopen ¸í·É¿¡ ÀÖ´Â ¹ö±×(±â´É?)
  À» °íÄ¡°Ô µÈ´Ù. ¸Þ¼¼Áö ¸ñ·ÏÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç ÈÄ µ¶ÀÏ¾î ¸ñ·ÏÀ»

  /home/peeter/catalogs/de_DE
¿¡ ¸¸µé¾î ³ÖÀ¸¶ó.

de_DE ·ÎÄÉÀÏÀ» ÀνºÅçÇϱâ Àü¿¡ ´ÙÀ½À» ¼öÇàÇÑ´Ù.

export LC_MESSAGES=de_DE
  export NLSPATH=/home/peeter/catalogs/%L/%N.cat:$NLSPATH
µ¶ÀÏ¾î ¸Þ¼¼Áö´Â ¿­¸®Áö ¾Ê°í catget ÀÇ ±âº» ¸Þ¼¼Áö°¡ »ç¿ëµÈ´Ù.

ÀÌ ÀÌÀ¯´Â catopen ÀÌ ¿Ã¹Ù¸¥ ¸Þ¼¼Áö ¹üÁÖ¸¦ ¾ò¾î³»±â À§ÇØ setlocale ¸¦ È£ÃâÇÏ
  Çϴµ¥ setlocale Àº ȯ°æº¯¼ö°¡ Á¦´ë·Î ¼¼ÆÃµÇ¾î ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í ½ÇÆÐÇÏ
  ±â ¶§¹®ÀÌ´Ù.

  catopen Àº NLSPATHÀÇ ¸ðµç "%L"¿¡ ´ëÇÏ¿© C ·Î ±³Ã¼ÇÏ·Á°í ÇÑ´Ù.
·ÎÄÉÀÏÀ» ¼³Ä¡ÇÏÁö ¾Ê¾Æµµ ¿©·¯ºÐÀÇ ¸Þ¼¼Áö ¸ñ·ÏÀ» »ç¿ëÇÒ ¼ö´Â ÀÖ´Ù.
  ÇÏÁö¸¸ NLSPATH¸¦ Á¤È®È÷ ´ÙÀ½°ú °°ÀÌ ¸í½ÃÇØÁÖ¾î¾ß ÇÒ °ÍÀÌ´Ù.

     export NLSPATH=/home/peeter/catalogs/de_DE/%N.cat:$NLSPATH
ÇÏÁö¸¸ ÀÌ·¸°Ô µÇ¸é ·ÎÄÉÀÏ ¹üÁÖ¿¡ ´ëÇÑ È¯°æº¯¼ö¸¦ »ç¿ëÇÒ Çʿ伺 ÀÚü°¡ »ç¶ó
  Áö´Â °ÍÀÌ´Ù.
</p>

<sect> Áú¹®°ú ´ä<p>
ÀÌ ¼½¼ÇÀº Áö±ÝÀ¸·Î¼­´Â FAQ ¶ó°í ÇÒ ¼ö ¾ø°ÚÁö¸¸ ¾ÕÀ¸·Î FAQ ·Î ÀÚ¶ó³¯ °ÍÀÌ´Ù.
</p>

<sect1>  msgcat Áú¹®<p>
³ª´Â ¸®´ª½º »ç¿ëÀÚÀÌ¸ç ´ÙÀ½°ú °°Àº ½ÃÇè ÇÁ·Î±×·¥À» ¸¸µé¾ú´Ù.
<code>
       #include <stdio.h>
       #include <locale.h>
       #include <features.h>
       #include <nl_types.h>
     main(int argc, char ** argv)
       {
               nl_catd catd;
             setlocale(LC_MESSAGES, "");
               catd = catopen("msg", MCLoadBySet);
               fprintf(stderr,catgets(catd, 1, 1, "locale message fail\n"));
               catclose(catd);
       }
</code>
       $ msg.m
       $set 1
     1 locale message pass\n

If I use absolute path in catopen like

  ³»°¡ ¸¸¾à catopen("/etc/locale/msg.cat",MCLoadBySet); ¿Í °°ÀÌ Àý´ë °æ·Î¸¦
  »ç¿ëÇÏ¸é ¿ÇÀº °á°ú¸¦ ¾ò¾î³»Áö¸¸ À§Ã³·³ »ç¿ëÇÏ¸é °á°ú°ª -1 Áï ½ÇÆÐÇÏ°Ô µÈ´Ù.
</p>

<sect1>  msgcat ´äº¯<p>
ÀÌ Áú¹®Àº Áö³­ ¼½¼Ç¿¡¼­ ´äº¯ÀÌ µÈ ¹®Á¦À̱ä ÇÏÁö¸¸ ¸î °¡Áö ºÎ°¡ÀûÀÎ Á¤º¸¸¦
  ¸»ÇÒ ±âȸ¶ó°í »ý°¢ÇÑ´Ù.

¿©·¯ºÐÀÇ ¸Þ¼¼Áö ¸ñ·ÏÀ» ³ÖÀ» ¼ö ÀÖ´Â °÷Àº ¾ÆÁÖ ¸¹´Ù.
  ȯ°æº¯¼ö¿¡¼­ NLSPATH¸¦ ¸í½ÃÀûÀ¸·Î ¼³Á¤ÇÏÁö ¾Ê¾Ò´Ù ÇÏ´õ¶óµµ ´ÙÀ½°ú °°ÀÌ
  libc ¿¡ Á¤ÀǵǾî ÀÖ´Ù.
<code>
     $ strings /lib/libc.so.5.2.18 | grep locale | grep %L
       /etc/locale/%L/%N.cat:/usr/lib/locale/%L/%N.cat:/usr
       /lib/locale/%N/%L:/usr/share/locale/%L/%N.cat:/usr/
       local/share/locale/%L/%N.cat

µû¶ó¼­ ´ÙÀ½ Áß Çϳª¸¦ ¼¼ÆÃÇØÁÖ¸é :
     $ export LC_MESSAGES=en_CA
       $ export LC_ALL=en_CA
       $ export LANG=en_CA

À§¿¡¼­ º¸¿©Áø NLSPATH¿Í ȯ°æº¯¼ö¿¡ ÀǰÅÇÏ¿© catopen("msg", MCLoadBySet); ´Â
  ´ÙÀ½ µð·ºÅ丮 Áß Çϳª¿¡ ¸Þ¼¼Áö ¸ñ·ÏÀÌ ÀÖ´Â °æ¿ì ÀÛµ¿ÇÏ°Ô µÈ´Ù.
     /etc/locale/en_CA/msg.cat
       /usr/lib/locale/en_CA/msg.cat
       /usr/lib/locale/msg/en_CA
       /usr/share/locale/en_CA/msg.cat
       /usr/local/share/locale/en_CA/msg.cat
</code>
This, however, will not work if you don't have the en_CA locale

  ÇÏÁö¸¸ ¿©·¯ºÐÀÌ en_CA ·ÎÄÉÀÏÀ» ¼³Ä¡ÇÏÁö ¾Ê¾Ò´Ù¸é Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.
  ¿Ö³ÄÇϸé setlocale °¡ ½ÇÆÐÇÏ¿© catopen ·çƾÀÇ %LÀ» en_CA °¡ ¾Æ´Ñ C ·Î ±³Ã¼
  Çϱ⠶§¹®ÀÌ´Ù.
</p>

<sect>  ³¡³»´Â ¸»<p>
ÀÚ, À̰ÍÀÌ ÀüºÎ´Ù. ÀÌ ¹®¼­°¡ ¿©·¯ºÐ¿¡°Ô ¾à°£À̶ó°í µµ¿òÀÌ µÇ¾ú±â¸¦ ¹Ù¶õ´Ù.
  ·ÎÄÉÀÏ ÀÎ½Ä ÇÁ·Î±×·¥À» Â¥´Âµ¥ ´ëÇÑ ´Ù¸¥ Á¤º¸¸¦ ãÀ» ¼ö ÀÖ´Â °÷ÀÌ ¸¹ÀÌ ÀÖÀ»
  °ÍÀÌ´Ù. libc¿¡ ´ëÇÑ info ÆäÀÌÁö¿¡µµ ¾à°£ÀÇ Á¤º¸°¡ ÀÖ°í ¸ÇÆäÀÌÁö¿¡µµ ÀÖ´Ù.
  ¾à°£ À¥À» µ¹¾Æ´Ù´Ï´Ù º¸¸é ¸¹Àº Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖÀ¸¸®¶ó º»´Ù.
  ±¹Á¦È­µÈ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÁÁÀº Á¤º¸ ¿øÃµÀ» ã°Ô µÇ°í º»Àεµ ¾Ë±â ¹Ù¶õ´Ù¸é,
  ¿©±â´Ù Àû¾î³õ±â·Î ÇϰڴÙ.
</p>
</article>




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0069 sec