Áö¿ªÈ´Â ¹®¼È°¡ ¾È µÅ ÀÖ´Â Bash ÀÇ Æ¯Â¡ÀÔ´Ï´Ù.
Áö¿ªÈµÈ ½© ½ºÅ©¸³Æ®´Â ½Ã½ºÅÛÀÇ ·ÎÄÉÀÏ¿¡ µû¶ó Á¤ÀÇµÈ ¾ð¾î·Î ÅؽºÆ®¸¦ Ãâ·ÂÇØ ÁÝ´Ï´Ù. µ¶ÀÏÀÇ º£¸¦¸°¿¡ ÀÖ´Â ¸®´ª½º À¯Àú´Â µ¶ÀϾî·Î µÈ ½ºÅ©¸³Æ®ÀÇ Ãâ·ÂÀ» ¾òÀ» ¼ö ÀÖ´Â ¹Ý¸é¿¡ ¹Ì±¹ÀÇ ¸Þ¸±·£µå¿¡ ÀÖ´Â ±×ÀÇ »çÃÌÀº ¶È°°Àº ½ºÅ©¸³Æ®ÀÓ¿¡µµ ºÒ±¸ÇÏ°í ¿µ¾î·Î µÈ Ãâ·ÂÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
»ç¿ëÀÚ¿¡°Ô ¿¡·¯³ª ÇÁ·ÒÇÁÆ®µîÀ» Áö¿ªÈµÈ ¸Þ¼¼Áö·Î º¸¿©ÁÖ·Á¸é ´ÙÀ½¿¡ ³ª¿À´Â Çü½ÄÀ» ¾²¸é µË´Ï´Ù.
#!/bin/bash # localized.sh E_CDERROR=65 error() { printf "$@" >&2 exit $E_CDERROR } cd $var || error $"Can't cd to %s." "$var" read -p $"Enter the value: " var # ... |
bash$ bash -D localized.sh "Can't cd to %s." "Enter the value: " |
bash$ bash --dump-po-strings localized.sh #: a:6 msgid "Can't cd to %s." msgstr "" #: a:7 msgid "Enter the value: " msgstr "" |
ÀÚ ÀÌÁ¦ ½ºÅ©¸³Æ®°¡ msgstrÀ» Âü°íÇؼ ƯÁ¤ ¾ð¾î·Î ¸Þ¼¼Áö¸¦ ¹ø¿ªÇϵµ·Ï languge.po¸¦ ºôµåÇÏ¸é µË´Ï´Ù. ¿¹¸¦ »ìÆì º¼±î¿ä?
ko.po:
#: a:6 msgid "Can't cd to %s." msgstr "%s µð·ºÅ丮·Î ¿Å°Ü°¥ ¼ö ¾ø½À´Ï´Ù." #: a:7 msgid "Enter the value: " msgstr "°ªÀ» ³ÖÀ¸¼¼¿ä: " |
±× ´ÙÀ½¿£ msgfmtÀ» ½ÇÇà½ÃÅ°¼¼¿ä.
msgfmt -o localized.sh.mo ko.po
±×·¯¸é localized.sh.mo ÆÄÀÏÀÌ »ý±â´Âµ¥ ÀÌ ÆÄÀÏÀ» /usr/local/share/locale/ko/LC_MESSAGES µð·ºÅ丮¿¡´Ù µÎ°í ½ºÅ©¸³Æ®ÀÇ Ã¹ ºÎºÐ¿¡ ´ÙÀ½ µÎ ÁÙÀ» Ãß°¡ÇØ ÁÖ¼¼¿ä.
TEXTDOMAINDIR=/usr/local/share/locale TEXTDOMAIN=localized.sh |
ÀÌÁ¦ ¾î¶² »ç¿ëÀÚ°¡ ÀÌ ½ºÅ©¸³Æ®¸¦ Çѱ¹¾î ȯ°æ¿¡¼ ½ÇÇà½ÃŲ´Ù¸é ¿µ¾î ¸Þ¼¼Áö ´ë½Å¿¡ ÇÑ±Û ¸Þ¼¼Áö¸¦ º¸°Ô µÉ °ÍÀÔ´Ï´Ù.
Âü°í: Bash ¿¹Àü ¹öÀüÀ̳ª ´Ù¸¥ ½©¿¡¼ Áö¿ªÈ¸¦ ÇÏ·Á¸é gettext¿¡ -s ¿É¼ÇÀ» °É¾î¼ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·± °æ¿ì¿¡ ½© ½ºÅ©¸³Æ®´Â ´ÙÀ½Ã³·³ ÇØ ÁÖ¸é µË´Ï´Ù.
#!/bin/bash # localized.sh E_CDERROR=65 error() { local format=$1 shift printf "$(gettext -s "$format")" "$@" >&2 exit $E_CDERROR } cd $var || error "Can't cd to %s." "$var" read -p "$(gettext -s "Enter the value: ")" var # ...
TEXTDOMAIN °ú TEXTDOMAINDIR º¯¼ö´Â Àüü ȯ°æÀ¸·Î export µÇ¾î¾ß ÇÕ´Ï´Ù.
---
ÀÌ ºÎ·ÏÀº Stephane Chazelas °¡ ÀÛ¼ºÇØ ÁÖ¾ú½À´Ï´Ù.