Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecpp
#define THIS_PACKAGE_NAME "hello" 

char* locale_dir = "locale"; // 기본locale locale파일을 사용읽어올 디렉터리

setlocale (LC_ALL, "");

// 패키지 이름. locale 이름의 폴더 밑에 hello.mo 가 있어야 함.
bindtextdomain (THIS_PACKAGE_NAME, locale_dir);
textdomain (THIS_PACKAGE_NAME);

// 번역되서 보여질 부분은 gettext 로 감싸줌
printf(gettext("My name is %s.\n"), my_name);

// gettext 대신 _ macro 사용해도 됨.
printf(_("my age is %d.\n"), my_age);

...

Code Block
languagebash
$ mkdir -p locale/ko/LC_MESSAGES/
$ msgfmt ko.po -o locale/ko/LC_MESSAGES/hello.mo -l ko_KR.utf8
Note

locale 용 데이터가 실행 파일(hello)이 있는 폴더의 하위에 locale/LOCALE/LOCALE_TYPE/ 경로로 있을 경우입니다.

...

Code Block
languagebash
$ ./hello 똠방 50

내 이름은 똠방입니다.
내 나이는 50입니다.

C 언어 예시

C 로 만든 gettext 사용 예제를 https://github.com/lesstif/gettext-example 에 올려놨으니 참고하세요.


같이 보기

Ref