ÇÁ·Î±×·¡¸Ó¿Í ¹ø¿ªÀÚ´Â GNU gettext
ÀÇ µµ±¸¸¦ ÀÌ¿ëÇØ ¹ø¿ª ÆÄÀÏÀ»
¸¸µé°í, »õ·Î °íÄ¡°í, »ç¿ëÇÑ´Ù. ÀÌ ¹ø¿ª ÆÄÀÏÀº ÅؽºÆ® Çü½ÄÀÌ°í, Á÷Á¢
ÆíÁýÇÒ ¼ö ÀÖ´Â PO ÆÄÀÏÀÌ´Ù. ÀÌ Àå¿¡¼´Â PO ÆÄÀÏÀÇ Çü½Ä¿¡ ÃÐÁ¡À» ¸ÂÃß°í,
¶Ç PO ¸ðµåÀÇ ±âº»ÀûÀÎ »ç¿ë¹ýÀ» ´ã°í ÀÖ´Ù. PO ¸ðµå¿¡ ´ëÇÑ ¼³¸íÀº ÀÌ
¾È³»¼ÀÇ ÇÑ ±ºµ¥¿¡ ÁýÁߵǾî ÀÖÁö ¾Ê°í, ¾È³»¼ Àüü¿¡ Èð¾îÁ® ÀÖ´Ù.
¿©±â¼´Â PO ¸ðµåÀÇ ±âÃʸ¸À» ¾Ë·ÁÁØ´Ù.
gettext
ÀÇ ¿Ïº®ÇÑ ¼³Ä¡
ÀÏ´Ü GNU gettext
¹èÆ÷º»À» ¹Þ¾Æ¼, ¾ÐÃàÀ» Ç®°í,
./configure
ÇÏ°í ÄÄÆÄÀÏÇßÀ¸¸é, `make install' ¸í·ÉÀ»
½ÇÇàÇß´Ù¸é xgettext
, msgfmt
, gettext
, ±×¸®°í
msgmerge
°¡ Á¦ À§Ä¡¿¡ ¼³Ä¡µÇ¾úÀ» °ÍÀÌ°í, ±×¿¡ ÇØ´çÇÏ´Â ¸Þ¼¼Áöµµ
¼³Ä¡µÇ¾úÀ» °ÍÀÌ´Ù. º¸´Ù ¿ÏÀüÈ÷ ¼³Ä¡ÇÏ·Á¸é À̸ƽº »ç¿ëÀÚµéÀÌ PO
¸ðµå¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾î¾ß ÇÒ °ÍÀÌ´Ù.
PO ¸ðµå¸¦ ¼³Ä¡ÇÒ ¶§, `.emacs' ÆÄÀÏÀ» ´ÙÀ½°ú °°Àº ÁÙÀÌ Æ÷ÇԵǵµ·Ï ¼öÁ¤ÇØ¾ß ÇÑ´Ù.
(setq auto-mode-alist (cons '("\\.po[tx]?\\'\\|\\.po\\." . po-mode) auto-mode-alist)) (autoload 'po-mode "po-mode" "Major mode for translators to edit PO files" t)
³ªÁß¿¡, ¾ðÁ¦¶óµµ `.po', `.pot' ȤÀº `.pox' ÆÄÀÏÀ» ÆíÁýÇÏ°Ô µÇ°Å³ª, `.po.'À» ÆÄÀÏÀ̸§ Áß°£¿¡ °¡Áø ÆÄÀÏÀÌ ÀÖÀ» °æ¿ì¿¡, À̸ƽº´Â ÇÊ¿äÇÑ `po-mode.elc'(ȤÀº `po-mode.el') ÆÄÀÏÀ» Àоîµé¿©¼, ÀÚµ¿À¸·Î ÇØ´ç ¹öÆÛ¿¡ PO ¸ðµå ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸¸µç´Ù. PO ¸ðµåÀÇ ¹öÆÛÀÇ ¸ðµå ¶óÀÎ(mode line)¿¡´Â PO¶ó´Â ±ÛÀÚ°¡ ³ªÅ¸³´Ù. ÇÑ °³ÀÇ À̸ƽº ¼¼¼Ç¿¡¼ ¿©·¯°³ÀÇ PO ÆÄÀÏÀ» ÆíÁýÇÒ ¼öµµ ÀÖ´Ù.
¸¸¾à À̸ƽº ¹öÀü 20À̳ª ´õ ³ôÀº ¹öÀüÀ» »ç¿ëÇÏ¸é¼ ½Ã½ºÅÛ¿¡ Àû´çÇÑ ´Ù±¹¾î ±Û²ÃÀ» ¼³Ä¡Çß´Ù¸é, ¾ðÁ¦µçÁö PO ÆÄÀÏÀÇ ÄÚµù ½Ã½ºÅÛ(coding system)À» ã¾Æ³»µµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÏ¸é ´ëºÎºÐÀÇ °æ¿ì (¾ðÁ¦³ª´Â ±×·¸Áö´Â ¾Ê´Ù) ÇÊ¿äÇÑ ±Û²ÃÀ» ÀÚµ¿À¸·Î ÀÐ°í ¹ø¿ª¹®À» À̸ƽº ½ºÅ©¸°¿¡ Ç¥½ÃÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é, ´ÙÀ½°ú °°Àº ÁÙÀ» `.emacs' ÆÄÀÏ¿¡ ÷°¡ÇÑ´Ù:
(autoload 'po-find-file-coding-system "po-mode")
¸¸¾à¿¡ ±¹Á¦ ¹®ÀÚ°¡ ³ªÅ¸³ª¾ß ÇÒ À§Ä¡¿¡ »ç°¢Çü¸¸ º¸Àδٸé, ´Ù¸¥ ÆùÆ®ÁýÇÕÀ» ¼±ÅÃÇØ º¸±â ¹Ù¶õ´Ù (½¬ÇÁÆ®¿Í ù¹ø° ¸¶¿ì½º ¹öÆ°À» ´©¸¥´Ù).
PO ÆÄÀÏÀº ¸¹Àº Ç׸ñ(entry)µé·Î ±¸¼ºµÈ´Ù. °¢ Ç׸ñÀº ¹ø¿ªµÇÁö ¾ÊÀº ¿ø·¡ ¹®ÀÚ¿°ú ±×¿¡ ÇØ´çÇÏ´Â ¹ø¿ª¹®À» ´ëÀÀ½ÃŲ´Ù. º¸Åë ÇÑ °³ÀÇ PO ÆÄÀÏ¿¡ µé¾î ÀÖ´Â Ç׸ñµéÀº ¸ðµÎ ÇÑ °³ÀÇ ÇÁ·ÎÁ§Æ®¸¦ À§ÇÑ °ÍÀÌ°í, ±× ¾ÈÀÇ ¸ðµç ¹ø¿ª¹®Àº ÇϳªÀÇ ¾ð¾î¸¦ À§ÇÑ °ÍÀÌ´Ù. ÇϳªÀÇ PO ÆÄÀÏ Ç׸ñÀº ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÇ¾î ÀÖ´Ù:
°ø¹é # ¹ø¿ªÀÚ-ÁÖ¼®¹® #. ÀÚµ¿-ÁÖ¼®¹® #: ÂüÁ¶... #, Ç÷¡±×... msgid ¹ø¿ªµÇÁö-¾ÊÀº-¹®ÀÚ¿ msgstr ¹ø¿ªµÈ-¹®ÀÚ¿
¹ø¿ªÀÚ´Â PO ÆÄÀÏÀÇ ÀϹÝÀûÀÎ ±¸Á¶¸¦ Àß ÀÌÇØÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. PO ÆÄÀÏÀ» »ç¿ëÇÒ °æ¿ì¿¡´Â PO ¸ðµå°¡ ¸¹Àº ¿ªÇÒÀ» ÇØ ÁֹǷÎ, ¹ø¿ªÀÚ´Â ±× ÀÚ¼¼ÇÑ ÆÄÀÏ Çü½Ä¿¡ °üÇؼ´Â ¾Ë ÇÊ¿ä°¡ ¾ø´Ù.
Ç׸ñÀº °ø¹éÀ¸·Î ½ÃÀÛÇÑ´Ù. º¸Åë GNU gettext
µµ±¸·Î ¸¸µé¾îÁø
°æ¿ì¿¡, °¢ Ç׸ñ »çÀÌ¿¡´Â Á¤È®È÷ ÇÑ°³ÀÇ ºóÁÙÀÌ µé¾î°£´Ù. ±×¸®°í
#¿Í ºóÄÀ¸·Î ½ÃÀ۵Ǵ ÁÖ¼®¹®ÀÌ ÀÖ´Ù. µÎ°¡Áö Á¾·ùÀÇ ÁÖ¼®¹®ÀÌ ÀÖ´Ù:
# ´ÙÀ½¿¡ ºóÄÀÌ ¿À´Â ÁÖ¼®¹®Àº ÀüÀûÀ¸·Î ¹ø¿ªÀÚ°¡ ¸¸µé°í °ü¸®ÇÑ´Ù.
±×¸®°í ¶Ç ÇÑ °¡Áö´Â # ´ÙÀ½¿¡ ºóÄÀÌ ¾Æ´Ñ ¾î¶² ¹®ÀÚ°¡ ¿À´Â °æ¿ìÀε¥,
ÀÌ°ÍÀº ÀÚµ¿À¸·Î GNU gettext
µµ±¸¿¡ ÀÇÇØ ¸¸µé¾î Áø´Ù. ¾î¶²
ÁÖ¼®¹®ÀÌµç °£¿¡ ÁÖ¼®¹®Àº ¾ø¾îµµ »ó°ü ¾ø´Ù.
Ç׸ñ¿¡´Â °ø¹é°ú ÁÖ¼®¹® ´ÙÀ½¿¡ µÎ °³ÀÇ ¹®ÀÚ¿ÀÌ ÀÖ´Ù. ù¹ø°´Â ¿ø·¡
ÇÁ·Î±×·¥ ¼Ò½º¿¡ ³ªÅ¸³ª´Â ¹ø¿ªµÇÁö ¾ÊÀº ¹®ÀÚ¿ÀÌ°í, ´Ù¸¥ Çϳª´Â ±×
¹®ÀÚ¿ÀÇ ¹ø¿ª¹®ÀÌ´Ù. ¿ø·¡ ¹®ÀÚ¿Àº msgid
´ÙÀ½¿¡ ¿À°í, ¹ø¿ª¹®Àº
msgstr
´ÙÀ½¿¡ ¿Â´Ù. ÀÌ ¿ø·¡ ¹®ÀÚ¿°ú ¹ø¿ªµÈ ¹®ÀÚ¿Àº PO ÆÄÀÏ¿¡¼
" ±¸ºÐÀÚ¿Í \ À̽ºÄÉÀÌÇÁ¸¦ »ç¿ëÇØ ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î
¾²¿©ÁöÁö¸¸, PO ¸ðµå°¡ ÀÌ ¹®Á¦¸¦ ÇØ°áÇØ ÁÙ °ÍÀ̱⠶§¹®¿¡ ¹ø¿ªÀÚ´Â ÀÌ
Çü½Ä¿¡ ½Å°æ¾µ ÇÊ¿ä°¡ ¾ø´Ù.
msgid
´ÙÀ½¿¡ ¿À´Â ¹®ÀÚ¿Àº ÀÚµ¿ ÁÖ¼®¹®°ú ¸¶Âù°¡Áö·Î GNU
gettext
µµ±¸µé¿¡ ÀÇÇØ ¸¸µé¾îÁö°í °ü¸®µÈ´Ù. PO ¸ðµå¿¡¼´Â
¹ø¿ªÀÚ°¡ ÀÌ ¹®ÀÚ¿À» ¼öÁ¤ÇÒ ¼ö ¾ø´Ù. ÇÒ ¼ö ÀÖ´Â ÀÏÀº Àüü Ç׸ñÀ» Áö¿ì´Â
°Í »ÓÀÌ´Ù. ÇÑÆí, msgstr
´ÙÀ½¿¡¿À´Â ¹®ÀÚ¿Àº ¹ø¿ªÀÚ ÁÖ¼®¹®°ú
¸¶Âù°¡Áö·Î ¹ø¿ªÀÚ¸¦ À§ÇÑ °ÍÀÌ°í, PO ¸ðµå¿¡¼ ÀÌ ¹®ÀÚ¿À» ¹ø¿ªÇÒ ¶§
ÇÊ¿äÇÑ ¸ðµç °ÍÀ» Á¦°øÇØ ÁØ´Ù.
#,·Î ½ÃÀÛÇÏ´Â ÁÖ¼®¹®Àº Ư¼öÇÑ °æ¿ì·Î, ÁÖ¼®¹®´äÁö ¾Ê°Ô ÇÁ·Î±×·¥ÀÌ
¹«½ÃÇÏÁö ¾Ê´Â ÁÖ¼®¹®ÀÌ´Ù. ½°Ç¥·Î ±¸ºÐµÈ Ç÷¡±×µéÀº msgfmt
ÇÁ·Î±×·¥ÀÌ »ç¿ëÇؼ ¸Þ¼¼ÁöÀÇ »óŸ¦ º¸´Ù Àß ¾Ë·ÁÁÖ´Â µ¥ ¾²ÀδÙ.
ÇöÀç·Î´Â µÎ°¡Áö Ç÷¡±×°¡ Á¤ÀǵǾî ÀÖ´Ù:
msgmerge
ÇÁ·Î±×·¥ÀÌ ¸¸µé¾î ³»°í, ¹ø¿ªÀÚ ÀÚ½ÅÀÌ Á÷Á¢
½á ³ÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ°ÍÀº msgstr
ÀÌ (´õ ÀÌ»ó) ¿Ã¹Ù¸¥ ¹ø¿ªÀÌ
¾Æ´ÒÁöµµ ¸ð¸¥´Ù´Â ¶æÀÌ´Ù. ´õ ¼öÁ¤ÇØ¾ß ÇÏ´ÂÁö, ȤÀº ±×´ë·Î »ç¿ë°¡´ÉÇÑÁö
ÆÇ´ÜÇÒ ¼ö ÀÖ´Â °Ç ¹ø¿ªÀÚ»ÓÀÌ´Ù. ¹ø¿ªÀÌ ¸¸Á·½º·´´Ù¸é, ¹ø¿ªÀÚ´Â ÀÌ
fuzzy ¼Ó¼ºÀ» Áö¿î´Ù. ÆÛÁö ã±â¸¦ ÇÑ ÈÄ¿¡ msgmerge
ÇÁ·Î±×·¥Àº msgid
¿Í msgstr
À» ¿¬°ü½Ãų ¶§ ÀÌ ¼Ó¼ºÀ»
Ãß°¡ÇÑ´Ù. See section ÆÛÁö Ç׸ñ.
xgettext
ÇÁ·Î±×·¥¸¸ÀÌ ÀÌ
Ç÷¡±×¸¦ Ãß°¡ÇÑ´Ù. ³ªÁß¿¡ Á¦½ÃµÇ´Â ÀÚµ¿ÈµÈ PO ÆÄÀÏ Ã³¸® ½Ã½ºÅÛ¿¡¼
xgettext
ÇÁ·Î±×·¥ÀÌ »õ·Î¿î Ʋ ÆÄÀÏÀ» ¸¸µé ¶§¸¦ »©°í´Â
¼öÁ¤µÇ¾î¼´Â ¾È µÇ´Â Ç÷¡±×ÀÌ´Ù.
c-format Ç÷¡±×°¡ ÁÖ¾îÁø °æ¿ì msgfmt
Àº ÀÌ ¹ø¿ª¹®ÀÌ ¿Ã¹Ù¸¥Áö¿¡
´ëÇØ ´õ ÀÚ¼¼ÇÏ°Ô °Ë»çÇÑ´Ù. See section msgfmt
ÇÁ·Î±×·¥ ½ÇÇàÇϱâ.
Ç׸ñÀº ¿©·¯ °¡Áö Á¾·ù°¡ »ç¿ëµÇ´Âµ¥, ±× Áß¿¡´Â º¹¼öÇü°ú °ü·ÃµÇ¾î ÀÖ´Ù.
°ø¹é # ¹ø¿ªÀÚ-ÁÖ¼®¹® #. ÀÚµ¿-ÁÖ¼®¹® #: ÂüÁ¶... #, Ç÷¡±×... msgid ¹ø¿ªµÇÁö-¾ÊÀº-¹®ÀÚ¿-´Ü¼ö msgid_plural ¹ø¿ªµÇÁö-¾ÊÀº-¹®ÀÚ¿-º¹¼ö msgstr[0] ¹ø¿ªµÈ-¹®ÀÚ¿-ÄÉÀ̽º-1 ... msgstr[N] ¹ø¿ªµÈ-¹®ÀÚ¿-ÄÉÀ̽º-n
PO ÆÄÀÏÀÇ ¸¶Áö¸· Ç׸ñ ´ÙÀ½¿¡ °ø¹éÀ̳ª ÁÖ¼®¹® ¸î ÁÙÀÌ ´õ ¿Ã ¼öµµ ÀÖ´Ù. ÀÌ ÁÙÀº ¾î¶² Ç׸ñÀÇ ÀϺεµ ¾Æ´Ï°í, ÀÌ Áٵ鿡 ´ëÇؼ´Â ¾î¶² 󸮵µ ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. PO ¸ðµå ÇÔ¼öÀÎ M-x po-normalize¸¦ »ç¿ëÇØ, ¹ø¿ªÀÚ´Â ÀÌ·¸°Ô ÇÊ¿ä ¾ø´Â ÁÙµéÀ» Áö¿ï ¼ö ÀÖ´Ù. See section Ç׸ñÀÇ ¹®ÀÚ¿ Ç¥ÁØÈ.
ÀÌ ÀýÀÇ ³ª¸ÓÁö´Â PO ¸ðµå¸¦ »ç¿ëÇÏ´Â »ç¶÷ÀÇ °æ¿ì ±×³É Áö³ªÃĵµ µÇÁö¸¸, PO ÆÄÀÏÀÇ Á¤È®ÇÑ Çü½Ä¿¡ °üÇØ ¾Ë°í ½ÍÀº »ç¶÷µéÀº Àç¹ÌÀÖ°Ô ÀÐÀ» ¼ö ÀÖ´Ù. ÇÑÆí, À̸ƽº¿¡ Àͼ÷ÇÏÁö ¾ÊÀº »ç¶÷Àº °è¼ÓÇؼ ÁÖÀDZí°Ô Àоî¾ß ÇÑ´Ù.
°¢ ¹ø¿ªµÇÁö-¾ÊÀº-¹®ÀÚ¿°ú ¹ø¿ªµÈ-¹®ÀÚ¿Àº ¹®ÀÚ¿À» À§ÇÑ CÀÇ ¹®¹ýÀ» ±×´ë·Î µû¸¥´Ù. C ¹®¹ýÀÇ ¹®ÀÚ¿Àº µû¿ÈÇ¥·Î µÑ·¯½Î¿©Á® ÀÖ°í, ¹é½½·¡½¬·Î ½ÃÀÛÇÏ´Â À̽ºÄÉÀÌÇÁ ½ÃÄö½º°¡ ÀÖÀ» ¼ö ÀÖ´Ù. ´Ü, ¿©·¯ÁÙÀÇ ¹®ÀÚ¿À» ½á¾ß ÇÒ¶§, À̽ºÄÉÀÌÇÁ ´ÙÀ½¿¡ ÁÙÀ» ¹Ù²Ù¾î ¾²Áö ¾Ê´Â´Ù. ±× ´ë½Å¿¡ µû¿ÈÇ¥¸¦ ´ÝÀº ´ÙÀ½, ´ÙÀ½ ÁÙ¿¡ µû¿ÈÇ¥¸¦ ¿¾î¼ ¹®ÀÚ¿À» °è¼Ó ½á ³ª°£´Ù. ¿¹¸¦ µé¾î:
msgid "" "Here is an example of how one might continue a very long string\n" "for the common case the string represents multi-line output.\n"
ÀÌ ¿¹¿¡¼, ´Ü¾î `Here'ÀÇ H°¡ ´Ü¾î `for'ÀÇ f ¹Ù·Î
À§¿¡ ¿Àµµ·Ï Á¤·ÄÇϱâ À§ÇØ Ã¹Â° ÁÙ¿¡ ºó ¹®ÀÚ¿ÀÌ »ç¿ëµÇ¾ú´Ù. ÀÌ ¿¹¿¡¼,
msgid
Å°¿öµå ´ÙÀ½¿¡´Â ¼¼ °³ÀÇ ¹®ÀÚ¿ÀÌ ¿Â´Ù. ±× ¼¼ °³ÀÇ ¹®ÀÚ¿Àº
¿¬¼ÓµÈ ÇÑ °³ÀÇ ¹®ÀÚ¿·Î Ãë±ÞµÈ´Ù. ºó ¹®ÀÚ¿À» ¿¬°áÇصµ ÃÖÁ¾ ¹®ÀÚ¿¿¡´Â
º¯È°¡ ¾øÀ¸³ª, msgid
´ÙÀ½¿¡ °°Àº ÁÙ¿¡ ¹®ÀÚ¿ÀÌ ¿À°Ô Çϸé¼,
¿©·¯ÁÙÀÇ ¹®ÀÚ¿À» ¿ÞÂÊ¿¡ Á¤·ÄµÇµµ·Ï Çϱâ À§ÇØ ¿ì¸®°¡ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ°í,
¿ì¸®´Â ÀÌ·¸°Ô ¹èÄ¡ÇÏ´Â ÆíÀÌ ´õ º¸±â ÁÁ´Ù°í »ý°¢ÇÑ´Ù. ºó ¹®ÀÚ¿Àº ºüÁú
¼ö ÀÖÁö¸¸, `Here'·Î ½ÃÀÛÇÏ´Â ¹®ÀÚ¿Àº ù¹ø° ÁÙ¿¡ msgid
¹Ù·Î
´ÙÀ½¿¡ ¿Í¾ß ÇÑ´Ù.(2) ÇÏÁö¸¸, ÁٹٲÞ
`\n' ´ÙÀ½¿¡ ¹Ù·Î µû¿ÈÇ¥¸¦ ¹¾î¼ ´ÙÀ½ ¹®ÀÚ¿À» ½ÃÀÛÇÒ ÇÊ¿äµµ ¾ø°í,
¾î¶² ¹®ÀÚ ´ÙÀ½¿¡¼µµ ´ÙÀ½ ¹®ÀÚ¿À» ½ÃÀÛÇÒ ¼ö ÀÖ´Ù. ¿ì¸®´Â ´õ
±ú²ýÇØ º¸À̱⠶§¹®¿¡ À§¿Í °°ÀÌ »ç¿ëÇßÀ» »ÓÀÌ´Ù.
¿©·¯ ÁÙÀÌ ÀÖÀ» ¶§ ¹Ýµå½Ã µû¿ÈÇ¥ ¾È¿¡ `\n'À¸·Î Ç¥½ÃÇØ¾ß ÇÑ´Ù. `\n'Àº ±× ¹®ÀÚ¿ÀÇ ÀϺÎÀÌ°í, ±× ´ÙÀ½¿¡ µû¿ÈÇ¥ ¹Ù±ù¿¡ ¿À´Â ÁٹٲÞÀº PO ÆÄÀÏÀÇ ÀϺηΠ±× ¹®ÀÚ¿°ú´Â ¾Æ¹« °ü°è°¡ ¾ø´Ù.
¹®ÀÚ¿ÀÇ ¹Û¿¡¼ ºóÁÙ°ú ÁÖ¼®Àº ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÁÖ¼®Àº
`#'·Î ½ÃÀÛÇÏ°í ÁÖ¼®Àº ±× ÁÙ ³¡±îÁö À̾îÁø´Ù. ¹ø¿ªÀÚ°¡ ¾´ ÁÖ¼®Àº
óÀ½¿¡ `#'¸¦ ¾²°í ¹Ù·Î ´ÙÀ½¿¡ ºó ÄÀÌ ¿Í¾ß ÇÑ´Ù. ¸¸¾à `#'
´ÙÀ½¿¡ ºóÄÀÌ ¿ÀÁö ¾ÊÀ¸¸é, ±× ÁÖ¼®Àº GNU µµ±¸¿¡ ÀÇÇØ ¸¸µé¾îÁö°í,
󸮵Ǵ °ÍÀ¸·Î Ãë±ÞµÈ´Ù. ±×¸®°í ±×·¯ÇÑ ÁÖ¼®¹®Àº PO ÆÄÀÏÀÌ
msgmerge
·Î ó¸®µÉ ¶§ »ç¶óÁö°Å³ª ´Ù¸¥ ¾î¶² °ÍÀ¸·Î ¹Ù²ð °ÍÀÌ´Ù.
section GNU gettext
ÀÇ ¿Ïº®ÇÑ ¼³Ä¡¿¡ ¾²¿©Áø ¹Ù¿Í °°ÀÌ À̸ƽº¸¦ ¼¼ÆÃÇϸé, À̸ƽº°¡ PO
ÆÄÀÏÀ» ¿¶§ PO ¸ðµå°¡ ÀÛµ¿ÇÏ°Ô µÈ´Ù. PO ¸ðµå´Â ±× À©µµ¿ì¸¦ Àбâ
Àü¿ëÀ¸·Î ¸¸µé°í, po-mode-mapÀ» ¸¸µç´Ù. po-mode-mapÀº ÇϳªÀÇ À̸ƽº
¸ðµåÀÌ°í, ÅؽºÆ® ¸ðµå¿¡¼ ³ª¿Â °ÍÀÌ ÀüÇô ¾Æ´Ï´Ù. ¸¸¾à
po-mode-hook
¿¡ ¾î¶² ÇÔ¼ö°¡ ÀÖ´Ù¸é ±× ÇÔ¼öµéÀÌ ½ÇÇàµÉ °ÍÀÌ´Ù.
PO ¸ðµå°¡ ¾î¶² À©µµ¿ì¿¡¼ ÀÛµ¿Çϸé, `PO'¶ó´Â ±ÛÀÚ°¡ ±× À©µµ¿ìÀÇ ¸ðµå ¶óÀο¡ ³ªÅ¸³´Ù. ¸ðµå ¶óÀÎÀº °¢ Ç׸ñÀ» ºÐ·ùÇØ ±× °¹¼ö°¡ ¾ó¸¶³ª µÇ´ÂÁö¸¦ Ç¥½ÃÇϱ⵵ ÇÑ´Ù. ¿¹¸¦ µé¾î, `132t+3f+10u+2o'´Â PO ¸ðµå¿¡ 132°³ÀÇ ¹ø¿ªµÈ Ç׸ñ(see section ¹ø¿ªµÈ Ç׸ñ, 3°³ÀÇ ÆÛÁö Ç׸ñ (see section ÆÛÁö Ç׸ñ), 10°³ÀÇ ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñ(see section ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñ), ±×¸®°í 2°³ÀÇ ¾ø¾îÁø Ç׸ñ(see section ¾ø¾îÁø Ç׸ñ)ÀÌ µé¾î ÀÖ´Ù´Â ¶æÀÌ´Ù. °¹¼ö°¡ 0ÀÎ Ç׸ñÀº Ç¥½ÃÇÏÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î, ÀÌ ¿¹¿¡¼ ¸ðµç ÆÛÁö Ç׸ñÀÇ ÆÛÁö°¡ Ãë¼ÒµÇ°í ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñÀÌ ¹ø¿ªµÈ´Ù¸é, ÃÖÁ¾ÀûÀ¸·Î ÀÌ ¸ðµå ¶óÀÎÀº `145t'¸¦ Ç¥½ÃÇÒ °ÍÀÌ´Ù.
ÁÖ¿ä PO ¸í·É¾î´Â µÞºÎºÐ¿¡ ³ª¿Ã ¶Ç ´Ù¸¥ Á¾·ùÀÇ ¸í·É¾îµé°ú´Â ´Ù¸£´Ù. ÀÌ ¸í·É¾îµéÀº PO ¸ðµå¸¦ Á¾·áÇϰųª, À©µµ¿ì¸¦ Ưº°È÷ Á¶ÀÛÇÏ´Â µ¥ ¾²ÀδÙ.
U (po-undo
) ¸í·ÉÀº À̸ƽºÀÇ ½ÇÇà
Ãë¼Ò(undo) ±â´ÉÀÇ ÀÎÅÍÆäÀ̽ºÀÌ´Ù. See section `Undoing Changes' in The Emacs Editor. U°¡ ŸÀÌÇÁÇÒ ¶§¸¶´Ù, ¹ø¿ªÀÚ°¡
PO ÆÄÀÏ¿¡ °¡ÇÑ ¼öÁ¤»çÇ×À» °è¼ÓÇؼ Ãë¼ÒÇÒ ¼ö ÀÖ´Ù. ½ÇÇà Ãë¼Ò¸¦ À§ÇØ, °¢
PO ¸ðµå ¸í·ÉÀº ÀÚµ¿ÀûÀ¸·Î ¸¸µé¾îÁ³´Ù. ÀÌ´Â RET ¸í·É¿¡ ƯÈ÷
±×·¯ÇÏ´Ù: ÀÌ ¸í·ÉÀ» Çѹø »ç¿ëÇßÀ» ¶§ ¼öÁ¤µÇ´Â »çÇ×Àº, ºñ·Ï ÆíÁý°úÁ¤¿¡¼
¿©·¯¹øÀÇ ¸í·ÉÀÌ ÀÖ¾úÀ» Áö ¸ð¸£Áö¸¸, ´Ü¹ø¿¡ ½ÇÇà Ãë¼ÒµÈ´Ù. ÆíÁý À©µµ¿ì¿¡
ÀÖÀ» ¶§, ±× ÆíÁýÀÛ¾÷¿¡ ´ëÇØ ½ÇÇà Ãë¼Ò¸¦ ÇÏ´Â ÀÏÀº µå¹® °Ô º¸ÅëÀÌ´Ù.
Q (po-quit
) ¸í·É°ú q (po-confirm-and-quit
)
¸í·ÉÀº ÇØ´ç PO ÆÄÀÏ¿¡ ´ëÇÑ ÀÛ¾÷ÀÌ ³¡³µÀ» ¶§ »ç¿ëÇÑ´Ù. ÀüÀÚÀÇ ¸í·É¾î°¡
ÈÄÀÚÀÇ ¸í·É¾îº¸´Ù ¸í·É¾î°¡ ´õ °£´ÜÇÏ´Ù. ÆÄÀÏÀÌ ¼öÁ¤µÇ¾úÀ» °æ¿ì¿¡, ¸ÕÀú
µð½ºÅ©¿¡ ÀúÀåÇÑ´Ù. ÀÌ ¸í·ÉµéÀº µÎ °æ¿ì ¸ðµÎ, ¸Ç ¸ÕÀú PO ÆÄÀÏ¿¡ ¹ø¿ªµÇÁö
¾ÊÀº ¸Þ¼¼Áö°¡ ³²¾ÆÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ¸¸¾à ³²¾Æ ÀÖ´Ù¸é, ¹ø¿ªÀÚ´Â ÁøÂ¥·Î ÀÌ
PO ÆÄÀÏ¿¡ ´ëÇÑ ÀÛ¾÷À» ³¡³¾ °ÍÀÎÁö Áú¹®À» ¹Þ°Ô µÈ´Ù. ÀÌ ¸í·ÉÀº À̸ƽº PO
ÆÄÀÏ ¹öÆÛ¸¦ ¾ø¾Ö´Â ´õ ÁÁÀº ¹æ¹ýÀÌ´Ù. ¹öÆÛ¸¦ ¾ø¾Ö´Â º¸Åë À̸ƽº ¸í·É¾î
C-x k (kill-buffer
)´Â ±×¸® ±ò²ûÇÑ ¹æ¹ýÀÌ ¾Æ´Ï´Ù.
O (po-other-window
) ¸í·ÉÀº ºÎµå·´°Ô Àá½Ã PO ¸ðµå¸¦ ¶°³ª´Â
¶Ç ÇÑ °¡Áö ¹æ¹ýÀÌ´Ù. ÀÌ ¸í·ÉÀº Ä¿¼¸¦ ´Ù¸¥ À̸ƽº À©µµ¿ì·Î ¿Å°ÜÁÖ´Â °Í
»ÓÀÌ°í, ÇÊ¿äÇÒ ¶§ ³ªÅ¸³´Ù. ¿¹¸¦ µé¾î, ¹ø¿ªÀÚ°¡ PO ¸ðµå¸¦ º¸°í, ¶Ç ´Ù¸¥
°÷¿¡ ÀÖ´Â ¼Ò½º ³»¿ëÀ» º¸·Á°í ÇÒ¶§, ¹ø¿ªÀÚ´Â ÇÁ·Î±×·¥ ¼Ò½º¿¡¼ °íÃÄ¾ß ÇÒ
ºÐ¸íÇÑ ¹ö±×¸¦ ¹ß°ßÇÒ ¼öµµ ÀÖ´Ù. ÀÌ ¸í·ÉÀ¸·Î ¹ø¿ªÀÚ´Â ¼ºº°À» ¹Ù²ã¼
(¿ªÀÚÁÖ---¿ø¹®¿¡¼´Â ¾Õ¿¡¼ ÆíÀÇ»ó ¹ø¿ªÀÚ¸¦ she, ÇÁ·Î±×·¡¸Ó¸¦ he·Î
Ç¥ÇöÇϱâ·Î Á¤Çß´Ù´Â °ÍÀ» »ó±âÇÏÀÚ) ÇÁ·Î±×·¡¸Ó°¡ µÈ´ÙÀ½, ¼öÁ¤ÇÏ°í ½ÍÀº
ÇÁ·Î±×·¥ÀÌ µé¾î ÀÖ´Â À©µµ¿ì¿¡ Ä¿¼¸¦ °¡Á®°¥ °ÍÀÌ´Ù. Ä¿¼¸¦ PO ÆÄÀÏ
À©µµ¿ìÀÇ ¹Ù±ù¿¡ °¡Á®°£ ÈÄ¿¡ À̸ƽº¿¡°Ô ´Ù½Ã PO ÆÄÀÏÀ» ÆíÁýÇϵµ·Ï Çϸé,
PO ÆÄÀÏÀÌ ´Ù½Ã µ¹¾Æ¿Ã °ÍÀÌ´Ù.
h (po-help
) ¸í·ÉÀº ¸ðµç °¡´ÉÇÑ PO ¸ðµå ¸í·É¾î¸¦ ¿ä¾àÇؼ
º¸¿©ÁØ´Ù. ¹ø¿ªÀÚ´Â PO ¸ðµå µ¿ÀÛÀ» Àç°³ÇÏ´Â ¶Ç ´Ù¸¥ ¸í·É¾î¸¦ ŸÀÌÇÁÇؾß
ÇÑ´Ù. ? ¸í·É¾î´Â h¿Í µ¿ÀÏÇÏ´Ù.
= (po-statistics
) ¸í·É¾î´Â PO ÆÄÀÏ Ç׸ñÀÇ Àüü ¼ö¸¦
°è»êÇÏ°í, ÇöÀç Ç׸ñÀÇ À§Ä¡ (1ºÎÅÍ ¼¾´Ù), ¹ø¿ªµÇÁö ¾ÊÀº Ç׸ñ ¼ö, ¾ø¾îÁø
Ç׸ñ ¼ö¸¦ °è»êÇÏ°í, ÀÌ ¼ö¸¦ Ç¥½ÃÇÑ´Ù.
V (po-validate
) ¸í·ÉÀº ÇöÀç PO ÆÄÀÏ¿¡ ´ëÇØ msgfmt
À»
`--statistics' ¿É¼ÇÀ» ºÙ¿© ½ÇÇàÇÑ´Ù. ÀÌ ¸í·ÉÀº óÀ½¿¡ PO ÆÄÀÏÀ»
µð½ºÅ©¿¡ ÀúÀåÇÒ Áö ¹°¾î º»´Ù. GNU gettext
¿¡ µé¾î ÀÖ´Â
msgfmt
µµ±¸´Â PO ÆÄÀÏ¿¡¼ MO ÆÄÀÏÀ» ¸¸µå´Â ÀÏÀ» ÇÏ°í, PO ¸ðµå´Â
PO ÆÄÀÏÀÇ °¢ Ç׸ñ»Ó¸¸ ¾Æ´Ï¶ó PO ÆÄÀÏÀÇ Àüü Çü½Ä±îÁö °Ë»çÇÒ °ÍÀÌ´Ù.
msgfmt
ÇÁ·Î±×·¥Àº À̸ƽº ³»¿¡¼ ºñµ¿±âÀûÀ¸·Î µ¿ÀÛÇϹǷÎ, ¹ø¿ªÀÚ´Â
PO ÆÄÀÏÀÌ °Ë»çµÇ´Â µ¿¾È¿¡µµ Áï½Ã·Î ¹ø¿ªÀÚ´Â PO ÆÄÀÏÀ» ÆíÁýÇÒ ¼ö ÀÖ´Ù.
¿À·ù Ãâ·ÂÀº À̸ƽºÀÇ `*compilation*' ¹öÆÛ¿¡ ¸ð¾ÆÁö°í, ¶Ç´Ù¸¥
À©µµ¿ì·Î Ç¥½ÃµÈ´Ù. À̸ƽºÀÇ C-x ` (next-error
¸í·É¾î¿Í
±× ¿ÜÀÇ º¸Åë ÄÄÆÄÀÏ °ü·Ã ¸í·É¾îµéÀ» ÀÌ¿ëÇØ, ¹ø¿ªÀÚ´Â ºü¸£°Ô PO ÆÄÀÏÀÇ
À߸øµÈ À§Ä¡·Î Ä¿¼¸¦ À̵¿ÇÒ ¼ö ÀÖ´Ù. ÀÏ´Ü Ä¿¼°¡ ¿À·ùÀÇ ÇØ´ç À§Ä¡ À§¿¡
ÀÖÀ¸¸é, ¹ø¿ªÀÚ´Â ¿À·ù¸¦ ¼öÁ¤ÇÒ Áö °áÁ¤ÇÏ°Ô µÈ´Ù.
PO ÆÄÀÏ À©µµ¿ìÀÇ Ä¿¼´Â ¾ðÁ¦³ª ¾î¶² ÇÑ Ç׸ñ À§¿¡ ÀÖ´Ù. ¿¹¿Ü´Â Ä¿¼°¡ ÆÄÀÏÀÇ ¸¶Áö¸· Ç׸ñ µÚ¿¡ Àְųª, PO ÆÄÀÏ¿¡ ¾Æ¹«°Íµµ ¾øÀ» °æ¿ìÀÌ´Ù. Ä¿¼°¡ ³õ¿© ÀÖ´Â Ç׸ñÀ» ÇöÀç Ç׸ñ¶ó°í ºÎ¸¥´Ù. ¸¹Àº PO ¸ðµå ¸í·ÉÀº ÇöÀç Ç׸ñ¿¡ ´ëÇØ ÀÛ¿ëÇϹǷÎ, Ä¿¼¸¦ À̵¿½ÃÅ°´Â °ÍÀº ´ÜÁö PO ÆÄÀÏÀ» º¸´Â °Í ÀÌ»óÀÇ È¿°ú°¡ ÀÖ´Ù. Ä¿¼ À̵¿Àº Ç׸ñ¿¡ °ü·ÃµÈ ¸í·ÉÀ» ¾î¶² Ç׸ñ¿¡ °¡ÇÒ °ÍÀÎÁö ¼±ÅÃÇÏ´Â ÀÏÀÌ´Ù.
¸î¸î PO ¸ðµå ¸í·ÉÀº Ư¼öÇÑ ¹æ¹ýÀ¸·Î Ä¿¼ÀÇ À§Ä¡¸¦ À̵¿½ÃŲ´Ù. ÀÌ Æ¯º°ÇÑ À̵¿ ¸í·É¾îµé Áß ÀϺδ ´ÙÀ½¿¡ ¼³¸íµÇ¾î ÀÖ°í, ³ª¸ÓÁö´Â ´ÙÀ½ Àý¿¡ ¼³¸íµÈ´Ù.
¹®ÀÚ ´ÜÀ§ À̵¿, ÁÙ ´ÜÀ§ À̵¿, ¹®´Ü ´ÜÀ§ À̵¿, ȸéÀ̳ª ÆäÀÌÁö ´ÜÀ§ À̵¿,
ã±â ¸í·Éó·³ Ä¿¼¸¦ À̵¿Çϴµ¥ ¾²ÀÌ´Â ¸ðµç À̸ƽº ¸í·É¾î´Â PO ¸ðµåÀÇ
ÇöÀç Ç׸ñÀ» °í¸£´Â µ¥ ¾²ÀÏ ¼ö ÀÖ´Ù. ±×·¯³ª, PO ¸ðµå¿¡¼ ÇöÀç Ç׸ñÀ»
Ç¥½ÃÇÏ´Â ¶Ç ´Ù¸¥ Ç¥ÁØÀûÀÎ ¹æ¹ýÀÌ ÀÖ°í, Ä¿¼¸¦ À̵¿ÇÏ´Â º¸Åë À̸ƽº
¸í·É¾îµé¿¡¼´Â ÀÌ·± Á¦ÇÑÀÌ ¾ø´Ù. . (po-current-entry
)
¸í·ÉÀÇ À¯ÀÏÇÑ ¸ñÀûÀº ÇöÀç Ç׸ñÀ» ´Ù½Ã Ç¥½ÃÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¸í·É¾î´Â PO
¸ðµå ÀÌ¿ÜÀÇ ¹æ¹ý¿¡ ÀÇÇØ ÇöÀç Ç׸ñÀÌ ¹Ù²î°Å³ª, ±× ¿Ü ´Ù¸¥ ÀÌÀ¯¿¡ ÀÇÇØ
À̸ƽº ½ºÅ©¸°ÀÌ ¹Ù²î¾úÀ» °æ¿ì »ç¿ëÇÑ´Ù.
PO mode¿¡¼ ¹ø¿ªÀÚ°¡ ÀÛ¾÷À» ÇÏ°í ÀÖ´Â µµÁß¿¡ À©µµ¿ì¸¦ °Á¦·Î ¹èÄ¡ÇÏ´Â °ÍÀÌ ¹ø¿ªÀÚ¸¦ µµ¿ÍÁÖ´Â ÀÏÀÎÁö, ¾Æ´Ï¸é ¾î¼¸é ¹æÇØÇÏ´Â ÀÏÀÎÁö´Â ¾ÆÁ÷ ¾ËÁö ¸øÇÑ´Ù. ¿ì¸®´Â óÀ½¿¡ À©µµ¿ì°¡ ¾î¶»°Ô µ¿ÀÛÇØ¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ »ó´çÈ÷ Á¤È®ÇÑ »ý°¢À» ÇßÁö¸¸, ´Ù¸¥ ÇÑÆíÀ¸·Î À̸ƽº¿¡ Àͼ÷ÇÑ »ç¶÷À̶ó¸é ´©±¸³ª ÄÁÆ®·ÑÀ» Á÷Á¢ °®°í ÀÖ´Â °ÍÀ» ÁÁ¾ÆÇÑ´Ù. ¾Æ¸¶ °íÁ¤µÈ À©µµ¿ì ¹èÄ¡´Â PO ¸ðµåÀÇ ¿É¼ÇÀ¸·Î Á¦°øµÇ¾î ¹ø¿ªÀÚ°¡ ÃëÇâ¿¡ ´Ù¶ó µ¿ÀÛ ¿©ºÎ¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÀ» °ÍÀÌ°í, ÀÌ ±â´ÉÀº ½ÇÇèÀûÀ¸·Î Á¦°øµÉ °ÍÀÌ´Ù. ¸¸¾à ¾Æ¹«µµ ÀÌ ±â´ÉÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ¾ø°Å³ª, ȤÀº ¹ø¿ªÇÏ´Â µ¥ ¾Ð¹Ú°¨À» Áشٸé ÀÌ·± »ý°¢µéÀ» Ãë¼ÒÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¾î¶»°Ô ÇÒÁö¿¡ ´ëÇÑ ¾ÆÀ̵ð¾î´Â ÇÁ·Î±×·¡¸Ó°¡ ¾Æ´Ï¶ó ¹ø¿ªÀÚ¿¡°Ô¼ ³ª¿Í¾ß ÇÑ´Ù. °æÇèÀÖ´Â ¹ø¿ªÀÚÀÇ ÀÇ°ßÀÌ ´Ù¸¥ »ç¶÷ÀÌ ¾î¶² ¹æ¹ýÀ¸·Î ¹ø¿ªÇÒÁö ¿¹»óÇÏ´Â ÇÁ·Î±×·¡¸ÓÀÇ Àǰߺ¸´Ù ÈξÀ °¡Ä¡°¡ ÀÖ´Ù.
n (po-next-entry
) ¸í·É°ú p (po-previous-entry
)
¸í·ÉÀº Ä¿¼¸¦ ÇöÀç Ç׸ñÀÇ µÚ ȤÀº ¾Õ Ç׸ñÀ¸·Î À̵¿ÇÑ´Ù. ¸¸¾à nÀÌ
PO ÆÄÀÏÀÇ ³¡¿¡¼ ŸÀÌÇÁµÇ°Å³ª, p°¡ ¸Ç óÀ½ Ç׸ñ¿¡¼ ŸÀÌÇÁµÉ
°æ¿ì¿¡´Â ¾Æ¹«·± À̵¿µµ ÇÏÁö ¾Ê´Â´Ù.
< (po-first-entry
) ¸í·É°ú > (po-last-entry
)
¸í·ÉÀº Ä¿¼¸¦ PO ÆÄÀÏÀÇ ¸Ç óÀ½ ȤÀº ¸Ç ¸¶Áö¸· Ç׸ñÀ¸·Î ¿Å±ä´Ù. Ä¿¼°¡
PO ÆÄÀÏÀÇ ¸¶Áö¸· Ç׸ñ µÚ¿¡ À§Ä¡ÇØ ÀÖÀ» °æ¿ì, ´ëºÎºÐÀÇ PO ¸ðµå ¸í·ÉÀº
`After last entry'¶ó°í ¸»ÇÏ¸é¼ ¿À·ù¸¦ ³¾ °ÍÀÌ´Ù. ±×·¯³ª,
<°ú > ¸í·ÉÀº Ä¿¼°¡ PO ÆÄÀÏ Ç׸ñ À§¿¡ ÀÖÁö ¾ÊÀ» °æ¿ì¿¡µµ
µ¿ÀÛÇÑ´Ù. ±×¸®°í ÀÌ ¸í·ÉÀ¸·Î PO ÆÄÀÏ Ç׸ñ À§¿¡ ÀÖÁö ¾ÊÀº »óȲÀ» ¹Ù²Ü ¼ö
ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ ¸í·É¾î¶ó°í ÇÒ Áö¶óµµ ¿ÏÀüÈ÷ ºó PO ÆÄÀÏ¿¡¼´Â ½ÇÆÐÇÑ´Ù.
ÀÌ¿Í °ü·ÃµÈ PO ¸ðµå °³¹ß °èȹÀÇ Çϳª·Î, ¼Ò½º¿¡¼ºÎÅÍ ºó PO ÆÄÀÏÀ»
´ëÈÀûÀ¸·Î ä¿ö³ª°¡µµ·Ï ÇÏ·Á°í ÇÑ´Ù. See section ¹ø¿ª °¡´ÉÇÑ ¹®ÀÚ¿ Ç¥½Ã.
¹ø¿ªÀڴ ƯÁ¤ Ç׸ñ¿¡ ¹ø¿ªÀ» Çϱâ Àü¿¡, PO ÆÄÀÏÀÇ µÞºÎºÐÀ» ¹Ì¸® ºÁ¼ Ȥ½Ã³ª µÚ¿¡µµ ÀÖÀ»Áö ¸ð¸£´Â ¿ë¾î³ª ¹®±¸¸¦ ã¾ÆºÁ¾ß ÇÒÁö °áÁ¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¹°·Ð Ç¥ÁØ À̸ƽº ¸í·ÉÀ» ÀÌ¿ëÇØ ÇöÀç Ä¿¼ À§Ä¡¸¦ ·¹Áö½ºÅÍ¿¡ ÀúÀåÇÏ°í ±× ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇØ ´Ù½Ã µ¹¾Æ¿À°Å³ª, ȤÀº À§Ä¡ ¸µ(location ring)À» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
PO ¸ðµå¿¡¼´Â ¶Ç ÇÑ °¡Áö ¹æ¹ýÀ¸·Î, Ä¿¼ÀÇ À§Ä¡¸¦ PO ¸ðµå Àü¿ë ½ºÅÿ¡
ÀúÀåÇÒ ¼ö ÀÖ´Ù. m (po-push-location
) ¸í·ÉÀº ÇöÀç Ç׸ñÀÇ
À§Ä¡¸¦ ½ºÅÿ¡ ±â·ÏÇÏ´Â Àϸ¸À» ÇÏ°í, ¿¹Àü¿¡ ÀúÀåµÈ Ç׸ñ À§Ä¡¸¦ ÇöÀç
±â·ÏÇÒ À§Ä¡ÀÇ ¾Æ·¡¿¡ ¹Ð¾î³Ö´Â´Ù. r (po-pop-location
)
¸í·ÉÀº ½ºÅÃÀÇ ¸Ç À§ ¿ä¼Ò¸¦ ¾ø¾Ö°í, Ä¿¼¸¦ ±× ¸Ç À§ ¿ä¼Ò¿¡ ÀúÀåµÈ À§Ä¡·Î
¿Å±ä´Ù. ±× ´ÙÀ½¿¡ ±× À§Ä¡´Â ½ºÅÿ¡¼ »ç¶óÁö°í, ´ÙÀ½ r ¸í·ÉÀº
Ä¿¼¸¦ ±× Àü¿¡ ÀúÀåµÈ À§Ä¡·Î ¿Å±æ °ÍÀÌ´Ù. ÀÌ·± ½ÄÀ¸·Î ½ºÅÿ¡ ¾Æ¹«°Íµµ
³²¾ÆÀÖÁö ¾ÊÀ» ¶§±îÁö °è¼ÓµÈ´Ù.
¹ø¿ªÀÚ°¡ ÀÌ À§Ä¡ ½ºÅÿ¡ µé¾î ÀÖ´Â À§Ä¡¸¦ ¾Ë°í ½ÍÀº °æ¿ì, Áï ½ºÅÃÀÇ ¸Ç À§¿¡ µé¾î ÀÖ´Â Ç׸ñÀ» º¸°í ½ÍÀ» °æ¿ì¿¡´Â, ³ªÁß¿¡ µ¹¾Æ¿Ã »ý°¢À¸·Î Ä¿¼¸¦ ´Ù¸¥ ¾îµò°¡·Î À̵¿ÇÑ ´ÙÀ½ r ¹Ù·Î ´ÙÀ½¿¡ mÀ» »ç¿ëÇÏ¸é µÈ´Ù.
x (po-exchange-location
) ¸í·ÉÀº Ä¿¼¸¦ Ç׸ñÀ§Ä¡°¡ ÀúÀåµÈ
½ºÅÃÀÇ ¸Ç À§ ¿ä¼Ò¿¡ ¿¬°áµÈ Ç׸ñ¿¡ À̵¿ÇÏ´Â µ¿½Ã¿¡, ½ºÅÃÀÇ ¸Ç À§ ¿ä¼Ò¸¦
À̵¿ ÀüÀÇ ÇöÀç Ç׸ñÀ¸·Î ¹Ù²Û´Ù. °á°úÀûÀ¸·Î x ¸í·ÉÀ» ¹Ýº¹Çϸé
µÎ°³ÀÇ Ç׸ñÀ» °è¼Ó ¿Ô´Ù°¬´ÙÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô ÇÏ°í ½ÍÀº °æ¿ì¿¡, óÀ½¿¡
Ç׸ñ¿¡¼ mÀ» »ç¿ëÇÏ°í ±× ´ÙÀ½ Ç׸ñ¿¡¼ x¸¦ ÀÌ¿ëÇØ ¿Ô´Ù°¬´ÙÇÒ
¼ö ÀÖ´Ù.
PO ÆÄÀÏ Ç׸ñ¿¡ ¾î¶² ¹®ÀÚ¿À» ÀÎÄÚµùÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ¿©·¯ÁÙÀÇ
¹®ÀÚ¿À» ¾î¶»°Ô ÂÉ°³´ÂÁöµµ ¿©·¯ °¡Áö ¹æ¹ýÀÌ ÀÖÀ» »Ó ¾Æ´Ï¶ó, ¹é½½·¡½¬·Î
½ÃÀÛÇÏ´Â À̽ºÄÉÀÌÇÁ ½ÃÄö½º(escaped sequence)·Î Ư¼ö ¹®ÀÚ¸¦ Ç¥ÇöÇÏ´Â
¹æ¹ýµµ ¿©·¯ °¡Áö°¡ ÀÖ´Ù. ¸î °¡Áö PO ¸ðµåÀÇ ±â´ÉµéÀº ¾î¶² Ç׸ñÀÇ
msgid
Çʵ忡 ¾î¶² ¹®ÀÚ¿ÀÌ µé¾î ÀÖ´Ù°í °¡Á¤ÇÏ°í PO ÆÄÀÏÀ»
scanÇÏ´Â ´É·Â¿¡ ÀÇÁ¸ÇÑ´Ù. PO ÆÄÀÏÀÇ ³»ºÎ¿¡ ÀÌ ÀÎÄÚµùÀ» ½±°Ô ¾Ë¾Æ³»´Â
³»ºÎ µµ±¸°¡ ÀÖ´Ù°í Çصµ, ÀÌ·¸°Ô ¾Ë¾Æ³»´Â ÀÏÀ» ºü¸£°Ô Çϱâ´Â ±â¼úÀûÀ¸·Î
¾î·Æ´Ù. ÀÌ È¿À²¼º ¹®Á¦¿¡ ´ëÇÑ ÇØ´äÀ¸·Î, ¿ì¸®´Â Ç¥ÁØÈµÈ ¹®ÀÚ¿ Ç¥ÇöÀ»
¾²±â·Î °áÁ¤ÇÏ¿´´Ù.
PO ÆÄÀÏ¿¡ ¹®ÀÚ¿À» Ç¥ÇöÇÏ´Â ½À°üÀº ÇöÀç Åä·ÐÁßÀÌ°í, PO ¸ðµå¿¡¼´Â
Ç¥ÁØÈµÈ Ç¥ÇöÀ» ½ÇÇèÇÏ°í ÀÖ´Ù. xgettext
¿Í PO ¸ðµå¸¦ µ¿½Ã¿¡
»ç¿ëÇÏ¿© µ¿ÀÏÇÑ ¹®ÀÚ¿À» µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î Ç¥ÇöÇϵµ·Ï ÀÏÄ¡½ÃÅ°´Â °ÍÀÌ ÁÁÀ»
°ÍÀÌ´Ù. ±×¸®°í PO ¸ðµå¿¡¼ ÇÊ¿äÇÑ Ç¥ÁØÈ´Â GNU gettext
ÀÇ
xgettext
¸¦ »ç¿ëÇϱ⸸ Çϸé ÀÚµ¿À¸·Î ¸¸Á·µÉ °ÍÀÌ´Ù. Á÷Á¢ PO ¸ðµå
Ç¥ÁØȸ¦ ÇØ¾ß ÇÏ´Â °æ¿ì´Â ¿ÜºÎ¿¡¼ °¡Á®¿Â PO ÆÄÀÏÀ̳ª, ÀÌ ±Ô¹ü ÀÚü°¡
¹Ù²ð °æ¿ì¿¡¸¸ ÇÊ¿äÇÏ´Ù.
±×·¯¹Ç·Î, Àû¾îµµ ÁÖ¾îÁø ÆÄÀÏÀÇ ¹®ÀÚ¿À» Ç¥ÁØÈÇÒ °æ¿ì¿¡, ´ÙÀ½ PO ¸ðµå ¸í·É¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:
M-x po-normalize(ÇØ´çµÇ´Â Å°°¡ ¾ø´Ù) ¸í·ÉÀº ¸ðµç Ç׸ñÀ» °Ë»çÇÏ°í
PO ÆÄÀÏ ³»ÀÇ ¸ðµç ¿ø ¹®ÀÚ¿°ú ¹ø¿ªµÈ ¹®ÀÚ¿ÀÌ ÅëÀÏµÈ ÇüÅ·Πµû¿ÈÇ¥¸¦
¾²µµ·Ï ÇÑ´Ù. ¶ÇÇÑ ¸¶Áö¸· Ç׸ñ µÚ¿¡ ÀÖ´Â ºÎ½º·¯±âµéµµ Á¦°ÅÇÑ´Ù. ÀÌ
¸í·ÉÀº ´Ù¸¥ µ¥¼ óÀ½ °¡Á®¿Â PO ÆÄÀÏÀ̰ųª, ¿ì¸®°¡ »ç¿ëÇÒ Ç¥ÁØÀûÀÎ
µû¿ÈÇ¥ Çü½ÄÀ» ´õ ³´°Ô ¹Ù²Ü ¶§ À¯¿ëÇÏ´Ù. ÀÌ Ç¥ÁØ Çü½ÄÀº ±ú²ýÇÑ PO
ÆÄÀϸ¸À» À§ÇÑ °ÍÀÌ ¾Æ´Ï¶ó, ´Ù¸¥ PO ¸ðµå ¸í·ÉÀÌ msgid
¹®ÀÚ¿À»
»¡¸® ãµµ·Ï Çϱâ À§ÇÑ °ÍÀ̱⵵ ÇÏ´Ù.
ÇöÀç M-x po-normalize´Â ´Ù¸¥ Ç׸ñµé¿¡ ´ëÇؼ ¼¼ ´Ü°è¸¦ °ÅÄ£´Ù.
ù¹ø°´Â GNU gettext
0.6 ÀÌÀüÀÇ PO ÆÄÀÏÀ» ¹Ù²Ù´Â ÈÞ¸®½ºÆ½À¸·Î,
0.6 ÀÌÀü¿¡¼´Â msgid
¿Í msgstr
Çʵ忡¼ ¿©·¯ÁÙÀÇ ¹®ÀÚ¿À»
¾µ ¶§ K&R ½ºÅ¸ÀÏÀÇ C ¹®ÀÚ¿ ¹®¹ýÀ» »ç¿ëÇÑ´Ù. ÀÌ Ã¹¹ø° ÈÞ¸®½ºÆ½Àº
¾ø¾îÁø Ç׸ñÀÌ ¾Æ´Ï¾îµµ ¹é½½·¡½¬·Î ³¡³ª´Â ÁÖ¼®¹®¿¡ ´ëÇؼ´Â ½ÇÆÐÇÒ ¼öµµ
ÀÖ´Ù; ÀÌ Ã¹¹ø° ÈÞ¸®½ºÆ½Àº ÀÌ µÚ¿¡ ¿Ã ´Ü°è¿¡ ÀÇÁ¸ÇÏ´Â µ¥, µÚÀÇ ´Ü°è¿¡¼
¾ø¾îÁø Ç׸ñ¿¡¼ °è¼ÓµÇ´Â ÁÙÀ» Á¦´ë·Î ÁÖ¼®Ã³¸®ÇÑ´Ù. µÎ ¹ø°¿Í ¼¼ ¹ø°
´Ü°è´Â °¢°¢ msgid
¿Í msgstr
À» Ç¥ÁØÈÇÏ´Â ´Ü°èÀÌ´Ù. À̵é
´Ü°è¿¡¼´Â XViewÀÇ msgfmt
¿¡¼ ¾²ÀÌ´Â ¹æ½ÄÀÇ ¿¬°áµÇ´Â ÁÙ ³¡ÀÇ
¹é½½·¡½¬µéÀ» ¾ø¾Ø´Ù.
ÀÌ·¸°Ô Á÷Á¢ Ç¥ÁØÈÇÏ´Â ¸í·ÉÀÌ ÀÖÀ¸¸é ¶Ç´Ù¸¥ °÷¿¡¼ PO ÆÄÀÏÀ» °¡Á®¿Ã ¼ö
ÀÖÁö¸¸, ÇöÀç ½À°üÀ» Çâ»ó½ÃÅ°´Â °Íµµ ½¬¿öÁø´Ù. ÇöÀç ÀÌ·¸°Ô Çâ»óµÇ´Â Á¡Àº
´ëºÎºÐ ¹ÌÀûÀÎ »ý°¢¿¡¼ ³ª¿Â °ÍµéÀÌ´Ù. ¿©±â¿¡ °üÇØ Á¦¾ÈµÈ »çÇ×µéÀº
³ªÁß¿¡, Ç¥ÁØÈ ¸í·É°ú ´Ù¸¥ GNU gettext
µµ±¸°¡ ÀÚµ¿À¸·Î ÀÌ ¿øÄ¢À»
µû¸£°Ô µÉ ¶§ ¸¸µå´Â ÆíÀÌ ÁÁÀ» °ÍÀÌ´Ù. Ç¥ÁØÀûÀÎ ¹®ÀÚ¿ Çü½ÄÀº ¾Æ·¡¿¡
¼³¸íµÇ¾î Àִµ¥, À̸ƽº¿¡ Àͼ÷ÇØ ÀÖÁö ¾ÊÀº »ç¶÷°ú, PO ÆÄÀÏÀ» Àý´ë
¸ÚÁø ¹æ¹ýÀ» ½á¼ ´ÙµëÀ¸·Á ÇÏÁö ¾Ê´Â »ç¶÷µéÀ» À§ÇØ ¼³¸íÇÏ¿´´Ù.
ÇöÀç PO ¸ðµå¿¡¼, ¹®ÀÚ¿Àº ÇÑ ÁÙÀ̰ųª ¿©·¯ ÁÙÀÌ´Ù. ¹®ÀÚ¿Àº ÁٹٲÞÀÌ Çϳª¶óµµ Æ÷ÇԵǾî ÀÖÀ¸¸é ¿©·¯ÁÙÀÌ µÇ°í, ¿©·¯ÁÙÀÌ µÇ´Â °æ¿ì´Â ÁٹٲÞÀÌ ÀÖ´Â °æ¿ì»ÓÀÌ´Ù. Áï ¹®ÀÚ¿ÀÌ `[^\n]\n+[^\n]'¿¡ ¸Â´Â °æ¿ìÀÌ´Ù. Áï, ¿ì¸®´Â ´ÙÀ½°ú °°Àº ¹®ÀÚ¿À» ¸¸³¯ ¼öµµ ÀÖ´Ù:
msgstr "\n\nHello, world!\n\n\n"
ÇÏÁö¸¸ Áٹٲ޿¡ µû¶ó ±¸ºÐÇϸé, ´ÙÀ½°ú °°ÀÌ µÈ´Ù:
msgstr "" "\n" "\n" "Hello,\n" "world!\n" "\n" "\n"
¿ì¸®´Â ½ÅÁßÇÏ°Ô ¿¹¸¦ »ç¿ëÇØ ¿ÔÁö¸¸, ¿©±â¼ ¸íÈ®È÷ ÇÏ°Ú´Ù. ´ëºÎºÐ ¿©·¯ÁÙÀÌ ÀÖ´õ¶óµµ ±×·¸°Ô ¸ø »ý±âÁö´Â ¾Ê´Ù. ¾Æ¸¶µµ ´ÙÀ½ Á¦¾È¿¡ µû¶ó ±¸ÇöÇÒ °ÍÀÌ´Ù. ¸Ç ¾Õ¿¡ ÁٹٲÞÀÌ ÀÖÀ¸¸é ÀÏ´Ü Ã¹ÁÙÀ» ºó ¹®ÀÚ¿·Î ¸¸µé°í, ¿¬¼ÓµÈ ¸ðµç ÁٹٲÞÀ» ºóÁÙ·Î ¸¸µç´Ù (Áï, n > 1ÀÎ °æ¿ì, n-1¹ø° ¸¶Áö¸· ÁٹٲޱîÁö ÇϳªÀÇ ¹®ÀÚ¿ÀÌ µÈ´Ù). ÀÌ·¸°Ô Çؼ À§ÀÇ ¿¹¸¦ ´ÙÀ½°ú °°ÀÌ ¸¸µç´Ù:
msgstr "\n\n" "Hello,\n" "world!\n" "\n\n"
¹®ÀÚ¿ Ç¥ÁØÈ¿¡ ´ëÇØ ¾ÆÁ÷ °áÁ¤µÇÁö ¾ÊÀº ÀÛÀº »çÇ×µéÀÌ ¸î °¡Áö Àִµ¥, ÀÌ Àǹ®Á¡µéÀÌ ÇØ°áµÇ¸é ÀÌ ¾È³»¼¿¡ ¹®¼ÈÇÒ °ÍÀÌ´Ù.
Go to the first, previous, next, last section, table of contents.