...
Code Block |
---|
|
#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 |
---|
|
$ 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 |
---|
|
$ ./hello 똠방 50
내 이름은 똠방입니다.
내 나이는 50입니다. |
C 언어 예시
국제화를 지원하는 SW 를 개발할 경우 번역이 필요한 메시지 부분을 다음과 같이 getext() 로 감싸줍니다.
Code Block |
---|
|
printf(gettext("My name is %s.\n"), my_name); |
또는 아래와 같이 Under bar 매크로로 간단하게 작성할 수 있습니다.
...
...
C 로 만든 gettext 사용 예제를 https://github.com/lesstif/gettext-example 에 올려놨으니 참고하세요.
같이 보기
Ref