GETTEXT HowtoÀ̽ÂÀ±$Date $ Copyright © 2002 by Copyright ÀÌ ¹®¼´Â GNU Free Documentation License ¹öÀü 1.1 ȤÀº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´Ü¿¡¼ ¹ßÇàÇÑ ÀÌÈÄ ÆÇÀÇ ±ÔÁ¤¿¡ µû¸£¸ç ÀúÀ۱ǿ¡ ´ëÇÑ º» »çÇ×ÀÌ ¸í½ÃµÇ´Â ÇÑ ¾î¶°ÇÑ Á¤º¸ ¸Åü¿¡ ÀÇÇÑ º»¹®ÀÇ ÀüÀ糪 ¹ßÃéµµ ¹«»óÀ¸·Î Çã¿ëµË´Ï´Ù.
1. gettext ¼Ò°³»ç¿ëÀÚÀÇ locale ¿¡ µû¶ó ƯÁ¤ message output ¿¡ ´ëÇÑ ´Ù±¹¾î 󸮸¦ ÇÒ ¼ö ÀÖ´Â gettext ¿¡ ´ëÇØ »ìÆ캻´Ù. À̸¦ À§ÇØ ¸ÕÀú ¸Þ¼¼Áö°¡ ó¸®µÉ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹ýÀ» shell script, C code ¿¡¼ »ìÆ캸°í, ±× ÈÄ¿¡ º¯È¯µÉ ¸Þ¼¼Áö¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» »ìÆ캻´Ù. 2. shell script ¿¡¼ÀÇ gettext »ç¿ëshell ¿¡¼ÀÇ »ç¿ë¹ýÀ» »ìÆì º»´Ù. ¿¹Á¦ ÇÁ·Î±×·¥À¸·Î Hello ¶ó´Â shell script ¸¦ ÀÛ¼ºÇÑ´Ù. ´Ü¼øÈ÷ Hello ¿Í World! ¶ó°í Ãâ·ÂÇÏ°Ô µÇ¾î ÀÖ´Ù. À̸¦ locale ¿¡ µû¶ó Ãâ·ÂÇϱâ À§ÇØ gettext ·Î µÑ·¯½Î¼ echo ½ÃÅ°°í ÀÖ´Ù. shell script ¿¡¼ Ưº°È÷ ´Ù¸¥ ºÎºÐÀº ¼Ò½ºÃ¹ ºÎºÐ¿¡ TEXTDOMAINDIR °ú TEXTDOMAIN À» Àüü ȯ°æº¯¼ö·Î export ½ÃŲ´Ù´Â °ÍÀÌ´Ù.
3. C code ¿¡¼ÀÇ gettext »ç¿ëC code ¿¡¼ÀÇ »ç¿ë¹ýÀ» »ìÆ캻´Ù. ¿¹Á¦ ÇÁ·Î±×·¥À¸·Î Hello.c ¶ó´Â C code ¸¦ ÀÛ¼ºÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº Greeting, Hello, World ¶ó°í Ãâ·ÂÀ» Çϴµ¥ °¢°¢ÀÇ message µéÀ» gettext ¸¦ ÀÌ¿ëÇÏ¿© »ç¿ëÀÚ locale ¿¡ µû¶ó Ãâ·ÂÅä·Ï ÇÑ´Ù.
string À» gettext ·Î µÑ·¯½Î°Ô µÇ¸é µÑ·¯½ÎÀÎ message °¡ ÇØ´ç locale¿¡ ÇØ´çÇÏ´Â message table À» ÂüÁ¶ÇÏ¿© Ãâ·ÂÇÏ°Ô µÈ´Ù. ¿©±â¼ ÂüÁ¶ÇÒ message table À» ÇÁ·Î±×·¥¿¡ ¿¬°á½ÃÅ°±â À§Çؼ bindtextdomain À» »ç¿ëÇÏ¿´´Ù. À§ ¿¹Á¦¿¡¼´Â À§ Äڵ带 Hello ¶ó´Â À̸§À¸·Î ºôµåÇÏ°í, ÀÌÀÇ message table Àº /usr/local/share/locale ¾Æ·¡¿¡¼ textdomain ¿¡¼ ÁöÁ¤ÇÑ Hello ÇÁ·Î±×·¥ÀÇ message table À» ÂüÁ¶Çϵµ·Ï ÇÑ°ÍÀÌ´Ù. ¸¸¾à ÇØ´çÇÏ´Â message table ÀÌ ¾ø°Å³ª Á¤ÀÇµÈ °ªÀÌ ¾øÀ» °æ¿ì¿¡´Â º¯È¯ ¾øÀÌ ¿ø·¡ message°¡ Ãâ·ÂµÈ´Ù. 4. gettext message table ÀÛ¼º¹ýgettext ¸¦ ÅëÇØ º¯È¯µÉ message µéÀ» ´ã´Â message table À» ÀÛ¼ºÇÏ´Â ¿ä·ÉÀ» »ìÆ캻´Ù. gettext´Â Á¤ÇØÁø message ¸¦ ¹Ì¸® Á¤ÇØÁø message ·Î ¹Ù²Ù¾î ÁÖ´Â ¿ªÇÒÀ» ÇÒ »ÓÀÌ´Ù. µû¶ó¼ ¿øº» message ¿Í ÀÌ°ÍÀÌ ¾î¶² message ·Î º¯È¯µÉ Áö¸¦ ³ªÅ¸³»¾î ÁÖ´Â table ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌÀÇ ÃʾÈÀÌ µÇ´Â °ÍÀÌ *.po ¿¡ ÇØ´çÇÏ´Â ÆÄÀÏÀÌ´Ù. ÀÌ ÃʾÈÀ» Á÷Á¢ ÀÛ¼ºÇÒ ¼öµµ ÀÖÁö¸¸ xgettext ¶ó´Â ÇÁ·Î±×·¥ÀÌ ±× ÃʾÈÀ» ¸¸µé¾î ÁØ´Ù.
xgettext ¸¦ »ç¿ëÇÏ°í ³ª¸é messages.po ¶ó´Â ÆÄÀÏÀÌ »ý¼ºµÈ´Ù. ÀÌ´Â GNU version ÀÇ gettext ÀÎÁö ¾Æ´ÑÁö¿¡ µû¶ó ¾à°£ ´Ù¸£Áö¸¸ »À´ë´Â ºñ½ÁÇÏ´Ù. ÀÌ po ÆÄÀÏÀº º¸ÅëÀÇ text ÆÄÀÏÀÌ°í, msgid ¿Í msgstr ÀÇ Â¦À¸·Î ÀÌ·ç¾îÁ® ÀÖÀ¸¸ç, msgid °¡ À§ ¿¹Á¦ ÇÁ·Î±×·¥ ¼Ó¿¡¼ gettext ·Î µÑ·¯½ÎÀÎ message µéÀÌ´Ù. ±×¸®°í msgstr ÀÌ º¯È¯µÉ ¸Þ¼¼Áö¸¦ ´ã°Ô µÈ´Ù. xgettext ¸¦ ÇÏ°í ³ª¸é msgid µéÀÌ ¸ðµÎ ÃßÃâµÇ¸ç, »ç¿ëÀÚ´Â ´ÜÁö msgstr ºÎºÐÀÇ ºó°÷¸¸ ä¿öÁÖ¸é µÈ´Ù. ´ÙÀ½°ú °°ÀÌ Ã¤¿öº¸ÀÚ. ¾Õ ÀýÀÇ ÇÁ·Î±×·¥µé¿¡¼ Hello ¿Í World! ¸¦ gettext °¡ º¯È¯Çϱâ À§Çؼ´Â ¾Æ±î »ý¼ºµÈ po ÆÄÀÏÀÇ msgstrºÎºÐÀ» ¾Æ·¡Ã³·³ ¼öÁ¤ÇÏ¸é µÈ´Ù.
ÀÌÁ¦ ÀÌ·¸°Ô ÀÛ¼ºµÈ ÆÄÀÏÀ» msgfmt ¶ó´Â ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© gettext °¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ÆÄÀÏÀÎ moÆÄÀÏ·Î º¯È¯ÇÑ´Ù. ÀÌ moÆÄÀÏÀº binary Çü½ÄÀÇ ÆÄÀÏÀÌ´Ù.
Ãâ·Â ÆÄÀÏ À̸§À» Hello.mo ¶ó ÇÑ ÀÌÀ¯´Â »ý¼ºµÉ mo ÆÄÀÏÀÇ À̸§À» ÇÁ·Î±×·¥ÀÇ À̸§°ú °°ÀÌ Çϱâ À§ÇؼÀÌ´Ù. ÀÌÁ¦ À̸¦ /usr/local/share/locale/ko/LC_MESSAGE/ ¾Æ·¡¿¡ ³Ö¾î µÎ¸é µÈ´Ù. Çѱ¹¾î·Î locale ÀÌ ¼³Á¤µÇ¾î ÀÖ´Ù¸é ...locale/ko/ ¾Æ·¡¸¦ ÂüÁ¶ÇÏ°Ô µÈ´Ù. ¸¸¾à ÇÁ¶û½º¾î·Î message translation À» ÇÏ°íÀÚ ÇÒ °æ¿ì¿¡´Â ÇØ´ç .po ÆÄÀÏÀÇ msgstr À» ºÒ¾î·Î ÀÛ¼ºÇÑ´Ù. ±×¸®°í À̸¦ msgfmt ·Î Hello.mo ·Î ¸¸µç ÈÄ ¸¸µé¾îÁø mo ÆÄÀÏÀ» /usr/local/share/locale/fr/LC_MESSAGE/ ¾Æ·¡¿¡ ³Ö¾î µÎ¸é µÈ´Ù. ½Ã½ºÅÛ ·ÎÄÉÀÏ¿¡ µû¶ó ¿µ¾î, Çѱ¹¾î, ȤÀº ºÒ¾î message °¡ Ãâ·ÂµÈ´Ù. 5. Non GNU vs GNUGNU version ÀÇ gettext ÀÎÁö ¾Æ´ÑÁö¿¡ µû¶ó Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù°í ¾ð±ÞÇß´Ù. ½ÇÁ¦·Î´Â ÀÌ Â÷ÀÌ ¶§¹®¿¡ message º¯È¯ÀÌ ¾È µÇ±âµµ ÇÑ´Ù. ±× Â÷ÀÌÁ¡Àº messages.po ÆÄÀÏÀÇ format ¿¡ ÀÖ´Ù. non GNU version ÀÇ gettext ¸¦ »ç¿ëÇÏ°Ô µÉ ¶§¸é ¾Õ Àý¿¡¼ ÀÛ¼ºÇÑ °Íó·³ msgid, msgstr ÀÇ ½ÖÀ¸·Îµµ ÃæºÐÇÏ´Ù. ±×·¸Áö¸¸ GNU version ÀÇ gettext ¿¡¼´Â À§ ó·³ Çؼ´Â ¿øÇÏ´Â °á°ú¸¦ ¾òÀ» ¼ö ¾ø´Ù. xgettext ·Î ¸¸µé¾îÁø messages.po ¸¦ º¸ÀÚ non GNU messages.po
GNU messages.po
GNU messages.po ¿¡¼´Â »ç¿ëÀÚ°¡ ¼öÁ¤ÇØ ÁÖ¾î¾ß ÇÒ »çÇ×µéÀÌ ¸î °¡Áö ´õ ÀÖ´Ù. ±âº» Á¤º¸ ÀÌ¿Ü¿¡ CHARSET À» ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. Çѱ¹¾îÀÏ °æ¿ì´Â euc-KR ·Î ÁöÁ¤ÇØ ÁÖ¾î¾ß ¾ÈÀüÇÏ´Ù. GNU ÀÌ³Ä ¾Æ´Ï³Ä¿¡ µû¶ó ÀÛ¼º¹ýÀº ±×´ÙÁö ´Ù¸£Áö ¾Ê´Ù. Áß¿äÇÑ °ÍÀº ºôµå ¹æ¹ýÀÌ´Ù. GNU gettext ¸¦ »ç¿ëÇÑ´Ù¸é xgettext, msgfmt µµ GNU version À» »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. non GNU gettext ¸¦ »ç¿ëÇÑ´Ù¸é ¿ª½Ã xgettext, msgfmt µµ gettext ¿Í °°Àº °ÍÀ» »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ±×¸®°í C code ÀÏ °æ¿ì¿¡´Â ºôµåÇÒ ¶§ ¸µÅ©µÉ ¶óÀ̺귯¸®¸¦ Á÷Á¢ ¸í½ÃÇØ ÁÖ´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù. (GNU À϶§´Â GNU ¶óÀ̺귯¸®, non GNU ¶óÀ̺귯¸®ÀÏ ¶§´Â ÇØ´ç ¶óÀ̺귯¸®)
6. ½ÇÇà°á°úÀÌÁ¦ Hello ¶ó´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¶§ ½ÇÇàµÇ°í Àִ ȯ°æÀÇ locale¿¡ µû¶ó xgettext, msgfmt ¿¡ ÀÇÇØ ¸¸µé¾îÁø, Hello.mo ¸¦ ÂüÁ¶ÇÒ °ÍÀÎÁö ȤÀº ±×³É ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÏ°Ô µÈ´Ù. ¼³Á¤Çß´ø message °¡ Ãâ·ÂµÇ°Ô µÈ´Ù. C program ÀÇ ½ÇÇà ¿¹ÀÌ´Ù.
Greeting Àº message table ¿¡ Á¸ÀçÇÏÁö ¾ÊÀ¸¹Ç·Î ±×³É Greeting ÀÌ ÂïÈ÷°Ô µÈ´Ù. ³ª¸ÓÁö message µéÀº message table ¿¡ Á¤ÀÇµÈ msgstr °ªÀ» ÂüÁ¶ÇÏ¿© Ãâ·ÂÇÏ°í ÀÖ´Ù. 7. Miscellaneous
|