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>
|
You are going to have a new love affair. |











