| 영문 배포판을 한글화하는 방법 |
1. 개 요
영문으로 된 외국 배포판을 한글화하는 방법에 대해서 기술합니다. 여기서 기술되는 내용은 배포판 전체를 한글화하는 것이 아니라 응용프로그램을 한글화하는 방법에 대해서 간단하게 설명하고자 합니다. 맨드리바 계열의 배포판인 OpenMandriva, Mageia, RosaLinux 그리고 넘버원 리눅스의 기반인 PCLinuxOS 등의 배포판에서 한글화하는 방법에 대해서는 필자의 "리눅스의 모든 것" 서적에서 다루고 있는데, 이 책이 현재는 절판되어 있는 상태로 여건이 되는대로 이 부분에 대해서는 PDF 문서로 만들어 제공할 예정입니다. 이 내용 가운데 응용프로그램들에 대해서 한글화를 적용하기 위해서는 어떠한 방법으로 하는지를 설명하고자 합니다.
2. 대부분의 배포판들은 지역화(Localization)를 위해 카달로그 파일인 POT 파일을 제공한다.
/usr/share/locale/ko/LC_MESSAGES 디렉토리를 보면 프로그램명.mo 파일들이 존재합니다. 이 파일들이 하는 역할은 해당 국가에 대한 로케일이 설정되어 있을 프로그램들내의 문자들이 그 국가의 언어대로 출력할 수 있게 해 줍니다. 이 경로의 파일들은 한국어로 해당 프로그램들이 실행되었을 때 한글로 출력할 수 있도록 영문 스트링에 대해서 한글화되어 있습니다. 따라서 영문 프로그램들을 한글화하거나 수정하고자 할 때는 이 디렉토리에 있는 mo 파일들을 생성해 주거나 수정해 주면 될 것입니다. 그런데 이 파일들은 텍스트 파일이 아니라서 편집기로 편집할 수 없습니다. 그래서 이 파일을 편집하기 위해서는 텍스트 형태로 변환해 주어야 하는데 이 때 사용하는 명령이 msgunfmt입니다. 이 명령으로 mo 파일을 po 파일로 변환할 수 있습니다. 그러면 /usr/share/locale/ko/LC_MESSAGES/libDrakX.mo 파일을 변환해 봅니다.
# msgunfmt /usr/share/locale/ko/LC_MESSAGES/libDrakX.mo > libDrakX.po
해당 명령을 내린 경로에 libDrakX.po 파일이 생성되어 있으며 에디터로 이 파일을 열어 보면 다음과 같은 형식으로 되어 있습니다.
![]()
이 파일의 형식은 다음과 같습니다.
msgid "Choose a partition"
msgstr "파티션을 선택해 주세요."
msgid는 프로그램 소스에 사용된 문자열로, 이 부분을 msgstr으로 해당 로케일에 맞게 번역해 주면 됩니다. 그런 후에 다시 mo 파일로 변환하려면 msgfmt 명령을 사용합니다.
# msgfmt libDrakX.po -o /usr/share/locale/ko/LC_MESSAGES/libDrakX.mo 이런식으로 한글화가 덜 된 파일을 수정하여 한글화를 완료시킬 수 있습니다.
3. 소스의 po 파일을 수정하여 패키지에 포함시킨다.
오픈소스마다 Po 파일의 탬플릿 파일인 Pot 파일을 지원합니다. 이 파일을 가지고 로케일에 맞는 po 파일(ko.po)을 만들어 소스와 함께 컴파일하여 패키징하는 것이 원칙입니다. 앞에서 설명한 것은 해당 패키지가 업데이트되어 설치하였을 때 패키지내에 있는 파일로 대치하게 되면 한글화에 변화가 있게 됩니다. 개인적으로 사용하는 것은 앞 방법대로 하면 되지만, 배포판 개발자는 RPM 패키지내에 한글화된 파일을 넣어 패키징하여 리포지토리에 올려 놓아야 합니다. 이러한 과정을 수행하기 위해선 다음과 같이 합니다.
오픈소스 압축 해제 -> 압축한 오픈소스를 다른 이름으로 복사 -> 다른 이름의 소스에 있는 Po 파일을 수정 -> 원소스와 복사 소스에 대한 패치 생성 -> rpm spec 파일에 패치 적용 추가 -> rpm 패키징
넘버원 리눅스에서는 이러한 방식으로 한글화를 진행하고 있습니다. 사실 이러한 방법보다는 설치되어 있는 mo 파일을 po 파일로 변환하여 한글화하여 리마스터링하는 것이 간단하고 시간도 훨씬 적게 들긴 때문에 이게 편리하긴 합니다. 이러한 걸 거치지 않고 모태 배포판에서 아예 한글화가 진행될 수 있도록 하려면 KDE 지역화 프로젝트에 한글화된 파일을 등록하는 것입니다. 자세한 것은 다음 사이트를 참고하세요.
https://l10n.kde.org/





