@dircategory GNU Gettext Utilities * Gettext-ko: (gettext-ko). GNU gettext À¯Æ¿¸®Æ¼. * gettextize-ko: (gettext-ko)gettextize ½ÇÇà. gettext¸¦ »ç¿ëÇÒ ÆÐÅ°Áö Áغñ. * msgfmt-ko: (gettext-ko)msgfmt ½ÇÇà. PO ÆÄÀÏ¿¡¼ MO ÆÄÀÏ ¸¸µé±â. * msgmerge-ko: (gettext-ko)msgmerge ½ÇÇà. µÎ°³ÀÇ PO ÆÄÀÏÀ» Çϳª·Î °»½Å. * xgettext-ko: (gettext-ko)xgettext ½ÇÇà. ¹®ÀÚ¿À» »Ì¾Æ³» POÆÄÀÏ ¸¸µé±â.
Copyright (C) 1995, 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001 Changwoo Ryu
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.
¾ÆÁ÷ ÀÌ ¾È³»¼´Â ÃÊ¾È »óÅÂÀÌ´Ù. ¾î¶² ÀýÀº °ÅÀÇ È¤Àº ÀüÇô °ø¹é »óÅÂÀÌ´Ù. ¿ì¸®´Â °è¼Ó ¿©·¯ °÷¿¡¼ (ÁÖ·Î ÀüÀÚ¿ìÆí Æú´õ¿¡¼) ÀÚ·áµéÀ» ¸ðÀ¸°í ÀÖÁö¸¸, ÀÌ ÀÚ·áµéÀ» Á¦´ë·Î °áÇÕÇÏ´Â ÀÛ¾÷ÀÌ ´Ê¾îÁö°í ÀÖ´Ù.
ÀÌ ¾È³»¼¿¡¼, ¿ì¸®´Â ÇÁ·Î±×·¡¸Ó³ª °ü¸®ÀÚ¿¡ ´ëÇÑ ´ë¸í»ç·Î
±×(he)¸¦ ¾²°í, ¹ø¿ªÀÚ¿¡ ´ëÇÑ ´ë¸í»ç´Â ±×³à(she),
ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ´Â »ç¶÷À̳ª ¹ø¿ªµÈ ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â »ç¶÷¿¡ ´ëÇÑ
´ë¸í»ç·Î ±×µé(they)À» »ç¿ëÇÒ °ÍÀÌ´Ù. ÀÌ ±ÔÄ¢Àº ¸íÈ®ÇÑ
¹®¼¸¦ ¸¸µé±â À§Çؼ ÆíÀÇ»ó Á¤ÇßÀ» »ÓÀÌ°í, ³²¼ºÀ̳ª ¿©¼º¿¡°Ô ÀûÇÕÇÑ
¿ªÇÒÀÌ µû·Î ÀÖ´Ù°í °¡Á¤ÇÏ´Â °ÍÀº Àý´ë ¾Æ´Ï´Ù. ´ç¿¬È÷ GNU
gettext
´Â ÄÄÇ»Å͸¦ »ç¿ëÇÏ´Â »ç¶÷À̶ó¸é ¼ºº°, ÀÎÁ¾, Á¾±³, ȤÀº
±¹Àû¿¡ °ü°è¾øÀÌ ¸ðµç ÀÌ¿¡°Ô ¾µ¸ð ÀÖ´Â µµ±¸ÀÌ´Ù! (¿ªÀÚÁÖ---ÀÌ Çѱ¹¾î
¹ø¿ªº»¿¡¼´Â ³²¼º, ¿©¼º ´ë¸í»çÀÇ ±¸º°ÀÌ ¾ø´Ù.)
ÀÌ Àå¿¡¼´Â GNU gettext
¿Í ÀÚÀ¯ ¹ø¿ª ÇÁ·ÎÁ§Æ®(Free Translation
Project)¸¦ ¸¸µé ¶§ Ãß±¸Çß´ø ¸ñÇ¥µé¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. ±× ´ÙÀ½¿¡ °íÀ¯¾î
Áö¿ø(Native Language Support)°ú °ü·ÃÇÏ¿© ³Î¸® ¾²ÀÌ´Â ¿ë¾îµéÀ» ¸î °¡Áö
¼³¸íÇÑ´Ù. ¶Ç, °¢ ³ª¶óº° Â÷ÀÌ¿Í ¹®ÈÀû Â÷À̸¦ »ý°¢ÇØ º¼¶§ ¹ø¿ª ¸Þ¼¼Áö¸¦
ÇÁ·Î±×·¥¿¡ Æ÷ÇÔ½ÃÅ°´Â ÀÏÀÌ ¾î¶°ÇÑ °¡Ä¡°¡ ÀÖ´ÂÁö ¼³¸íÇÑ´Ù. ¶Ç ¹ø¿ª¹®À»
ÇÁ·Î±×·¥¿¡ Æ÷ÇÔ½Ãų ¶§ ÀÌ¿ëÇÏ´Â ÆÄÀϵ鿡 ´ëÇØ ´ë·« »ìÆ캻´Ù. ¿©±â¼´Â
ÀÌ·¯ÇÑ ÆÄÀϵéÀ» ¸¸µå´Â µ¥ GNU gettext
¿¡ µé¾î ÀÖ´Â µµ±¸µéÀÌ ¾î¶²
ÀÛ¿ëÀ» ÇÏ´ÂÁö ¼³¸íÇÏ°í, Á» ´õ µÚ¿¡´Â ¾î¶»°Ô °ü¸® »çÀÌŬ(maintenance
cycle)ÀÌ µ¿ÀÛÇØ¾ß ÇÏ´ÂÁö ¼³¸íÇÑ´Ù.
Á¦¾ÈÀ̳ª °íÄ¥ Á¡ÀÌ ÀÖÀ¸¸é ´ÙÀ½ ÁÖ¼Ò·Î º¸³»Áֱ⠹ٶõ´Ù:
ÀÎÅÍ³Ý ÁÖ¼Ò: bug-gnu-utils@gnu.org
ÆíÁö¸¦ º¸³¾ ¶§ ÀÌ ¾È³»¼ÀÇ ÆǹøÈ£¿Í ¸¶Áö¸·À¸·Î ¼öÁ¤µÈ ³¯Â¥¸¦ Æ÷ÇÔÇØ Áֱ⠹ٶõ´Ù.
Çѱ¹¾îÆÇ ¹ø¿ªÀÚÀÇ º¯
À§¿¡ ¾²¿©Áø ¹Ù¿Í °°ÀÌ ÀÌ ¾È³»¼´Â ¿Ï¼ºµÈ ¾È³»¼°¡ ¾Æ´Ï´Ù. ¾î¶² ºÎºÐÀº ¸Å¿ì Àß ¾²¿©Á³Áö¸¸, ¶Ç ¾î¶² ºÎºÐÀº »ç¶÷µé »çÀÌ¿¡ ¿À°£ À̸ÞÀÏ Á¶°¢µéÀ» ±Ü¾î ºÙ¿©³õÀº °Í »ÓÀÌ´Ù. ´õ ³ª»Û »ç½ÇÀº, gettext´Â 0.10.35 ÀÌÈÄ¿¡ ´õ ÀÌÈÄÀÇ ¹öÀüÀÌ ¹ßÇ¥µÇÁö ¾Ê°í ÀÖ´Ù; ±× ÀÌÀ¯´Â gettextÀÇ ÇÏ´Â ÀÏÀÌ µü °íÁ¤µÇ¾î Àֱ⠶§¹®À̱⵵ ÇÏ°í, ÀÌÁ¦ libintl Äڵ尡 GNU C LibraryÀÇ ÀϺηΠÆ÷ÇԵǾî Àֱ⠶§¹®À̱⵵ ÇÏ´Ù (gettext¿Í GNU C LibraryÀÇ ¸ÞÀÎÅ×À̳ʴ °°Àº »ç¶÷ÀÌ´Ù).
ºÐ¸í ÇüÆí¾ø´Â ¹ø¿ªÀÇ Ã¥ÀÓÀº ¹ø¿ªÀÚ¿¡°Ô ÀÖÁö¸¸, GNU
gettext
¿µ¹® ¾È³»¼ ¿ª½Ã Àбâ Èûµç ÃÊ¾È »óŶó´Â Á¡À» °¨¾ÈÇØ Áֱ⸦ ¹Ù¶õ´Ù.
gettext
ÀÇ ¸ñÀûº¸Åë ÇÁ·Î±×·¥Àº ¿µ¾î·Î ¸¸µé¾î Áö°í, ¿µ¾î·Î ¹®¼ÈµÈ´Ù. ¶Ç ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ »ç¿ëÀÚ¿Í Á¤º¸¸¦ ÁÖ°í¹Þ´Â ¾ð¾î·Î ¿µ¾î¸¦ »ç¿ëÇÑ´Ù. ÀÌ´Â GNU ¼ÒÇÁÆ®¿þ¾î»Ó¸¸ÀÌ ¾Æ´Ï¶ó, »ó´ç¼öÀÇ »ó¾÷¿ë, ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÇ °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÌ´Ù. ¾î¶² °øÅëµÈ ¾ð¾î¸¦ »ç¿ëÇϸé Àü ¼¼°è¿¡ Èð¾îÁ® ÀÖ´Â °³¹ßÀÚ, °ü¸®ÀÚ, ±×¸®°í »ç¿ëÀÚ »çÀÌ¿¡ ÀÇ°ßÀ» ±³È¯ÇϱⰡ ´ë´ÜÈ÷ Æí¸®ÇÏ´Ù. ÇÏÁö¸¸ ´Ù¸¥ ÇÑÆíÀ¸·Î, ´ëºÎºÐÀÇ »ç¶÷µéÀº ¿µ¾îº¸´Ù´Â ÀÚ½ÅÀÇ ¸ð±¹¾î¸¦ ´õ ÆíÇÏ°Ô »ç¿ëÇÏ°í, ÀÏ»óÀûÀÎ »ýÈ°¿¡¼´Â °¡´ÉÇÑ ÇÑ ¸ð±¹¾î¸¦ »ç¿ëÇÏ·Á°í ÇÑ´Ù. ´ç¿¬È÷ ¸¹Àº »ç¶÷µéÀº ÄÄÇ»ÅÍ ½ºÅ©¸°¿¡ ¿µ¾î°¡ Á» ´õ Àû°Ô º¸ÀÌ°í, ¸ð±¹¾î°¡ ´õ¿í ´õ ¸¹ÀÌ º¸À̱⸦ ¹Ù¶ö °ÍÀÌ´Ù.
±×·¯³ª, ¸¹Àº »ç¶÷µé¿¡°Ô ÀÌ·¯ÇÑ ²ÞÀÇ ½ÇÇöÀº ³Ê¹« ¸Ö¸® ÀÖ´Â °Íó·³ º¸ÀÌ°í ¾î¼¸é ±×·± ÀÏÀ» »ý°¢ÇÏ´Â µ¥ ½Ã°£ ³¶ºñÇÒ ÇÊ¿äÁ¶Â÷ ¾ø´Ù°í ÇÒ Áö ¸ð¸¥´Ù. »ç¶÷µéÀº ±× ²ÞÀÌ °ú¿¬ ¾ÕÀ¸·Î ½ÇÇöµÉ Áöµµ È®½ÅÇÏÁö ¸øÇÑ´Ù. ÇÏÁö¸¸ ¸î »ç¶÷µéÀº Èñ¸ÁÀ» ÀÒÁö ¾Ê¾Ò°í, ±× ¸î ¸íÀÌ ¸ð¿´´Ù. ¹ø¿ª ÇÁ·ÎÁ§Æ®(The Translation Project)´Â ÀÌ·± Èñ¸ÁµéÀ» ÃÇ°èÀûÀ¸·Î Á¤¸®Çؼ, È¿°ú¸¦ °ÅµÑ¼ö ÀÖµµ·Ï ¸¸µç Á¶Á÷üÀ̸ç. ¿ì¸® ¸ðµÎ°¡ ÂüµÈ ´Ù±¹¾î ÇÁ·Î±×·¥ÀÇ ½ÇÇö¿¡ Á» ´õ °¡±î¿öÁú ¼ö ÀÖ´Â ÁÁÀº ±âȸÀÌ´Ù.
GNU gettext
´Â ¹ø¿ª ÇÁ·ÎÁ§Æ®°¡ ³»µó´Â Áß¿äÇÑ ÇÑ °ÉÀ½ÀÌ´Ù. GNU
gettext
´Â ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ¶Ç ´Ù¸¥ ¹ß°ÉÀ½µéÀ» ³»µó±â À§ÇÑ ¹ØõÀ̱â
¶§¹®ÀÌ´Ù. ÀÌ ÆÐÅ°Áö´Â ´ÙÀ½À» ÇÁ·Î±×·¡¸Ó, ¹ø¿ªÀÚ, ±×¸®°í »ç¿ëÀÚ¿¡°Ô±îÁö
Àß °áÇÕµÈ µµ±¸µé°ú ¹®¼µéÀ» Á¦°øÇÑ´Ù. ƯÈ÷, GNU gettext
À¯Æ¿¸®Æ¼¿¡ µé¾î ÀÖ´Â ÀÛ¾÷ ȯ°æ ¾È¿¡¼ ´Ù¸¥ ÀÚÀ¯·Î¿î ÆÐÅ°ÁöµéÀÌ ´Ù±¹¾î
¸Þ¼¼Áö¸¦ Ãâ·ÂÇϵµ·Ï ¸¸µé ¼ö ÀÖ´Ù. ÀÌ µµ±¸µéÀº ´ÙÀ½À» Æ÷ÇÔÇÑ´Ù:
GNU gettext
´Â ÇÁ·Î±×·¥ ¼Ò½º°¡ ±¹Á¦ÈµÇ¾úÀ» ¶§ ¹ÌÄ¡´Â ¿µÇâÀ»
ÃÖ¼ÒÈÇϵµ·Ï ¼³°èµÇ¾úÀ¸¹Ç·Î, ÀÌ ¿µÇâÀ» ÃÖ´ëÇÑ ÀÛ°í, °ÅÀÇ ¾Ë¾Æç ¼ö
¾øµµ·Ï À¯ÁöÇÑ´Ù. ±¹Á¦È´Â ±¹Á¦ÈÀÇ ºÎ´ãÀÌ À۰ųª, ÃÖ¼ÒÇÑ ÇÁ·Î±×·¥
¼Ò½º¸¦ ºÃÀ» ¶§ ºÎ´ãÀÌ ÀÛÀº °Íó·³ º¸ÀÏ ¼ö·Ï ´õ ¼º°ø °¡´É¼ºÀÌ ³ô´Ù.
¹ø¿ª ÇÁ·ÎÁ§Æ®´Â GNU gettext
¹èÆ÷º»À» ÀÌ¿ëÇØ ¹ø¿ª ÇÁ·ÎÁ§Æ®ÀÇ
±¸Á¶¿Í ÇÁ·ÎÁ§Æ® ÁøÇà ¹æ¹ýÀ» ¹®¼ÈÇÑ´Ù. ÀÌ°ÍÀº ¾ö°ÝÈ÷ ¸»Çϸé GNU
gettext
ÀÇ ¹®¼È ¹üÀ§¸¦ ³Ñ¾î¼´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Çؼ, ¹ø¿ªÀÚ´Â
°¡´ÉÇϸé ÇÑ Àå¼Ò¿¡¼ ¹ø¿ª ÀÛ¾÷À» À§ÇØ ¾Ë¾Æ¾ß ÇÒ ¸ðµç Á¤º¸¸¦ ãÀ» ¼ö
ÀÖ´Ù. ¶Ç, ÇÁ·Î±×·¡¸Ó¿Í È£±â½É ¸¹Àº »ç¿ëÀڵ鵵 ÀÌ·¸°Ô ¹ø¿ª ÇÁ·ÎÁ§Æ®¿Í
°ü·ÃµÈ ³»¿ëµéÀ» º¸°í GNU gettext
°¡ ¹ø¿ª ÇÁ·ÎÁ§Æ®ÀÇ ¿©·¯ ºÎºÐµé°ú
¾î¶² °ü°è°¡ ÀÖ´ÂÁö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ°í, Å« ±×¸²À» Àá±ñ º¼ ¼ö ÀÖÀ»
°ÍÀÌ´Ù.
ÇÁ·Î±×·¥ÀÇ °íÀ¯¾î Áö¿ø¿¡ °üÇÑ ¾ê±â°¡ ³ª¿À¸é, Ç×»ó ±æ´Ù¶õ ´Ü¾î µÎ °³°¡ µîÀåÇÑ´Ù. ÀÌ ´Ü¾î µÎ°³´Â Á¤È®ÇÑ Àǹ̰¡ ÀÖÀ¸¸ç, ¿©±â¼, ±×¸®°í ÀÌ ¹®¼ÀÇ ¸ðµç °÷¿¡ °ÉÃļ ¼³¸íÇÒ ¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Â Áß¿äÇÑ ´Ü¾îÀÌ´Ù. ÀÌ ´Ü¾î´Â ±¹Á¦È(internationalization)¿Í Áö¿ªÈ(localization)ÀÌ´Ù. ¸¹Àº »ç¶÷µéÀº ÀÌ ±æ´Ù¶õ ´Ü¾î¸¦ ¹Ýº¹Çؼ ¾²´Â °Í¿¡ ÁöÄ£ ³ª¸ÓÁö, i18n°ú l10nÀ̶ó°í ¾²´Â ¹ö¸©À» °®°í ÀÖ´Ù. ÀÌ ¾à¾î´Â °¢ ´Ü¾îÀÇ Ã¹¹ø°¿Í ¸¶Áö¸· ±ÛÀÚ¸¦ ¾²°í ³ª¸ÓÁö Áß°£ÀÇ ±ÛÀÚµéÀ» ±× ±ÛÀÚ°¡ ¸î°³ÀÎÁö¸¦ ³ªÅ¸³»´Â ¼ö·Î ¹Ù²ã ¹ö¸° °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ ¾È³»¼¿¡¼´Â, ¸íÈ®ÇÔÀ» À§ÇØ Àγ»½ÉÀ» °®°í ÀÌ ´Ü¾îµéÀ» ÀÖ´Â ±×´ë·Î »ç¿ëÇÒ °ÍÀÌ´Ù. ¸Å¹ø ¹Ýº¹Çؼ...
±¹Á¦È¶õ, ¾î¶² ÇÁ·Î±×·¥ ȤÀº ÇÁ·Î±×·¥µéÀÇ ÁýÇÕÀÌ ¿©·¯ ¾ð¾î¸¦
Áö¿øÇÒ ¼ö ÀÖµµ·Ï ¸¸µå´Â °úÁ¤À» ¶æÇÑ´Ù. ±¹Á¦È´Â ±× ÇÁ·Î±×·¥ÀÌ ¿µ¾î
¹®ÀÚ¿ ȤÀº ±× ¹Û¿¡ ¿µ¾î¿Í °ü·ÃµÈ ¹ö¸©µé¿¡ °íÁ¤µÇÁö ¾Êµµ·Ï ÀϹÝÈÇÏ´Â
°úÁ¤ÀÌ´Ù. ÇÁ·Î±×·¥À» ±¹Á¦ÈÇÒ ¶§ ÇÁ·Î±×·¥ °³¹ßÀÚ´Â ¿©·¯ °¡Áö ±â¼úµéÀ»
È°¿ëÇÒ ¼ö Àִµ¥, ±× Áß¿¡ ¸î °¡Áö´Â Ç¥ÁØȵǾî ÀÖ°í, GNU
gettext
¿¡¼ Á¦°øÇÏ´Â °ÍÀº ÀÌ·¯ÇÑ Ç¥ÁØÈµÈ ±â¼ú ÁßÀÇ ÇÑ °¡ÁöÀÌ´Ù.
See section ÇÁ·Î±×·¡¸ÓÀÇ °üÁ¡.
Áö¿ªÈ¶õ, ÀÌ¹Ì ÇÁ·Î±×·¥µéÀÌ ±¹Á¦ÈµÈ »óÅ¿¡¼, ƯÁ¤ ¾ð¾î ¹× ±× ¹®ÈÀûÀÎ ¹ö¸©µé¿¡ ¸Â°Ô ÀÔÃâ·ÂÀ» ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÊ¿äÇÑ Á¤º¸¸¦ Æ÷ÇÔ½ÃÅ°´Â °úÁ¤À» ¸»ÇÑ´Ù. Áö¿ªÈ´Â ÀÌ¹Ì ±¹Á¦ÈµÈ ÇÁ·Î±×·¥¿¡¼ ÀϹÝÀûÀÎ ±â´ÉµéÀ» ƯÁ¤ ¹æ¹ýÀ¸·Î ¾²À̵µ·Ï ƯÈÇÏ´Â °úÁ¤ÀÌ´Ù. ±¹Á¦ÈµÈ ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàÇÒ ¶§ ¾î¶»°Ô ¼³Á¤µÇ¾î ÀÖ´À³Ä¿¡ µû¶ó ¸î¸î ±â´ÉµéÀÌ ´Ù¸£°Ô µ¿ÀÛÇϵµ·Ï µÇ¾î ÀÖ´Ù. ÀÌ·¯ÇÑ ¹®ÈÀûÀÎ ¹ö¸©µéÀÇ ¸î °¡Áö ÁýÇÕ¿¡ ´ëÇØ ±â¼úÇØ ³õÀº °Í, ±×¸®°í ƯÁ¤ ¾ð¾î¸¦ À§ÇØ ¸¸µé¾îÁø ¹ø¿ª¹®µéÀ» ±× ¾ð¾î ȤÀº ±× ±¹°¡ÀÇ ·ÎÄÉÀÏ(locale)À̶ó°í ºÎ¸¥´Ù. »ç¿ëÀÚ°¡ ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ Àü¿¡ ·ÎÄÉÀÏ¿¡ °üÇÑ È¯°æ º¯¼öÀÇ °ªÀ» Á¦´ë·Î ¸ÂÃç ³õÀ¸¸é ¾î¶² ·ÎÄÉÀÏÀÌ »ç¿ëµÉÁö ÁöÁ¤ÇÏ´Â °ÍÀÌ°í, »ç¿ëÀÚ´Â ÀÌ·¸°Ô Áö¿ªÈµÈ ÇÁ·Î±×·¥À» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
»ç½Ç ·ÎÄÉÀÏ ¸Þ¼¼Áö Áö¿ø±â´ÉÀº, ·ÎÄÉÀÏ ³»¿¡ µé¾î ÀÖ´Â ¿©·¯ °¡Áö ¹®ÈÀû ½À°üÀ» ´ãÀº ¿©·¯ Á¤º¸µé °¡¿îµ¥ ÇÑ °¡ÁöÀÏ »ÓÀÌ´Ù. ¿©·¯ °¡Áö ÇÁ·Î±×·¥°ú ÇÔ¼öµéÀ» ÀÌ¿ëÇØ ÇÁ·Î±×·¡¸Ó´Â ±¹Á¦ÈµÈ ¼ÒÇÁÆ®¿þ¾îÀÇ °³¹ß ¹× ƯÁ¤ ·ÎÄÉÀÏÀÇ Á¤º¸¸¦ Á¢±ÙÇÏ´Â ÀÏÀ» Æí¸®ÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù. ´©±º°¡ ƯÁ¤·ÎÄÉÀÏÀ» ÂüÁ¶Çϸé, ½ÇÁ¦·Î´Â ±× ·ÎÄÉÀÏ ³»¿¡ ÀúÀåµÈ Á¤º¸¸¦ ÂüÁ¶ÇÏ´Â °ÍÀÌ´Ù. ºñ½ÁÇÏ°Ô, ÇÁ·Î±×·¡¸Ó°¡ "·ÎÄÉÀÏ ·çƾÀ» Á¢±ÙÇÑ´Ù"¸é, ±× ·ÎÄÉÀÏ ·çƾÀ̶õ ·ÎÄÉÀÏ Á¤º¸¸¦ Á¢±ÙÇϱâ À§ÇÑ ¸ðµç ·çƾµéÀÇ ÁýÇÕÀ» ¶æÇÏ´Â °ÍÀÌ´Ù.
¾î¶² À̵éÀº, ÇÁ·Î±×·¥¿¡¼ ¿©·¯ °³ÀÇ ¾ð¾î¸¦ »ç¿ëÇϵµ·Ï ÇØ ÁÖ´Â ±¹Á¦È¿Í Áö¿ªÈ¸¦ ¸ðµÎ Æ÷ÇÔÇÏ´Â ÀÛ¾÷ ¹× °ü·Ã ±â´ÉÀ» °íÀ¯¾î Áö¿ø(Native Language Support), ȤÀº °£´ÜÈ÷ NLS¶ó´Â ¸»·Î Ç¥ÇöÇϱ⵵ ÇÑ´Ù. ¿ä¾àÇϸé, ±¹Á¦È´Â ±¹Á¦È ÀÌÈÄ¿¡ ÇÏ°Ô µÉ Áö¿ªÈ¸¦ °¡´ÉÇϵµ·Ï ¸¸µå´Â °úÁ¤À̶ó°í ÇÒ ¼ö ÀÖ´Ù.
´Ù±¹¾î ¹ø¿ª ¸Þ¼¼Áö¿¡¸¸ ±¹ÇѽÃÄѼ ´ëÃæ ¸»ÇÑ´Ù¸é, ±¹Á¦È´Â ÇÁ·Î±×·¡¸Ó°¡ ½Å°æ ¾µ ¹®Á¦ÀÌ°í, Áö¿ªÈ´Â º¸Åë ¹ø¿ªÀÚ°¡ ½Å°æ¾µ ¹®Á¦ÀÌ´Ù.
¿Ïº®ÇÑ ´Ù±¹¾î ¹èÆ÷º»À» ¸¸µå·Á¸é, Ãâ·Â ¸Þ¼¼Áö ÀÌ¿Ü¿¡µµ ¹ø¿ªµÇ¾î¾ß ÇÒ °ÍÀÌ ¸¹´Ù.
gettext
¿¡´Â C ÇÁ·Î±×·¥ÀÇ Ãâ·Â ¸Þ¼¼Áö¸¦ ¹ø¿ªÇÏ´Â µ¥´Â
¿Ïº®ÇÑ µµ±¸°¡ ±¸ºñµÇ¾î ÀÖ´Ù. ±×·±µ¥ C ÇÁ·Î±×·¥ ÀÌ¿Ü¿¡ ÆÞ ½ºÅ©¸³Æ®¿Í ¼Ð
½ºÅ©¸³Æ®µµ ¹ø¿ªµÇ¾î¾ß ÇÑ´Ù. ¹ø¿ªÇÏ´Â ¹æ¹ýÀÌ ÀÌ¹Ì ¸î °¡Áö ³ª¿Í ÀÖÁö¸¸,
ÀÌ ¹æ¹ýµéÀÌ GNU gettext
¿¡ ¿ÏÀüÈ÷ Æ÷ÇԵǾî¾ß ÇÑ´Ù.
autoconf
³ª bison
°ú °°Àº ÇÁ·Î±×·¥µéÀº ¶Ç ´Ù¸¥ ÇÁ·Î±×·¥(ȤÀº
½ºÅ©¸³Æ®)À» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù. autoconf
³ª bison
°ú °°Àº
ÇÁ·Î±×·¥µéÀÌ ±¹Á¦ÈµÇ¾ú´Ù°í Çصµ, ÀÌ ÇÁ·Î±×·¥ÀÌ ¸¸µé¾î ³»´Â ÇÁ·Î±×·¥
ÀÚüµµ ±¹Á¦È µÇ¾ß ÇÑ´Ù. ÀÌ °£Á¢ÀûÀÎ ±¹Á¦È °úÁ¤Àº ÇÁ·Î±×·¥À» ¸¸µé¾î
³»´Â ÇÁ·Î±×·¥¿¡¼ Á÷Á¢ ÀÚµ¿È ÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸, »ç½Ç
ÇÁ·Î±×·¥À» ¸¸µé¾î ³»´Â ÇÁ·Î±×·¥°ú ¸¸µé¾î Áö´Â ÇÁ·Î±×·¥Àº º°µµ·Î ±¹Á¦ÈµÉ
¼ö ÀÖ´Ù. ¿Ö³ÄÇÏ¸é º¸Åë ÇÁ·Î±×·¥À» »ý¼ºÇÏ´Â ÀÏ°ú »ý¼ºµÈ ÇÁ·Î±×·¥À»
±¹Á¦ÈÇÏ´Â ÀÏÀº ¼·Î ¾Æ¹« ¿µÇâÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.
recode
ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¶§
RFC 1345¿¡ µé¾î ÀÖ´Â °¢ ¹®Àڵ鿡 ´ëÇÑ ¿µ¾î·Î ¾²¿©Áø ¼³¸íÀ» Àд´Ù.
ÀÌ ¼³¸í¹®Àº RFC¿¡¼ ±â°èÀûÀÎ ¹æ¹ýÀ¸·Î ÃßÃâµÈ °ÍÀ̱⠶§¹®¿¡, ÀÌ ¼³¸íÀ»
Á¦´ë·Î ¹ø¿ªÇÏ·Á¸é ¹Ì¸® ±× RFC¿¡ ´ëÇÑ ¹ø¿ª¹®ÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù.
ÀÌ¹Ì °Á¶ÇÑ °Íó·³, ¹ø¿ªÀº ·ÎÄÉÀÏÀÇ ¿ÀÁ÷ ÇÑ °¡Áö Ãø¸éÀÏ »ÓÀÌ´Ù. ±× ¿ÜÀÇ
±¹Á¦È Ãø¸éµéÀº GNU libc
°¡ ó¸®ÇÑ´Ù. ¾î¶² ±¹°¡ÀÇ ¹®ÈÀûÀÎ
°ü½ÀµéÀ» Á¤ÀÇÇÏ·Á¸é ¸¹Àº ¿ä¼ÒµéÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ ¿ä¼ÒµéÀº ±× ±¹°¡ÀÇ ±¹¾î,
³¯Â¥¿Í ½Ã°£À» Ç¥½ÃÇÏ´Â ¹æ¹ý, ¼ýÀÚ Ç¥±â, ÅëÈÇ¥½Ã µîÀÌ´Ù. ·ÎÄÉÀÏÀº
ÀÌ·¯ÇÑ ±¹°¡ °íÀ¯ÀÇ ¼Ó¼ºµéÀ» Áö¿øÇϱâ À§ÇØ ÇÊ¿äÇÑ Á¤º¸µéÀ» ´ã°í ÀÖ´Ù.
±¹°¡¸¶´Ù ´Ù¸£°Ô ó¸®ÇØ¾ß ÇÏ´Â ºÐ¾ß°¡ ¸î °¡Áö Àִµ¥, ¹Ù·Î ±× ºÐ¾ßµéÀ»
º¸¸é ·ÎÄÉÀÏ µ¥ÀÌŸ°¡ ¹«¾ùÀ» ´ã°í ÀÖ¾î¾ß ÇÏ´ÂÁö Á¤ÀǵȴÙ. ´ÙÀ½ ¸®½ºÆ®¸¦
º¸¸é ´Ù±¹¾î ¸Þ¼¼Áö ó¸® ºÐ¾ß°¡ ±× ¹ÛÀÇ ·ÎÄÉÀÏ °ü·Ã ÀÛ¾÷µé°ú ºñ±³ÇßÀ» ¶§
¾îµð¿¡ À§Ä¡ÇÏ´ÂÁö ¾Ë ¼ö ÀÖ´Ù. ÀÚ¼¼ÇÑ °ÍÀº GNU libc
¾È³»¼¸¦
ÂüÁ¶Çϱ⠹ٶõ´Ù.
12,345.67 ¿µ¾î 12.345,67 ÇÁ¶û½º¾î 1,2345.67 ¾Æ½Ã¾Æ¾î¶² ÇÁ·Î±×·¥Àº ´õ ³ª¾Æ°¡ ¹Ì±¹½Ä ´ÜÀ§°è ȤÀº ¹ÌÅ͹ý°ú °°ÀÌ, ¿ÏÀüÈ÷ ´Ù¸¥ ´ÜÀ§°è¸¦ ¾²±âµµ ÇÑ´Ù. ȤÀº ¼ýÀÚ¸¦ ¾Æ¶óºñ¾Æ ¼ýÀÚ°¡ ¾Æ´Ñ ¿ÏÀüÈ÷ ´Ù¸¥ öÀڷΠǥ±âµÉ ¼öµµ ÀÖ´Ù.
gettext
°¡ Á¦°øÇÏ´Â ºÐ¾ß·Î, GNU gettext
ÀÇ µµ±¸¸¦ ÀÌ¿ëÇØ
°³¹ßÀÚ¿Í »ç¿ëÀÚ´Â ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ¾ð¾î¸¦ ½±°Ô ¹Ù²Ü ¼ö ÀÖ´Ù.
¾Æ¸¶ °¡±î¿î ½ÃÀÏ ¾È¿¡´Â ¸Þ¼¼Áö ó¸® ÀÌ¿ÜÀÇ ·ÎÄÉÀÏ ±¸¼º¿ä¼Ò¸¦ »ç¿ëÇÒ ¼ö
¾øÀ» °ÍÀÌ´Ù. °¡Àå Çö´ëÀûÀÎ ½Ã½ºÅÛ ¸¶Àúµµ ÃÖ¼ÒÇÑ À§¿¡¼ ¸î °¡Áö
±¸¼º¿ä¼Ò¸¦ ºü¶ß¸° ä ·ÎÄÉÀÏÀ» Áö¿øÇÏ°í Àֱ⠶§¹®ÀÌ´Ù. ÇÑÆí GNU
libc
¿Í ¸®´ª½º¿¡¼ »õ·Ó°í ¿Ïº®ÇÑ ·ÎÄÉÀÏ ±â´ÉÀ» ±¸ÇöÇÏ¿©, ¾µ¸¸ÇÑ
·ÎÄÉÀÏ Áö¿øÀÌ ¾ø´Â ½Ã½ºÅÛ¿¡¼ »ç¿ëµÉ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¸Þ¼¼Áö ó¸® ÀÌ¿ÜÀÇ ·ÎÄÉÀÏ ¿ä¼ÒµéÀº ISO C Ç¥ÁØ°ú SUSV2 ½ºÆå¿¡ Ç¥ÁØȵǾî
ÀÖ´Ù. GNU libc
¿¡´Â ÀÌ ±â´ÉµéÀÌ ¿ÏÀüÈ÷ ±¸ÇöµÇ¾î ÀÖ´Ù. ÃÖ±ÙÀÇ
´ëºÎºÐÀÇ ½Ã½ºÅÛµéÀº °ÅÀÇ ¾µ¸¸ÇÒ Á¤µµ·Î ÀÌ ±â´ÉµéÀ» Áö¿øÇÏ°í ÀÖÀ¸¸ç
ÃÖ¼ÒÇÑ ÀÌ Áß ÀϺΰ¡ ºüÁ® ÀÖÀ» »ÓÀÌ´Ù.
`.po' ÆÄÀÏÀÇ PO´Â Portable Object¸¦ ¶æÇÏ°í, `.mo' ÆÄÀÏÀÇ MO´Â
Machine Object¸¦ ¶æÇÑ´Ù. PO ÆÄÀÏ Æ÷¸ËÀ» ºñ·ÔÇØ gettext
ÀÇ
Æз¯´ÙÀÓÀº À¯´ÏÆ÷·³¿¡¼ °³¹ßµÈ NLS Ç¥ÁØ¿¡¼ºÎÅÍ ¸¸µé¾î Á³°í, ½ã
¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî »ç°¡ ±×µéÀÇ ¼Ö¶ó¸®½º ½Ã½ºÅÛ¿¡ ±¸ÇöÇØ ³õ¾Ò´Ù.
PO ÆÄÀÏÀº »ç¶÷ÀÌ Á÷Á¢ Àаí ÆíÁýÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾î Á³°í, ÁÖ¾îÁø
ÆÐÅ°Áö¿¡¼ º¯¿ªÇÒ ¼ö ÀÖ´Â °¢ ¹®ÀÚ¿À» ¾î¶² ƯÁ¤ ¾ð¾îÀÇ ¹ø¿ª¹®°ú
´ëÀÀ½ÃÅ°´Â ¿ªÇÒÀ» ÇÑ´Ù. ÇÑ °³ÀÇ PO ÆÄÀÏÀº ÇÑ°³ÀÇ ¹ø¿ªÇÒ ¾ð¾î¿¡
»ç¿ëµÈ´Ù. ¸¸¾à ÇÑ °³ÀÇ ÆÐÅ°Áö°¡ ¿©·¯ °³ÀÇ ¾ð¾î¸¦ Áö¿øÇÒ °æ¿ì¿¡´Â,
Áö¿øÇÏ´Â °¢°¢ÀÇ ¾ð¾î¸¶´Ù ÇÑ °³¾¿ÀÇ PO ÆÄÀÏÀÌ ÀÖ°í, °¢ ÆÐÅ°Áö¸¶´Ù ±×
ÆÐÅ°Áö¸¦ À§ÇÑ PO ÆÄÀÏÀÌ µé¾î ÀÖ´Ù. ÀÌ PO ÆÄÀÏÀº xgettext
ÇÁ·Î±×·¥¿¡ ÀÇÇØ °¡Àå Àß ¸¸µé¾î Áö°í, ³ªÁß¿¡ msgmerge
ÇÁ·Î±×·¥¿¡
ÀÇÇØ °»½ÅµÈ´Ù. xgettext
ÇÁ·Î±×·¥Àº C ÆÄÀÏ¿¡¼ ¹ø¿ªÇÒ ¼ö ÀÖ´Ù°í
Ç¥½ÃµÈ ¸Þ¼¼Áö¸¦ ÃßÃâÇÏ¿© ½ÇÁ¦ ¹ø¿ª¹®À» ºñ¿öµÐä PO ÆÄÀÏÀ» ÃʱâÈÇÑ´Ù.
msgmerge
ÇÁ·Î±×·¥Àº ÇØ´ç ¼Ò½º°¡ ¸±¸®ÁîÇÏ´Â Áß°£Áß°£¸¶´Ù PO
ÆÄÀϵéÀ» ÀçÁ¶Á¤ÇÏ°í, ¾ø¾îÁø ¹®ÀÚ¿À» ÁÖ¼®Ã³¸®ÇÏ°í, »õ·Î¿î °ÍÀ»
ÃʱâÈÇÏ°í, ¸ðµç ¼Ò½ºÄÚµå ÁÙ¹øÈ£ ÂüÁ¶¸¦ ´Ù½Ã ¹Ù²Û´Ù. `.pot'·Î
³¡³ª´Â ÆÄÀÏÀº PO ÆÄÀÏ Çü½ÄÀ¸·Î µÈ ±âº»ÀûÀÎ ¹ø¿ª ÆÄÀÏÀÇ Æ²ÀÌ°í,
`.pox' ÆÄÀÏÀº Àӽ÷Π¸¸µé¾îÁø PO ÆÄÀÏÀÌ´Ù.
MO ÆÄÀÏÀº ÇÁ·Î±×·¥¿¡¼ ÀоîµéÀÌ´Â ÆÄÀÏÀÌ°í, ÀÚ¿¬È÷ ¹ÙÀ̳ʸ® ÆÄÀÏÀÌ´Ù. ¾î¶² ½Ã½ºÅÛÀº °íÀ¯¾î Áö¿ø ±â´ÉÀÇ ÀϺημ MO ÆÄÀÏÀ» ¸¸µé°í, ó¸®ÇÏ´Â µµ±¸¸¦ Á¦°øÇÑ´Ù. ÇÏÁö¸¸ ÀÌ MO ÆÄÀÏÀº ½Ã½ºÅÛ¸¶´Ù ´Ù¸£°í ´Ù¸¥ ½Ã½ºÅÛ¿¡¼´Â ¼·Î °øÀ¯ÇÒ ¼ö ¾ø´Ù.
ÀÌµé ½Ã½ºÅ۵鿡¼ Á¦°øµÇ´Â ÇÁ·Î±×·¥µéÀº GNU gettext
¿¡ ÀÖ´Â
±â´ÉµéÁß¿¡ Áö¿øµÇÁö ¾Ê´Â °ÍÀÌ ÀÖ´Ù. ±×·¯¹Ç·Î GNU gettext
´Â
µ¶ÀÚÀûÀÎ MO ÆÄÀÏ Çü½ÄÀ» ÀÌ¿ëÇÑ´Ù. `.gmo'·Î ³¡³ª´Â ÆÄÀÏÀº GNU
Çü½ÄÀ» ÀÌ¿ëÇÏ´Â MO ÆÄÀÏÀÌ´Ù.
gettext
ÀÇ °³¿ä
´ÙÀ½ ±×¸²Àº GNU gettext
°¡ ó¸®ÇÏ´Â ÆÄÀϵé°ú ±× ÆÄÀÏ¿¡ ÀÛ¿ëÇÏ´Â
µµ±¸µé »çÀÌÀÇ °ü°è¸¦ ¿ä¾àÇÑ °ÍÀÌ´Ù. ´ÙÀ½¿¡ Á¶±Ý ´õ ÀÚ¼¼ÇÑ ¼³¸íÀÌ
Ãß°¡µÇ´Âµ¥, °è¼Ó ÀÌ ±×¸²¿¡ ´«À» ¶¼Áö ¸»¾Æ¾ß ÇÑ´Ù. ÀÌ »óÈ£ °ü°è¸¦ Àß
ÀÌÇØÇÑ´Ù¸é ºÐ¸í ÇÁ·Î±×·¡¸Ó, ¹ø¿ªÀÚ, ±×¸®°í °ü¸®ÀÚ¿¡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
¿ø C ¼Ò½º ------------> PO mode ---> Ç¥½ÃµÈ C ¼Ò½º ------. | .---------<--- GNU gettext ¶óÀ̺귯¸® | .--- make <---+ | | `---------<--------------------+-----------' | | | .-----<--- PACKAGE.pot <--- xgettext <---' .---<--- PO ¿ä¾à¹® | | | ^ | | `---. | | `---. +---> PO ¸ðµå ---. | +----> msgmerge ------> LANG.pox --->--------' | | .---' | | | | | `-------------<---------------. | | +--- LANG.po <-- »õ·Î¿î LANG.pox <--' | .--- LANG.gmo <--- msgfmt <---' | | | `---> ¼³Ä¡ -----> /.../LANG/PACKAGE.mo ----. | +---> "¾È³çÇϼ¼¿ä, ¿©·¯ºÐ!" `-------> ¼³Ä¡ -----> /.../bin/ÇÁ·Î±×·¥ -------'
ÀÌ ±×¸²¿¡¼ `PO ¸ðµå'´Â µÎ ±ºµ¥¿¡ °ÉÃÄ ³ªÅ¸³ª´Âµ¥, °£´ÜÈ÷ »ç¿ëÇÏ°í ½ÍÀº ¿¡µðÅ͸¦ »ç¿ëÇØ "¼ÕÀ¸·Î ÆíÁý"ÇÏ´Â °ÍÀ̶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ÇÏÁö¸¸ ¿î ÁÁ°Ôµµ À̸ƽº »ç¿ëÀÚ¶ó¸é, PO ÆÄÀÏÀ» ÆíÁýÇÏ°í ¼öÁ¤ÇÏ´Â ¾Æ´ÁÇÑ È¯°æÀ» Á¦°øÇØ ÁÖ´Â PO ¸ðµå°¡ ÀÖ´Ù. PO ¸ðµå´Â PO ÆÄÀÏÀ» ÆíÁýÇÏ°í °íÄ¡´Â µ¥ È®½ÇÈ÷ Æí¸®ÇÑ È¯°æÀ» Á¦°øÇØ ÁØ´Ù. PO ÆÄÀÏÀ» ÆíÁýÇÏ´Â µ¿¾È, PO ¸ðµå´Â º¸Á¶ PO ÆÄÀÏ, ¿ä¾à PO ÆÄÀϵéÀ» ½±°Ô º¸¿©ÁÖ°í, PO ÆÄÀÏÀÌ ¸¸µé¾îÁø C ¼Ò½º ÆÄÀÏÀÇ À§Ä¡¸¦ µû¶ó°¥ ¼öµµ ÀÖ´Ù. Ư¼öÇÑ ±â´ÉµéÀ» ÀÌ¿ëÇϸé, ¹ø¿ªÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥ ¹®ÀÚ¿À» ´ëÈÀûÀ¸·Î Ç¥½ÃÇϱ⵵ ÇÏ°í, PO ÆÄÀÏÀÇ ¹®¹ýÀÌ Æ²·ÈÀ» ¶§ PO ÆÄÀÏÀÇ Æ²¸° ºÎºÐÀ¸·Î À̵¿ÇØ PO ÆÄÀÏÀÇ À߸øÀ» ½±°Ô ÀâÀ» ¼ö ÀÖ´Ù.
ÇÁ·Î±×·¡¸Ó·Î¼ ÆÐÅ°Áö¿¡ GNU gettext
¸¦ »ç¿ëÇϴ ù¹ø° ´Ü°è´Â
Á÷Á¢ C ¼Ò½º¿¡¼ ¹«¾ùÀÌ ¹ø¿ªµÉ ¼ö ÀÖ°í, ¹«¾ùÀÌ ¹ø¿ªµÉ ¼ö ¾ø´Â ¹®ÀÚ¿ÀÎÁö
È®ÀÎÇÏ´Â °ÍÀÌ´Ù. ÀÌ Áö·çÇÑ ÀÛ¾÷Àº À̸ƽº PO ¸ðµå¸¦ »ç¿ëÇÏ¿© Á»´õ ÆíÇÏ°Ô
ÇÒ ¼ö ÀÖÁö¸¸, C ¼Ò½º¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ¾î¶² ¹æ¹ýÀ̵çÁö »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÀÌ °£´ÜÇÑ ÀÛ¾÷ ÀÌ¿Ü¿¡, ¹ø¿ª ¶óÀ̺귯¸®¸¦ Á¦´ë·Î ÃʱâÈÇÏ·Á¸é ¸î °¡Áö
´õ º¯°æÇØ¾ß ÇÑ´Ù. ¿©±â¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸´Â See section ÇÁ·Î±×·¥ ¼Ò½º ÁغñÇϱâ.
¹°·Ð, »õ·Ó°Ô ¾²¿©Áö´Â ¼ÒÇÁÆ®¿þ¾îÀÇ °æ¿ì¿¡´Â ±× ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÛ¼ºÇÒ ¶§
Ç¥½Ã¸¦ ÇÑ´Ù. gettext
ÀÇ Á¢±Ù¹æ¹ý¶§¹®¿¡ ÀÌ ÀÛ¾÷Àº ¸Å¿ì ½±´Ù.
°£´ÜÈ÷ °¢ ÆÄÀÏÀÇ ½ÃÀÛ, ȤÀº Á᫐ Çì´õ ÆÄÀÏ¿¡ ´ÙÀ½ ÁÙÀ» ³Ö´Â´Ù:
#define _(String) (String) #define N_(String) (String) #define textdomain(Domain) #define bindtextdomain(Package, Directory)
ÀÌ·¸°Ô Çϸé, ±¹Á¦È¸¦ À§ÇÑ ¼Ò½ºÄڵ尡 ÁغñµÈ °ÍÀÌ´Ù. ³ªÁß¿¡
gettext
¶óÀ̺귯¸®¸¦ »ç¿ëÇÒ Áغñ°¡ µÇ¾úÀ¸¸é, ÀÌ Á¤ÀǸ¦ ´ÙÀ½À¸·Î
¹Ù²Ù¸é µÈ´Ù:
#include <libintl.h> #define _(String) gettext (String) #define gettext_noop(String) (String) #define N_(String) gettext_noop (String)
±×¸®°í `libintl.a' ȤÀº `libintl.so'¿Í ¸µÅ©ÇÑ´Ù. GNU
½Ã½ºÅÛ¿¡¼´Â GNU libc¾È¿¡ gettext
¶óÀ̺귯¸® ÇÔ¼öµéÀÌ Æ÷ÇԵǾî
Àֱ⠶§¹®¿¡ µû·Î libintl
°ú ¸µÅ©ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
ÀÏ´Ü C ¼Ò½º°¡ ¼öÁ¤µÇ¾úÀ¸¸é, xgettext
ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ ¹ø¿ª
°¡´ÉÇÑ ¹®ÀÚ¿µéÀ» ¸ðµÎ ã¾Æ¼ »Ì¾Æ³»°í, PO Ʋ(template) ÆÄÀÏÀ» ¸¸µç´Ù.
ÀÌ `package.pot' ÆÄÀÏÀº ¸ðµç ÇÁ·Î±×·¥ÀÇ ¹ø¿ª °¡´ÉÇÑ ¹®ÀÚ¿À»
´ã°í ÀÖ´Ù. ¿©±â¿¡´Â °¢ ¹®ÀÚ¿ÀÌ C ¼Ò½ºÀÇ ¾îµð¿¡¼ »ç¿ë´ÂÁö¿¡ ´ëÇÑ
Á¤º¸µµ µé¾î ÀÖ´Ù. ¸ðµç ¹ø¿ª¹®Àº ºñ¾îÁø ä·Î ³²¾Æ ÀÖ´Ù. `.pot'ÀÇ
¸¶Áö¸· ±ÛÀÚ t´Â ÀÌ ÆÄÀÏÀÌ ¾ÆÁ÷ ƯÁ¤ ¾ð¾î·Î ¹ø¿ªµÇÁö ¾ÊÀº
Ʋ(Template) PO ÆÄÀÏÀÓÀ» ³ªÅ¸³»´Â °ÍÀÌ´Ù. ¾î¶»°Ô xgettext
ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´ÂÁö¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â See section xgettext
ÇÁ·Î±×·¥ ½ÇÇàÇϱâ.
¸¸¾à Á¤¸»·Î °ÔÀ¸¸£´Ù¸é, Á¶±Ý ´õ ÆíÇÏ°Ô Àüü ¹èÆ÷º»À» ÁغñÇØ ³õ°í
½ÍÀ» °ÍÀÌ´Ù (see section °ü¸®ÀÚÀÇ °üÁ¡). ±×·¸°Ô Çϸé, make
°¡ ÀÚµ¿À¸·Î
ÆÄÀϵéÀ» ¸¸µé¾î ³¾ °ÍÀ̱⠶§¹®¿¡, ´õ ÀÌ»ó xgettext
¸í·ÉÀ»
ŸÀÌÇÁÇÏ´Â µ¥ ½Ã°£ ³¶ºñÇÏÁö ¾Ê¾Æµµ µÉ °ÍÀÌ´Ù.
óÀ½¿¡´Â `lang.po' ÆÄÀÏÀÌ ¾ÆÁ÷ ¾ø±â ¶§¹®¿¡, msgmerge
´Ü°è´Â Áö³ª°¡°í, ´ÜÁö `package.pot' ÆÄÀϸ¸À»
`lang.pox' ÆÄÀÏ·Î º¹»çÇÑ´Ù. ¿©±â¿¡¼ langÀº ¹ø¿ªÇÏ°íÀÚ
ÇÏ´Â ¾ð¾î¸¦ ³ªÅ¸³½´Ù.
±× ´ÙÀ½¿¡´Â ÃÖÃÊ·Î ¸Þ¼¼Áö ¹ø¿ªÀ» ÇÑ´Ù. ¾ÆÁ÷±îÁö ¹ø¿ªÀº Àΰ£¸¸ÀÌ ÇÒ ¼ö ÀÖ´Â ÀÏÀÌ°í, ¹ø¿ªÀÇ º¹À⼺Àº ÀÌ ¾È³»¼ÀÇ ¹üÀ§¸¦ ³Ñ¾î¼±´Ù. ÇÏÁö¸¸, ¸î °¡Áö ÈùÆ®°¡ ÀÌ ¾È³»¼ÀÇ µÚ¿¡ ÁÖ¾îÁ® ÀÖ´Ù (see section ¹ø¿ªÀÚÀÇ °üÁ¡). ±× °÷¿¡´Â ¾î¶»°Ô ¹ø¿ªÆÀ¿¡ ¿¬¶ôÇÏ°í, ¹ø¿ªÆÀÀÇ ÀϺΰ¡ µÇ¾î, °°Àº ¾ð¾î¸¦ »ç¿ëÇÏ´Â ¹ø¿ªÀÚµé°ú ¹ø¿ª ¹®Á¦¸¦ ÇÔ²² ³íÀÇÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾²¿© ÀÖ´Ù.
`lang.pox' ÆÄÀÏ¿¡ ¹ø¿ª ¸Þ¼¼Áö¸¦ Ãß°¡ÇÏ´Â °úÁ¤¿¡¼ À̸ƽº¿¡ Àͼ÷ÇÏÁö ¸øÇÏ´Ù¸é, ¹ø¿ª¹®ÀÌ PO ÆÄÀÏ Æ÷¸Ë¿¡ ¿ÏÀüÈ÷ µé¾î¸Â°í ÀοëºÎÈ£ ±ÔÄ¢À» µû¸£´ÂÁö¿¡ ´ëÇØ Á÷Á¢ È®ÀÎÇØ¾ß ÇÑ´Ù (see section PO ÆÄÀÏÀÇ Çü½Ä). ÀÌ·¸°Ô ÀÛ¾÷ÇÏ´Â ÀÏÀº ºÒ°¡´ÉÇÑ ÀÛ¾÷ÀÌ ¾Æ´Ï°í, ÀÌ¹Ì À¯´ÏÆ÷·³À̳ª ¼Ö¶ó¸®½º¿¡¼ PO ÆÄÀÏ ÀÛ¾÷À» ÇÒ ¶§ »ç¿ëÇØ ¿Ô´ø ¹æ¹ýÀÌ´Ù. ÇÑÆí, À̸ƽºÀÇ PO ¸ðµå¸¦ »ç¿ëÇϸé PO ÆÄÀÏ Æ÷¸ËÀÇ ´ëºÎºÐÀÇ ¼¼ºÎÀûÀÎ »çÇ×µéÀº PO ¸ðµå°¡ ¾Ë¾Æ¼ ½Å°æÀ» ½áÁØ´Ù. ÇÏÁö¸¸ PO ¸ðµå¸¦ ÀÌ¿ëÇÒ °æ¿ì¿¡´Â PO ¸ðµå¿¡ ´ëÇØ ¾î´ÀÁ¤µµ Àͼ÷ÇØÁú ÇÊ¿ä°¡ ÀÖ´Ù. PO ¸ðµåÀÇ ¸í·É ÀÌ¿Ü¿¡µµ (see section ÁÖ¿ä PO ¸ðµå ¸í·É), °¢ Ç׸ñ »çÀ̸¦ ¾î¶»°Ô À̵¿ÇÏ°í (see section Ç׸ñ À̵¿), ¾î¶»°Ô ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñÀ» ó¸®ÇÏ´ÂÁö (see section ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñ) ¾Ë¾Æ¾ß ÇÑ´Ù.
¸¸¾à ¿ä¾à¹® PO ÆÄÀÏ¿¡ ¸î °³ÀÇ °øÅëÀûÀÎ ¹ø¿ª¹®ÀÌ ÀÌ¹Ì ÀúÀåµÇ¾î ÀÖ´Ù¸é, ¹ø¿ªÀÚ´Â PO ¸ðµå¸¦ »ç¿ëÇØ ÀÌ ¿ä¾à¹® ÆÄÀÏ¿¡¼ ¹ø¿ªµÇÁö ¾ÊÀº ¸Þ¼¼ÁöµéÀ» ÃʱâÈ ÇÒ¼öµµ ÀÖ°í, ¹ø¿ª¹®À» ¼±ÅÃÇؼ ÀÌ ¿ä¾à¹® ÆÄÀÏ¿¡ ÀúÀåÇÒ ¼öµµ ÀÖ´Ù (see section ¹ø¿ª ¿ä¾à¹® »ç¿ëÇϱâ). ¿ä¾à¹® ÆÄÀÏÀº ÇÑ ¹ø¿ªÆÀÀÇ ¸â¹ö »çÀÌ¿¡¼ ±³È¯µÇ´Â ÆÄÀÏÀÌ´Ù.
ÇÁ·Î±×·¥, ȤÀº ¿©·¯ ÇÁ·Î±×·¥µéÀÇ ÆÐÅ°ÁöµéÀº ´ç¿¬È÷ À¯µ¿ÀûÀÌ´Ù: »ç¿ëÀÚ´Â ¹ö±×¸¦ º¸°íÇÏ°í °³¼±ÇÒ Á¡À» Á¦¾ÈÇϸç, °ü¸®ÀÚ´Â ¿©·¯ ¹æ¹ýÀ¸·Î ÇÁ·Î±×·¥À» ¼öÁ¤ÇØ ÀÌ¿¡ ¹ÝÀÀÇÑ´Ù. ÆÐÅ°Áö°¡ ÀÌ¹Ì ±¹Á¦ÈµÇ¾î ÀÖ´Ù´Â »ç½Ç¶§¹®¿¡ °ü¸®ÀÚ°¡ »õ·Î¿î ¹®ÀÚ¿À» Ãß°¡Çϰųª, ÀÌ¹Ì ¹ø¿ªµÈ ¹®ÀÚ¿À» ¼öÁ¤ÇÏ´Â ÀÏÀ» ÁÖÀúÇÒ ÇÊ¿ä°¡ ¾ø´Ù. °ü¸®ÀÚ´Â °ü¸®ÀÚ°¡ ÇÒ ¼ö ÀÖ´Â ÀÏ¿¡ ÃÖ¼±À» ´ÙÇÒ »ÓÀÌ´Ù. ¹ø¿ª ÇÁ·ÎÁ§Æ®°¡ ¿øÈ°È÷ µ¿ÀÛÇϱâ À§Çؼ °ü¸®ÀÚ´Â ¾È ±×·¡µµ ºÎ´ãÀÌ °¡´Â ¾î±ú¿¡ ¹ø¿ª ¹®Á¦±îÁö Áû¾îÁ®¼´Â ¾ÈµÇ¸ç, ¹ø¿ªÀÚ´Â °¡´ÉÇÑ ÇÑ ÇÁ·Î±×·¡¹Ö¿¡ °ü·ÃµÈ ¹®Á¦¿Í´Â ºÐ¸®µÈ »óÅ·Π³²¾Æ ÀÖ¾î¾ß ÇÑ´Ù.
°ü¸®ÀÚ°¡ ½Å°æÀ» ½á¾ß ÇÏ´Â ¿ÀÁ÷ ÇÑ °¡Áö´Â ¹ø¿ªÀÌ °¡´ÉÇÏ°í, ¹ø¿ª µÇ¾î¾ß
ÇÏ´Â °æ¿ì, ±× »õ·Î¿î ¹®ÀÚ¿À» ÁÖÀDZí°Ô Ç¥½ÃÇÏ´Â °ÍÀÌ´Ù. Àû´çÈ÷ ½Ã°£ÀÌ
Áö³ª¸é ¸Þ¼¼Áö°¡ ¹ø¿ªµÉ °ÍÀ̹ǷÎ, ±× ¸Þ¼¼Áö°¡ ¹ø¿ªµÉ Áö ¾Æ´ÒÁö¿¡ ´ëÇÑ
¹®Á¦´Â ½Å°æ¾²Áö ¾Ê´Â´Ù. °á°úÀûÀ¸·Î, °ü¸®ÀÚ°¡ ¹ø¿ª¹®Á¦¿¡ ½Å°æ ¾²Áö
¾Ê°í ±× ¸Þ¼¼ÁöµéÀ» ¼öÁ¤ÇÒ °æ¿ì¿¡, xgettext
´Â
`package.pot' ÆÄÀÏÀ» °è¼ÓÇؼ ¸¸µé¾î ³¾ °ÍÀÌ°í,
`lang.po' ÆÄÀÏÀ» ¸¸µå´Â ¹ø¿ªÀÚ´Â ¸Å¿ì õõÈ÷ µÚ¶³¾îÁú °ÍÀÌ´Ù.
¹ø¿ªÀÚ´Â (ȤÀº °ü¸®ÀÚ±îÁöµµ) ÆÐÅ°ÁöÀÇ ¹ø¿ªÀ̶ó´Â ÀÛ¾÷ÀÌ ÆÐÅ°Áö°¡ »ç¶óÁú ¶§±îÁö °è¼ÓµÇ´Â °úÁ¤ÀÓÀ» ÀÌÇØÇØ¾ß ÇÏ°í, ´Ü¹ø¿¡ ³¡³ª°Å³ª óÀ½¿¡ ¸ðµç °ÍÀ» ÇÒ ¼ö ÀÖ´Â ÀÛ¾÷ÀÌ ¾Æ´ÔÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ÁÖ¾îÁø ÆÐÅ°ÁöÀÇ ¹ø¿ªÀ» ½ÃÀÛÇßÀ¸¸é, °è¼ÓÇؼ ±× ÀÏÀ» ÇØ¾ß ÇÑ´Ù. ¿Ö³ÄÇÏ¸é °è¼ÓÇؼ ¹ø¿ªµÈ Ç׸ñÀÌ ¾ø¾îÁö±âµµ ÇÏ°í, ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñµéÀÌ ³ªÅ¸³ª±â ¶§¹®ÀÌ´Ù.
msgmerge
ÇÁ·Î±×·¥ÀÇ ¸ñÀûÀº ÇöÁ¸ÇÏ´Â `lang.po' ÆÄÀÏÀ»
xgettext
°¡ ÃÖ½ÅÀÇ C ¼Ò½º¿¡¼ »Ì¾Æ³½ `package.pot' Ʋ
ÆÄÀÏ°ú ºñ±³ÇÏ¿© °»½ÅÇÏ´Â ÀÏÀÌ´Ù. ÀÌ °»½Å ÀÛ¾÷¿¡¼ ¹®ÀÚ¿ÀÇ À§Ä¡´Â
ÇÁ·Î±×·¥ÀÌ ¹Ù²ð ¶§¸¶´Ù ´Þ¶óÁö¹Ç·Î, ÇØ´ç ¹®ÀÚ¿ÀÌ »ç¿ëµÈ C ¼Ò½º ÆÄÀÏÀÇ
À§Ä¡¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù. ¶Ç, msgmerge
´Â ´õÀÌ»ó ÇÁ·Î±×·¥ ¼Ò½º¿¡¼
»ç¿ëµÇÁö ¾Ê´Â ¹ø¿ªµÈ ¸Þ¼¼ÁöµéÀ» `lang.pox'¿¡¼ ÁÖ¼®Ã³¸®ÇÑ´Ù
(see section ¾ø¾îÁø Ç׸ñ). msgmerge
´Â ¸¶Áö¸·À¸·Î »õ·Î¿î ¹®ÀÚ¿À»
ã¾Æ¼ ÃÖÁ¾ PO ÆÄÀÏ¿¡ ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñÀ¸·Î Ãß°¡ÇÑ´Ù (see section ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñ). msgmerge
°¡ ½ÇÁ¦·Î ¹«¾ùÀ» ÇÏ´ÂÁö¿¡ °üÇÑ ´õ ¸¹Àº
Á¤º¸´Â See section msgmerge
ÇÁ·Î±×·¥ ½ÇÇàÇϱâ.
¾î¶² °æ·Î, ȤÀº ¹æ¹ýÀ» »ç¿ëÇϵçÁö, ÃÖÁ¾ ¸ñÇ¥´Â °»½ÅµÈ ¸ðµç ¹®ÀÚ¿¿¡ ´ëÇÑ ¹ø¿ª¹®À» Á¦°øÇÏ´Â `lang.pox' ÆÄÀÏÀ» ¸¸µé¾î ³»´Â °ÍÀÌ´Ù. ÀÌ ¸ñÇ¥°¡ ´Þ¼ºµÇ¾úÀ¸¸é, ÀÌ `lang.pox' ÆÄÀÏÀº ÀÌÀüÀÇ `lang.po' ÆÄÀÏ ´ë½Å¿¡ »ç¿ëµÉ ¼ö ÀÖ´Ù.
½Ã°£ÀûÀÎ ±âµ¿¼º, ȤÀº PO ÆÄÀÏÀÇ À¯µ¿¼ºÀº ¹ø¿ªÀ̶ó´Â °ÔÀÓ¿¡¼ ÇÑ °¡Áö Áß¿äÇÑ ºÎºÐÀ̸ç, ÀÌ Á¡À» Àß ÀÌÇØÇÏ°í ¹Þ¾Æµé¿©¾ß ÇÑ´Ù. ÀÌ Á¡À» °ÅºÎÇÏ´Â »ç¶÷µéÀº ¹ø¿ª ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â µ¥ ¾î·Á¿òÀ» °Þ°Å³ª, ´Ù¸¥ Âü¿©ÀÚ¿¡°Ô ¾î·Á¿òÀ» ÁÙ °ÍÀÌ´Ù! ƯÈ÷, °ü¸®ÀÚ´Â ¾È½ÉÇÏ°í »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç °ø½Ä PO ÆÄÀÏÀ», ¼³·É ±× ÆÄÀÏÀÌ ÃÖ±Ù¿¡ °»½ÅµÇÁö ¾Ê¾ÒÀ»Áö¶óµµ °ÅºÎÇϰųª ¹ø¿ªÀÚ¿¡°Ô ¹ø¿ªÀ» ³¡¸¶Ä¡¶ó´Â ¾Ð·ÂÀ» °¡ÇÏÁö ¸»°í, ¹èÆ÷º»¿¡ Æ÷ÇÔÇØ¾ß ÇÑ´Ù. ¾Ð·ÂÀº ±× ¾ð¾î¸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ ±×·ì¿¡¼ºÎÅÍ ³ª¿Ã °ÍÀÌ°í, °ü¸®ÀÚ´Â ¹ø¿ª¹®ÀÌ ÀûÀýÇÑÁö¿¡ ´ëÇØ´Â ¾È½ÉÇصµ µÈ´Ù. ÇÑÆí, ¹ø¿ªÀڴ åÀÓÁö°í ÀÖ´Â ÆÐÅ°Áö°¡ ¿¹ºñ Å×½ºÆ®ÁßÀ̰ųª, °ø½Ä ¹èÆ÷¸¦ ¾ÕµÎ°í ÀÖÀ» ¶§¿¡ ¶§¸ÂÃç PO ÆÄÀÏÀ» °»½ÅÇØ ³ª°¡¾ß ÇÑ´Ù.
ÀÏ´Ü PO ÆÄÀÏÀÌ ¿Ï¼ºµÇ°í ¹®Á¦°¡ ¾ø´Ù¸é, msgfmt
ÇÁ·Î±×·¥Àº PO
ÆÄÀÏÀ» ±â°è Á᫐ Æ÷¸ËÀ¸·Î º¯È¯ÇÏ°í, ÀÌ ±â°è Á᫐ ÆÄÀÏÀº ½ÇÇà½Ã¿¡ ÇÊ¿äÇÑ
¸¸Å È¿À²ÀûÀ¸·Î ¹ø¿ª¹®À» ã¾Æ³¾ ¼ö ÀÖ´Â Æ÷¸ËÀÌ´Ù (see section GNU MO ÆÄÀÏ Çü½Ä).
msgfmt
ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ¹æ¹ýÀº See section msgfmt
ÇÁ·Î±×·¥ ½ÇÇàÇϱâ.
¸¶Áö¸·À¸·Î, ¼öÁ¤µÇ°í Ç¥½ÃµÈ C ¼Ò½º´Â GNU gettext
¶óÀ̺귯¸®¿Í
¸µÅ©µÇ°í ÄÄÆÄÀϵǾî¾ß ÇÑ´Ù. ÀÌ ÀÛ¾÷Àº º¸Åë ±× ÇÁ·ÎÁ§Æ®ÀÇ
`Makefile'¿¡ ÁÖ¾îÁø ´ë·Î make
¸¦ ÅëÇØ ÇÏ°Ô µÇ¸ç, ÃÖÁ¾ ½ÇÇà
ÆÄÀÏÀº »ç¿ëÀÚ°¡ ãÀ» ¼ö ÀÖ´Â ¾îµò°¡¿¡ ¼³Ä¡µÈ´Ù. MO ÆÄÀÏ ÀÚüµµ Àû´çÇÑ
À§Ä¡¿¡ ¼³Ä¡µÇ¾î¾ß ÇÑ´Ù. ¾Ë¸ÂÀº ȯ°æ º¯¼ö°¡ »ç¿ëµÈ´Ù¸é (see section ÀÏ¹Ý »ç¿ëÀÚ¸¦ À§ÇÑ ¸¶¼ú), ÇÁ·Î±×·¥Àº ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ ÀÚµ¿À¸·Î Áö¿ªÈµÈ ä ½ÇÇàµÈ´Ù.
ÀÌ ¾È³»¼ÀÇ ³ª¸ÓÁö¿¡¼´Â À§¿¡¼ ´ëÃæ ¿ä¾àÇÑ °¢ ´Ü°è ÇϳªÇϳª¸¦ Á»´õ ±íÀÌ ¼³¸íÇÑ´Ù.
Go to the first, previous, next, last section, table of contents.