· 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>


ID
Password
Join
Be careful how you get yourself involved with persons or situations that can't bear inspection.


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.0088 sec