Gettext
컴퓨팅에서 gettext는 유닉스 계열 컴퓨터 운영 체제의 다국어 프로그램을 작성할 목적으로 흔히 쓰이는 국제화와 지역화 (i18n) 시스템이다. 가장 널리 쓰이는 gettext 구현물은 1995년 GNU 프로젝트가 공개한 GNU gettext이다.
Int the MaxOSX
MacOSX는 brew를 사용하여 설치한다.
이 후, 아래와 같이 gettext/bin
경로를 PATH
에 추가하면 된다.
How to recursive build
$ find . -iname *.po | sed -e 's;\(.*\)\.po$;\1\.po:-o:\1.mo;g' | awk -F':' '{print($1);print($2);print($3);}' | xargs -n 3 msgfmt
딕셔너리 디렉터리 구조
딕셔너리의 구조는 다음과 같다.
+---- locale ----+--- en ---+--- LC_MESSAGES
|
+--- kr ---+--- LC_MESSAGES ---+--- messages.mo
|
+--- messages.po
shell script 에서의 gettext 사용
#! /bin/sh
# Hello
TEXTDOMAINDIR=/usr/local/share/locale
TEXTDOMAIN=Hello
export TEXTDOMAINDIR
export TEXTDOMAIN
echo "$(gettext -s "Hello")"
echo "$(gettext -s "World!")"
C code 에서의 gettext 사용
#include <libintl.h>
#include <locale.h>
#include <stdio.h>
int
main(void)
{
/* 현재 호스트의 locale 을 사용한다. */
setlocale(LC_ALL,"");
/* Hello 의 message table 을 /usr/local/share/locale 아래에서 찾도록 한다. */
bindtextdomain("Hello", "/usr/local/share/locale");
textdomain("Hello");
printf("original message : %s\n", "Greeting");
printf("gettext trans : %s\n", gettext("Greeting"));
printf("original message : %s\n", "Hello");
printf("gettext trans : %s\n", gettext("Hello"));
printf("original message : %s\n", "World!");
printf("gettext trans : %s\n", gettext("World!"));
return 0;
}
See also
Favorite site
- GetText web site
- GetText for Windows
- GNU gettext utilities
- Korea GNU: GNU gettext 도구들, 버전 0.10.39
- Wikipedia (en) GetText에 대한 설명
- Frequently Asked Questions for GNU gettext
- MinGW-w64: gettext 0.18: undefined reference LD error issue
- [추천] KLDP: GETTEXT Howto
- poedit를 통한 po/mo 파일 생성(gettext)
- Joinc: gettext를 이용한 i18n 적용
- [추천] Using Gettext Tools on Windows
- [추천] PHP로 하는 Gettext