[강좌] 오픈소스 프로그램 한글화하기 - 2
2009/04/10 22:29
관련 글 목록
1. 소스 파일 다운로드
2. 소스 파일 분석
3. po 파일 편집하기
4. ko.po 만들기
5. POedit 로 po 파일 편리하게 편집하기
6. TM 기능 이용하기
- 오픈소스 프로그램 한글화하기 - 1 : i18n 방식 파악
- 오픈소스 프로그램 한글화하기 - 2 : 실제 번역
- 오픈소스 프로그램 한글화하기 - 3 : 번역 테스트
- 오픈소스 프로그램 한글화하기 - 4 : 개발팀에 패치 전달
- 오픈소스 프로그램 한글화하기 - 2 : 실제 번역
- 오픈소스 프로그램 한글화하기 - 3 : 번역 테스트
- 오픈소스 프로그램 한글화하기 - 4 : 개발팀에 패치 전달
1. 소스 파일 다운로드
번역을 하기 위해서는 우선 프로그램 소스파일을 다운로드 받아야 한다. 소스 파일은 대부분 해당 프로그램의 홈페이지에서 다운로드 받을 수 있다. 여기서는 예제로 GAP(GIMP Animation Package)를 사용한다.
- 김프 홈페이지의 다운로드 페이지 : 이곳에서 GAP 도 다운로드를 받을 수 있다.
그놈(Gnome) 관련 프로그램이라면, 해당 프로그램의 소스 전체를 받는 대신, po 파일만 다운로드 할 수도 있다. 다운로드 주소 : http://l10n.gnome.org/languages/ko/all/ui/
2. 소스 파일 분석
우리는 번역을 할 것이기 때문에, 소스 파일 중에서 번역과 관계된 부분만을 살펴본다.
이에 대한 자세한 내용은 『내 손으로 한글화를 해보자!!』를 참조한다.
김프 GAP 의 경우 Gettext 를 기반으로 i18n을 하였음을 확인할 수 있다.

이에 대한 자세한 내용은 『내 손으로 한글화를 해보자!!』를 참조한다.
김프 GAP 의 경우 Gettext 를 기반으로 i18n을 하였음을 확인할 수 있다.
오픈 소스 프로그램의 90% 이상이 Gettext 를 기반으로 한 po 형식을 사용하거나 po 형식으로 전환가능한 형식을 사용하기 때문에 여기서는 gettext 를 중심으로 이야기할 것이다.
3. po 파일 편집하기
po 파일은 기본적으로 텍스트 파일이다.
따라서 텍스트 편집기로 열어서 편집을 할 수 있다. 그 구조는 다음과 같다.
따라서 텍스트 편집기로 열어서 편집을 할 수 있다. 그 구조는 다음과 같다.
주석 부분이다. 줄의 맨 처음에 # 을 붙여주면 주석문이 된다.
# Copyright (C) 1999 Free Software Foundation, Inc.
# Sung-Hyun Nam <namsh@kldp.org>, 1999
# Mr.Dust <like.a.dust@gmail.com>, 2008
msgid ""
msgstr ""
파일에 대한 정보 부분이다.
"Project-Id-Version: gimp-plug-ins 1.1.10\n" 프로젝트명과 버전
"POT-Creation-Date: 2008-06-16 04:08+0000\n" pot 파일 생성 날짜
"PO-Revision-Date: 2008-10-03 16:49+0900\n" po 파일 갱신 날짜
"Last-Translator: Choi, JiHui <like.a.dust@gmail.com>\n" 마지막 번역자
"Language-Team: Korean <like.a.dust@gmail.com>\n" 번역팀
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" 문자셋
"Content-Transfer-Encoding: 8bit\n" 인코딩 비트
"X-Poedit-Language: Korean\n" 기본 언어
"X-Poedit-Country: KOREA, REPUBLIC OF\n" 국가
"X-Poedit-SourceCharset: utf-8\n" 코드 문자셋
실제 문자열 부분이다.
#. Button to invoke fontbrowser 문자열에 대한 설명
#: ../gap/gap_arr_dialog.c:544 소스 내 문자열의 위치
msgid "Font Browser" 원문
msgstr "글꼴 찾아보기" 번역문
4. ko.po 만들기
소스 내에 ko.po 파일이 없다면, pot 파일로부터 새로 생성을 한다.
pot 파일은 po template 의 약자로 말 그대로 po 파일의 기본틀을 의미한다. 이 파일은 po 파일과 동일한 구조이되, 번역문 없이 원문만을 담고 있다. 따라서 .pot 파일을 단순히 ko.po 로 이름만 바꿈으로써 간단히 ko.po 파일을 얻을 수 있다.
pot 파일이 없다면 생성한다.
이는 리눅스 환경이나 윈도의 cygwin 환경에서만 가능하다.
소스 내의 po 폴더로 이동 후 intltool-update --pot 라는 명령을 이용해 pot 파일을 생성한다.
더 자세한 내용은 『Po template(pot) file 만들기』 참조
pot 파일을 만들 수 없다면, 다른 언어.po 를 복사해 사용한다.
다른 언어용 파일과 한국어용 파일의 다른 점은 오로지 번역문의 내용이 다르다라는 것 뿐이다. 따라서 해당 언어의 번역문을 모두 제거하면 pot 파일과 동일하게 된다.
여기서 주의해야 할 점은 모든 언어 파일의 원문이 동일하지는 않다라는 것이다. 즉, 일부 언어 파일의 경우 너무 오래되어 최신의 문자열이 반영이 안되었을 수도 있다. 따라서 몇 개의 언어 파일을 열어보고 최종 수정일이나 원문 갯수 등을 확인한 다음, 적절한 언어 파일 중 가장 번역이 덜 된 파일을 골라 번역문을 지운 뒤, ko.po 로 저장한다.
pot 파일은 po template 의 약자로 말 그대로 po 파일의 기본틀을 의미한다. 이 파일은 po 파일과 동일한 구조이되, 번역문 없이 원문만을 담고 있다. 따라서 .pot 파일을 단순히 ko.po 로 이름만 바꿈으로써 간단히 ko.po 파일을 얻을 수 있다.
pot 파일이 없다면 생성한다.
이는 리눅스 환경이나 윈도의 cygwin 환경에서만 가능하다.
소스 내의 po 폴더로 이동 후 intltool-update --pot 라는 명령을 이용해 pot 파일을 생성한다.
더 자세한 내용은 『Po template(pot) file 만들기』 참조
pot 파일을 만들 수 없다면, 다른 언어.po 를 복사해 사용한다.
다른 언어용 파일과 한국어용 파일의 다른 점은 오로지 번역문의 내용이 다르다라는 것 뿐이다. 따라서 해당 언어의 번역문을 모두 제거하면 pot 파일과 동일하게 된다.
여기서 주의해야 할 점은 모든 언어 파일의 원문이 동일하지는 않다라는 것이다. 즉, 일부 언어 파일의 경우 너무 오래되어 최신의 문자열이 반영이 안되었을 수도 있다. 따라서 몇 개의 언어 파일을 열어보고 최종 수정일이나 원문 갯수 등을 확인한 다음, 적절한 언어 파일 중 가장 번역이 덜 된 파일을 골라 번역문을 지운 뒤, ko.po 로 저장한다.
5. POedit 로 po 파일 편리하게 편집하기
po 파일을 위한 전용 편집기에는 여러 가지 프로그램이 있다. 하지만 개인적으로 멀티 플랫폼(Windows, Mac, Linux)을 지원하며, 한글 입출력이 자유롭고, TM(Translation Memory) 기능을 지원하는 POedit 를 많이 권한다.
poedit 의 각 메뉴에 대한 설명은 『다국어 처리를 위한 PO 파일 편집기, poedit 메뉴』에 자세히 설명이 되어 있다.
poedit 의 각 메뉴에 대한 설명은 『다국어 처리를 위한 PO 파일 편집기, poedit 메뉴』에 자세히 설명이 되어 있다.
POedit 를 이용하면
poedit 를 이용할 경우 마지막 번역자 항목이 자동으로 바뀌기 때문에, poedit 로 편집하기 전에 po 파일을 텍스트 에디터로 열어 이전 번역자에 대한 기록을 주석으로 남겨주는 것이 예의이다.
- 다른 외적인 문제나 실수를 고려하지 않고, 단순히 번역작업에만 집중할 수가 있다.
- 또한 TM 기능을 이용해 편리한 번역 및 용어 통일성을 유지할 수 있으며,
- po 파일을 실제로 사용할 수 있도록 만든 바이너리 파일인 mo 파일을 자동 생성해주기 때문에 번역 작업의 결과를 확인하기도 편리하다.
poedit 를 이용할 경우 마지막 번역자 항목이 자동으로 바뀌기 때문에, poedit 로 편집하기 전에 po 파일을 텍스트 에디터로 열어 이전 번역자에 대한 기록을 주석으로 남겨주는 것이 예의이다.
6. TM 기능 이용하기
TM 은 Translation Memory 의 약자로, 기존에 번역된 내용을 데이터베이스화했다가 재활용하는 기능이다.
이 기능을 이용하면, 간단한 문자열의 경우 아주 편리하게 번역 작업을 진행할 수 있으며, 무엇보다 용어의 통일성을 유지하는데 큰 도움이 된다.
혼자 번역을 할 때도 그러하지만, 여러 사람이 공동으로 번역을 하다보면 같은 단어를 다르게 번역하는 경우가 종종 생긴다. 그리고 번역을 처음하는 경우, 어떤 단어를 선택해야 할지 난감한 경우가 있다. 이럴때 TM 기능을 이용해 이전 번역자들은 어떻게 번역했는지 확인할 수 있고, 통일된 용어를 사용함으로써 사용자들로 하여금 혼란스럽지 않게 만들 수 있다.
poedit 에서 파일 > 선택 사항 메뉴를 선택하면 다음과 같은 대화 상자가 호출된다. 번역본 기억 장치 탭을 눌러 아래 그림과 같이 만든다.

DB 경로에는 데이터베이스 파일이 저장될 경로를 선택해 주고, 언어에서 ko 를 선택한 다음, 데이터베이스 생성 버튼을 누른다.
DB 파일 생성에 사용할 파일이 있는 디렉토리를 선택하고 다음 버튼을 누르면, 해당 디렉토리에 포함된 .po, .mo, .ts, .qm 등의 파일이 선택되어 표시된다. 여기서 원하는 파일을 더 추가하거나 삭제할 수 있다.
마침(Finish) 버튼을 누르면 데이터베이스가 생성된다.

데이터베이스를 생성한 다음, 주메뉴에서 카탈로그 > TM을 사용하여 자동 번역 메뉴를 이용하여 TM 기능을 사용할 수 있다.
** 주의 **
TM 기능을 이용하여 번역된 문자열은 모두 모호한 번역(fuzzy)으로 표시된다.
이 기능을 이용하면, 간단한 문자열의 경우 아주 편리하게 번역 작업을 진행할 수 있으며, 무엇보다 용어의 통일성을 유지하는데 큰 도움이 된다.
혼자 번역을 할 때도 그러하지만, 여러 사람이 공동으로 번역을 하다보면 같은 단어를 다르게 번역하는 경우가 종종 생긴다. 그리고 번역을 처음하는 경우, 어떤 단어를 선택해야 할지 난감한 경우가 있다. 이럴때 TM 기능을 이용해 이전 번역자들은 어떻게 번역했는지 확인할 수 있고, 통일된 용어를 사용함으로써 사용자들로 하여금 혼란스럽지 않게 만들 수 있다.
poedit 에서 파일 > 선택 사항 메뉴를 선택하면 다음과 같은 대화 상자가 호출된다. 번역본 기억 장치 탭을 눌러 아래 그림과 같이 만든다.
DB 경로에는 데이터베이스 파일이 저장될 경로를 선택해 주고, 언어에서 ko 를 선택한 다음, 데이터베이스 생성 버튼을 누른다.
마침(Finish) 버튼을 누르면 데이터베이스가 생성된다.
데이터베이스를 생성한 다음, 주메뉴에서 카탈로그 > TM을 사용하여 자동 번역 메뉴를 이용하여 TM 기능을 사용할 수 있다.
** 주의 **
TM 기능을 이용하여 번역된 문자열은 모두 모호한 번역(fuzzy)으로 표시된다.





















처음 Poedit를 사용할 때 TM (Translation Memory)의 사용 방법을 정확히 알지 못 했는데 몇개의 글을 번역하면서 사용법을 알게 되고 그 단점도 알게 되었다. 항상 먼저 글을 남겨 주셔서 저의 일을 덜어 주시는 군요. ㅋㅋ
글을 계획하고 계셨는데, 비슷한 주제로 먼저 써버린게 아닌가 하는 생각도 드네요. 쓰신 글이 있으시다면 함께 올려주시면 어떨까 싶습니다. :)
따로 정리된 것은 없습니다. 저는 주로 위키(Wiki)로 작업을 하다 보니 그냥 그때 그때 생각날 때마다 적어 두어서. 글을 올리려고 하면 새로 정리가 필요하죠.