오픈소스를 이용한 프로그래밍 에 이어지는 문서로서, 여기서는 앞에서 다루지 않은 항목들에 대해 설명하고 있다.

다국어 지원하기

제목만 보고서, 언뜻 감이 오지 않을지도 모르겠다. 리눅스 한글 설정을 하다보면, 제일 먼저 부딪히는 것이 로케일(locale) 문제이다. 예를 들어 gaim 을 소스로 설치했는 데, 메뉴가 모두 깨져보였다. 이때는 로케일을 맞춰주어야 한다.
여기서 로케일이라고 하는 것은, 사용자의 시스템의 로케일에 따라서, 영어라면, 영어메뉴를 한글이라면 한글메뉴를 자동으로 바꿔서 보여주는 것을 말한다.
프로그램을 개발할 때, 이런 식으로 사용자 시스템에 맞춰서 대응되도록 한다면 좀더 멋진 프로그램이 될 것이다.
앞에서 만든 프로그램을 기반으로 다국어를 지원하도록 해보자!

main.c 파일을 아래와 같이 수정을 해주어야 한다.

#include <libintl.h>
#include <stdio.h>
 
#define PACKAGE         "main"      // main.mo 파일의 이름을 지정
#define LOCALEDIR       "/usr/share/locale"    
 
void lovecall();
 
char *getname()
{
        static char name[128];
 
        printf(gettext("input name : "));
        scanf("%s", name);
        return name;
}
 
int main()
{
        char *str;
 
        setlocale(LC_ALL, "");
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
 
        str = getname();
        printf(gettext("i like you.\n"));
        printf("%s\n", str);
//      lovecall();
//      printf("hello world!\n");
        return 0;
}

소스를 보면 알겠지만, 몇가지 추가된 것이 보인다. 이제 번역 파일을 만들어야 한다.

#cd /study/
#xgettext -o ko.po main.c

에러없이 수행되었다면, 같은 디렉토리에 ko.po 파일이 생성되었을 것이다. vi 로 열어보자!!

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2005-04-05 19:44+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=euc-KR\n"          // 내용 추가 
"Content-Transfer-Encoding: 8bit\n"
 
#: main.c:13
msgid "input name : "
msgstr "이름 입력:"         // 내용 추가
 
#: main.c:27
msgid "i like you.\n"
msgstr "나 너 싫어해\n"        // 내용 추가

'내용 추가' 로 된 부분을 위와 같이 추가한다. po 파일은 사람이 번역하기 위한 텍스트 파일이다. 실제로 gettext 가 번역된 내용을 사용하기 위해서는 po 파일을 gettext 가 사용할 수 있는 형식인 mo 파일로 변환해야 한다. 아래와 같이 명령을 내려주면 된다.

#msgfmt -o /usr/share/locale/ko/LC_MESSAGES/main.mo ko.po

에러가 없었다면, 정해준 경로에 main.mo 파일이 생성되었다.
이제 실제로 실행해보자!! 환경변수인 로케인(LANG) 에 따라서 변하기 때문에, 파일을 실행하기전에 수정해주어야 한다.

#export LANG=c
#./main
Input name : fat81
i like you
fat81

이번에는 로케인을 한글로 바꿔보자!

#export LANG=ko_KR.eucKR
#./main
이름입력: fat81
나 너 싫어
fat81
  • computer/programming/오픈소스를_이용한_프로그래밍2.txt
  • Last modified: 4 years ago
  • by likewind