3. C code 에서의 gettext 사용

C code 에서의 사용법을 살펴본다.

예제 프로그램으로 Hello.c 라는 C code 를 작성한다. 이 프로그램은 Greeting, Hello, World 라고 출력을 하는데 각각의 message 들을 gettext 를 이용하여 사용자 locale 에 따라 출력토록 한다.


#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("origin message : %s\n", "Greeting");
        printf("gettext trans  : %s\n", gettext("Greeting"));

        printf("origin message : %s\n", "Hello");
        printf("gettext trans  : %s\n", gettext("Hello"));

        printf("origin message : %s\n", "World!");
        printf("gettext trans  : %s\n", gettext("World!"));

        return 0;
}

string 을 gettext 로 둘러싸게 되면 둘러싸인 message 가 해당 locale에 해당하는 message table 을 참조하여 출력하게 된다. 여기서 참조할 message table 을 프로그램에 연결시키기 위해서 bindtextdomain 을 사용하였다. 위 예제에서는 위 코드를 Hello 라는 이름으로 빌드하고, 이의 message table 은 /usr/local/share/locale 아래에서 textdomain 에서 지정한 Hello 프로그램의 message table 을 참조하도록 한것이다.

만약 해당하는 mesage table 이 없거나 정의된 값이 없을 경우에는 변환없이 원래 messgae가 출력된다.