블로터 다음세대재단
  • 아이티캐너스
  • 오픈노하우
  • 소리아카이브
  • e하루616
  • 만드는 사람들
  • 함께해요
  • 궁금해요
  • 아카이브
  • 태그
  • 오픈램프 소개
 

관련 글 목록


이제 마지막으로 힘들게 번역한 한글파일을 배포해보자.
배포하는 방법은 총 세 가지 정도가 있다. 하나는 배포 안하기, 두번째는 개인 사이트나 커뮤니티를 통해 배포하기, 그리고 세번째는 원 프로그램 프로젝트에 포함시켜 배포하기. 물론 절대적으로 권장되는 것은 세번째이다.

많은 사람들이 번역을 한 뒤에 이 과정을 빼먹어서 열심히 번역한 작업물을 그냥 사장시키는 경우가 많다.
번역을 했으면 꼭 메인 프로젝트에 업로드를 하자!



1. 번역 재검토(번역 가이드와 ko-po-check)
이제까지는 단순 번역에 대한 이야기를 해왔지만, 이 작업물을 배포하려면 다른 부분까지 신경을 써야 한다.
즉, 이 번역이 과연 누구를 위한 것인가? 라는 부분이다.

배포를 고려하지 않았다면 아무래도 관계없다. 하지만 배포를 고려한다면 다음과 같은 사항을 준수해야 한다.
  • 평이하고 자주 사용되는 단어를 사용하였는가? : 지나친 외국어 음차도 문제지만, 지나친 순한글화도 문제이다.
  • 기존의 프로그램들에서 사용한 단어나 번역 스타일과 지나치게 다르지는 않은가?
  • 번역 가이드에 맞춰 번역을 하였는가?


이러한 내용은 직접 소스를 재 검토하거나 번역 가이드와 ko-po-check 를 통해 확인해 볼 수 있다.

사실 번역가이드는 번역을 실제로 행하기 전에 보는 것이 좋은데, 이렇게 뒤늦게 이야기하는 것은 초보자에게 부담을 주지 않기 위해서이다. 필자는 처음은 자기 멋대로 번역하고, 그 후에 자신의 스타일과 많은 사람들이 권장하는 스타일의 차이를 확인하고 수정하는 것을 권한다. 특히 대부분의 경우 1000 스트링 미만의 작은 프로그램을 번역하기 때문에 나중에 고친다고 해도 큰 부담이 가지는 않으므로 퇴고를 한다는 느낌으로 뒷 부분에서 이야기를 한다.

필자가 권고하는 번역 가이드는 다음과 같다.
  - 모질라 한국어 스타일 가이드
  - 스타스위트 한국어 스타일 가이드
  - 한국어 지역화 스타일 가이드


가이드를 참고하여 잘못된 부분들을 수정했으면, 이젠 ko-po-check 를 이용해 기계적인 확인을 더 해 보자.
ko-po-check 는 그놈용 프로그램의 번역에서 자주 실수하는 부분들을 확인하기 위한 프로그램이다. 이는 리눅스 환경에서 동작하지만, 윈도우즈에서도 사용할 수 있다.
  - ko-po-check 다운로드
  - 윈도우에서 ko-po-check 사용하기

ko-po-check 시에 자주 등장하는 오류는 '~을(를)' 등의 조사부분과 mnemonic 이다. mnemonic 은 메뉴 옆에 있는 빠른 접근키로, 예를 들어 "저장(S)" 가 있다면, S 가 바로 mnemonic 이다.


2. 패치 파일 만들기
번역한 언어팩 파일을 원 프로그램의 소스에 포함시키려면 패치를 만들어 관련 프로젝트에 보내주어야 한다.
그런데 언어팩의 경우 사실 반드시 패치파일을 작성할 필요는 없다. 그저 번역 소스인 .po 파일을 보내주기만 해도 된다. 다만 패치를 요구하는 프로젝트도 있으니 알아두는 편이 좋다. 참고로 필자의 경우 최초 번역물을 보낼때 3가지를 보내곤 한다. 원 번역본, 수정본, 패치)

패치를 작성하는 요령은 간단하다.
$ diff -uNr new_ko.po old_ko.po > ko.patch
이러면 두 파일간의 차이점이 ko.patch 파일에 예쁘게 정리된다. 패치를 요구하는 경우 이 파일을 보내면 된다.


3. 프로젝트별 번역 기여 방법 알아하기
프로젝트마다 번역물을 다루는 방식이 조금씩 다르다.
예를 들어 단순히 주요 개발자 이메일을 통해 새 번역물을 받는 경우도 있고, 메일링을 통해 보내야 하는 경우도 있고, 커뮤니티 게시판을 이용해야 하는 경우도 있다. 해당 프로젝트 사이트를 방문하여 번역 기여 방법에 대한 부분을 찾아보자.

사용자 삽입 이미지

대부분의 프로젝트에는 번역을 비롯한 각종 기여에 대한 안내서가 잘 작성이 되어 있다.
해당 내용을 잘 따라하며, 혹시 없을 경우에는 제작자나 포럼에 문의를 하자. 문의할때는 꼭 파일을 첨부하고, 파일은 다른 곳에 올려 링크로 첨부하는 쪽이 좋다.


4. 기타..
프로그램을 번역하는 것도 중요하지만, 정작 더 중요한 것은 해당 프로그램에 대한 지속적인 관심이다.
그리고 누구든 한 번에 100% 완벽한 번역을 할 수는 없다. 번역 자체의 미완성성도 있지만, 각 문자열이 실제로 어디서 사용되는지 모르고 번역하는 경우가 많기 때문에, 프로그램 UI 번역은 1차 번역 이후에 많은 수정을 요구하게 된다.

따라서 번역을 완성한 뒤에, 번역물이 메인 프로그램과 함께 배포된 후라도 지속적으로 관심을 갖으며 오역이 없는지 확인하는 것이 좋다. 꾸준히 오역을 확인하면서 꾸준히 고쳐나가는 것. 실제 번역도 중요하지만 이 또한 그 무엇보다 중요한 일이다.
Writer profile
author image
'To live like a dust..'라는 블로그를 운영하고 있습니다. 김프(GIMP), 오픈오피스(OpenOffice.org), 우분투(Ubuntu)와 관련해 활동을 하고 있으며, 프로그램과 문서의 한글화(번역)에 관심을 갖고 있습니다.

트랙백 주소 :: http://openlamp.co.kr/trackback/119

  1. |
    2009/04/13 08:45

    오호! 번역 가이드라는 것이 있었군요. 번역에 많은 도움이 되겠습니다.

    한국어 PO 파일 검사툴(ko-po-check)도 며칠전에 북마크 해 두었는데 사용법까지 올리셨네요. 감사 드립니다.

     

관련 글 목록


번역을 마무리했으면 제대로 번역이 되었는지 테스트를 해야 한다.
대부분의 번역이 단순 문자열 변환이기 때문에, 실제 기능이나 설명과 일치하는지 확인하는 작업이 반드시 필요하다.


1. 기존에 ko.po 가 있는 경우
이는 프로그램에 이미 한글 지원이 적용되고 있는 경우로 한글 파일을 교체해주기만 하면 된다.

윈도우 : 프로그램 설치 폴더\locale\ko\LC_MESSAGES 로 .mo 파일을 복사한다.
GIMP GAP 이라면 C:\Program Files\GIMP-2.0\share\locale\ko\LC_MESSAGES 에 gimp20-gap.mo 란 이름으로 mo 파일을 복사한다.

리눅스 : 윈도우와 마찬가지로 언어 파일이 있는 곳에 mo 파일을 덮어쓰기로 복사한다.
/usr/share/locale/ko/LC_MESSAGES 혹은 /usr/share/locale-langpack/ko/LC_MESSAGES


2. 기존에 ko.po 가 없는 경우 - 1
이는 프로그램 소스를 가지고 재컴파일을 해야 한다. 하지만 그 전에 간단하게 확인해 볼 수 있는 편법이 있다.
바로 한글 언어파일을 기존의 다른 언어 파일로 위장하는 것이다. 예를 들어 fr.mo 가 이미 있다면, ko.mo 를 fr.mo 로 변경하여 복사한뒤, 프로그램의 언어 설정을 프랑스어로 바꾸면 한국어가 적용되어 표시된다.

리눅스의 경우 export=fr 이라고 설정해 준뒤 프로그램을 실행하면 해당 언어로 변경된다.


3. 기존에 ko.po 가 없는 경우 - 2
프로그램을 재컴파일해서 확인하는 방법이다.
윈도우용 프로그램을 위한 컴파일은 너무 복잡하기 때문에 이 문서에서는 생략하고, 리눅스용 프로그램 컴파일만 설명한다. 그리고 그 중에서도 우분투에서의 컴파일을 예로 한다.

컴파일에 필요한 기초 프로그램을 설치한다.
$ sudo apt-get install build-essential

컴파일할 프로그램에 의존적인 패키지들을 설치한다.
$ sudo apt-get build-dep gimp

소스 안에서 지원 언어에 ko 를 추가한다.
configure.in 파일을 열어, ALL_LINGUAS 부분에 ko 를 추가해 준다.
$ gedit ./configure.in

소스 안의 INSTALL 과정에 따라 인스톨하거나 패키징을 한다. 일반적으로는 다음과 같은 과정을 통한다.
$ ./configure
$ make
$ sudo make install


4. 컴파일이 안되는 경우
컴파일 에러가 나거나, 리눅스 환경을 사용할 수 없거나, 윈도우용 전용 프로그램인 경우 등 컴파일을 해서 확인할 수 없는 경우가 종종 있다. 이런 경우에는 별 수 없다. 확인 불가.

하지만 걱정할 필요는 없다. 오픈 소스의 모토(?)가 무엇인가?
Release Early, Release Often.

그렇다. 일단 질러놓고 보는거다. 수정은 그 다음에.. -_-;

Writer profile
author image
'To live like a dust..'라는 블로그를 운영하고 있습니다. 김프(GIMP), 오픈오피스(OpenOffice.org), 우분투(Ubuntu)와 관련해 활동을 하고 있으며, 프로그램과 문서의 한글화(번역)에 관심을 갖고 있습니다.

트랙백 주소 :: http://openlamp.co.kr/trackback/118

  1. |
    2009/04/13 08:31

    음, 이런 숨은 절차가 더 있었군요. 오픈소스 한글화라는 것이 체계적인 절차에 따라 진행되어야 하는 사항이군요.

  2. |
    2011/12/21 17:06

    <P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><A name=OLE_LINK66></A><A name=OLE_LINK65><SPAN style="mso-bookmark: OLE_LINK66"></SPAN></A><A href="http://www.mkforsales.com/michael-kors-hot-sale-c-175.html"><U><FONT color=#0000ff><FONT size=3><SPAN style="mso-bookmark: OLE_LINK65"><SPAN style="mso-bookmark: OLE_LINK66"><SPAN lang=EN-US>www.mkforsales.com</SPAN></SPAN></SPAN><SPAN style="mso-bookmark: OLE_LINK65"><SPAN style="mso-bookmark: OLE_LINK66"></SPAN></SPAN></FONT></FONT></U></A><SPAN style="mso-bookmark: OLE_LINK66"></SPAN><SPAN style="mso-bookmark: OLE_LINK65"></SPAN><SPAN lang=EN-US><FONT size=3> <SPAN style="mso-spacerun: yes">&nbsp;</SPAN></FONT></SPAN><SPAN class=apple-style-span><SPAN style="FONT-FAMILY: Arial; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-weight: bold" lang=EN-US>Michael Kors Hot Sale</SPAN></SPAN></P>
    <P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="http://www.mkforsales.com/michael-kors-new-arrivals-c-173.html"><U><FONT color=#0000ff size=3>www.mkforsales.com</FONT></U></A><SPAN style="mso-spacerun: yes"><FONT size=3>&nbsp; </FONT></SPAN></SPAN><SPAN class=apple-style-span><SPAN style="FONT-FAMILY: Arial; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-weight: bold" lang=EN-US>Michael Kors New Arrivals</SPAN></SPAN></P>
    <P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="http://www.mkforsales.com/michael-kors-hamilton-tote-c-105.html"><U><FONT color=#0000ff size=3>www.mkforsales.com</FONT></U></A><SPAN style="mso-spacerun: yes"><FONT size=3>&nbsp; </FONT></SPAN></SPAN><SPAN class=apple-style-span><SPAN style="FONT-FAMILY: Arial; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-weight: bold" lang=EN-US>Michael Kors Hamilton Tote</SPAN></SPAN></P>
    <P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN lang=EN-US><A href="http://www.mkforsales.com/michael-kors-satchels-c-106.html"><U><FONT color=#0000ff size=3>www.mkforsales.com</FONT></U></A><SPAN style="mso-spacerun: yes"><FONT size=3>&nbsp; </FONT></SPAN></SPAN><SPAN class=apple-style-span><SPAN style="FONT-FAMILY: Arial; BACKGROUND: white; COLOR: black; FONT-SIZE: 10pt; mso-bidi-font-weight: bold" lang=EN-US>Michael Kors Satchels</SPAN></SPAN></P>

  3. |
    2011/12/21 17:06

    [url=http://www.mkforsales.com/michael-kors-hot-sale-c-175.html][U]www.mkforsales.com[/U][/url] &nbsp;Michael Kors Hot Sale
    [url=http://www.mkforsales.com/michael-kors-new-arrivals-c-173.html][U]www.mkforsales.com[/U][/url]&nbsp; Michael Kors New Arrivals
    [url=http://www.mkforsales.com/michael-kors-hamilton-tote-c-105.html][U]www.mkforsales.com[/U][/url]&nbsp; Michael Kors Hamilton Tote
    [url=http://www.mkforsales.com/michael-kors-satchels-c-106.html][U]www.mkforsales.com[/U][/url]&nbsp; Michael Kors Satchels

     

관련 글 목록


1. 소스 파일 다운로드
번역을 하기 위해서는 우선 프로그램 소스파일을 다운로드 받아야 한다. 소스 파일은 대부분 해당 프로그램의 홈페이지에서 다운로드 받을 수 있다. 여기서는 예제로 GAP(GIMP Animation Package)를 사용한다.
그놈(Gnome) 관련 프로그램이라면, 해당 프로그램의 소스 전체를 받는 대신, po 파일만 다운로드 할 수도 있다. 다운로드 주소 : http://l10n.gnome.org/languages/ko/all/ui/


2. 소스 파일 분석
우리는 번역을 할 것이기 때문에, 소스 파일 중에서 번역과 관계된 부분만을 살펴본다.
이에 대한 자세한 내용은 『내 손으로 한글화를 해보자!!』를 참조한다.

김프 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 로 저장한다.


5. POedit 로 po 파일 편리하게 편집하기
po 파일을 위한 전용 편집기에는 여러 가지 프로그램이 있다. 하지만 개인적으로 멀티 플랫폼(Windows, Mac, Linux)을 지원하며, 한글 입출력이 자유롭고, TM(Translation Memory) 기능을 지원하는 POedit 를 많이 권한다.

poedit 의 각 메뉴에 대한 설명은 『다국어 처리를 위한 PO 파일 편집기, poedit 메뉴』에 자세히 설명이 되어 있다.

사용자 삽입 이미지사용자 삽입 이미지

POedit 를 이용하면
  • 다른 외적인 문제나 실수를 고려하지 않고, 단순히 번역작업에만 집중할 수가 있다.
  • 또한 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)으로 표시된다.


Writer profile
author image
'To live like a dust..'라는 블로그를 운영하고 있습니다. 김프(GIMP), 오픈오피스(OpenOffice.org), 우분투(Ubuntu)와 관련해 활동을 하고 있으며, 프로그램과 문서의 한글화(번역)에 관심을 갖고 있습니다.

트랙백 주소 :: http://openlamp.co.kr/trackback/115

  1. |
    2009/04/13 00:30

    처음 Poedit를 사용할 때 TM (Translation Memory)의 사용 방법을 정확히 알지 못 했는데 몇개의 글을 번역하면서 사용법을 알게 되고 그 단점도 알게 되었다. 항상 먼저 글을 남겨 주셔서 저의 일을 덜어 주시는 군요. ㅋㅋ

    • |
      2009/04/13 03:22

      글을 계획하고 계셨는데, 비슷한 주제로 먼저 써버린게 아닌가 하는 생각도 드네요. 쓰신 글이 있으시다면 함께 올려주시면 어떨까 싶습니다. :)

  2. |
    2009/04/13 08:29

    따로 정리된 것은 없습니다. 저는 주로 위키(Wiki)로 작업을 하다 보니 그냥 그때 그때 생각날 때마다 적어 두어서. 글을 올리려고 하면 새로 정리가 필요하죠.

     

본 글은 필자가 개인 블로그에 올렸던 글로, 최근 시리즈로 글을 이어내면서 이곳에 다시 정리해서 쓰는 글이다. 강좌라고 하기에는 창피한 글이지만, 꼭 필요한 글이라 생각되어 이곳에 올린다.


프로그램 한글화 과정은 크게 네 가지로 나눌 수 있다.

번역에 관심있는 많은 사람들이 1번에서 많이 포기하고, 4번을 하지 않아 애써 번역한 것을 사장시키는 경우가 많다. 따라서 이 전 과정을 모두 설명함으로써 번역에 관심이 많은 사람들의 참여가 조금 더 활발하게 이루어지기를 기대해 본다.



1. i18n 과 l10n
Internationalization : 번역하기를 "국제화" 라고 한다. 이 단어는 패키지화 된 프로그램이 있을때 그 프로그램이 다양한 언어를 지원하도록 만들어진 것을 의미한다. 이는 다시말해 영어로 된 문자열을 사용하여 이루어지는 행동과, 영어 이외의 다른 언어로 이루어지는 행동이 "차이 없는" 일반화 과정(Generalization process)이라고 할 수 있다. 프로그램 개발자는 자신의 프로그램에 국제화를 적용할때 다양한 기술을 사용할 수 있는데, GNU gettext는 이들 표준중에 하나를 제공하는 것이라고 할 수 있다.

Localization : 번역하기를 "지역화" 라고 한다. 지역화는 국제화(I18n)가 모집합인 집합 구성원으로 (쉽게 말해 이미 국제화가 된 소프트웨어만 국제화를 진행 할 수 있다는 뜻이다), 관련된 정보를 특정 지역의 언어/문화에 관련된 행동양식에 맞추어 (예를 들자면 화폐단위, 지역시간 등) 사용할 수 있게 하는 것이라고 할 수 있다. 이는 특정방법으로 이미 국제화로 일반화된(Generalized) 프로그램을 부분화시키는 작업이라고도 할 수 있다. 이들 지역화의 구분은 특별한 환경 변수를 바탕으로  프로그램 실행전에 "어느 로케일에서 사용되고 있는지"를 파악, 실행시간대에 그것을 적용하게 하는 것이다.

-from 그놈한국, Gettext를 사용한 I18N 학습서


쉽게 말해
i18n = Internationalization = 프로그램 만들때 다국어를 지원하도록 만든 것.
l10n = Localization = i18n 이 지원되는 프로그램에 다국어 모듈을 넣는 것.


2. i18n 방식
기본적으로 우리는 i18n 이 지원되는 프로그램, 즉 다국어를 지원하는 프로그램을 가지고 l10n, 즉 한글화를 해야한다. 다국어 지원도 안되는데, 리소스핵 등의 프로그램으로 한글화하는 것은 여기서는 논외로 한다.

i18n 을 구현하는 방식에는 다음과 같은 것들이 있으며, 이를 구분하는 방법은 해당 프로그램이나 소스의 파일을 보고 알아내야 한다. 언어팩 관련 파일은 po, language, lang, nls(Native Language Support) 등의 디렉토리에 저장되는 것이 일반적이며, 해당 디렉토리에 있는 파일들의 확장자를 보고 어떠한 방식을 사용하였는지 유추한다.
  • 사용자 삽입 이미지
    GNU gettext : GNU/Linux 로 대표되는 오픈소스 계열의 경우 대부분 GNU gettext 를 이용. 여기에 사용되는 파일은 .po .mo 등이 있으며, 사용되는 프로그램은 msgmerge, KBabel(KDE), Gtranslator(GNOME), PO Mode(EMACS), poedit 등이 있다.

  • 사용자 삽입 이미지
    Text file
    : 텍스트 파일로 i18n 을 구현한 프로그램도 꽤 볼 수 있는데, 이럴 경우 특별한 프로그램없이 메모장등의 간단한 텍스트 에디터로 언어파일을 만들거나 수정할 수 있다. 필자가 번역한 TYPsoft FTP server, Infra Recoder, Deepburner, Notepad++ 등 많은 프로그램들이 이러한 방식을 사용하고 있다.

  • 사용자 삽입 이미지
    QT
    : KDE 쪽의 QT 를 기반으로 하는 프로그램에서 자주 사용되는 형식으로, gettext 와 자유로운 변환이 가능하다. VirtualBox 나 scribus 등에서 사용하고 있다.



3. 그 외..
언어 파일이 텍스트 파일로 되어 있을 경우[footnote]이를 확인하는 가장 쉬운 방법은 메모장 등의 텍스트 에디터로 열어보는 것이다. 글자가 온전히 보이면 텍스트 파일로 된 것이다. -_-;[/footnote] 두 가지를 염두에 두어야 한다.
  1. 문자 인코딩 : 문자의 포맷이 ASCII 냐, UTF-8 이냐, 아니면 다른 방식인가하는 것을 알아두어야 한다. 애써 번역했는데, 인코딩이 안 맞아서 글자가 깨져나온다면 굉장히 속상한 일이 될 것이다.
  2. 파일 형식 : 이는 정확히 말하자면, OS간 파일 처리에 대한 부분이다. 텍스트 파일의 다음줄을 표현함에 있어 DOS 에서는 cr과 lf 두 바이트로 표현하는데 반해, 리눅스에선 lf 만 사용하므로, 이러한 차이가 차후에 문제가 될 수 있다. 하지만 근래의 고급 텍스트 에디터들은 이러한 형식을 자동으로 인식해주므로 사실은 크게 신경쓰지 않아도 되는 부분이다.

그 외로 전혀 알 수 없는 형식으로 i18n 을 구현한 프로그램을 접하게 되면, 포기하는 것이 정신건강에 이롭다. -_-; 아니면 프로그램 제작자에게 메일을 보내라. 정중한 표현으로 부탁을 하면 l10n에 필요한 것들을 보내주거나 참고할만한 문서를 알려줄 것이다.

프로그램 제작자와 연락이 안된다면.. 역시나 l10n 은 포기해야 한다. 개인적으로 컴파일해서 배포하는 것은 한계가 있기 때문이다. 하지만 그럼에도 불구하고(예를 들어 너무 좋은 프로그램이나, 프로그램 개발이 중단되었다던가.. 하는 경우) 꼭 한글화를 해서 배포를 하고 싶다면, 앞서 말한 것과 같이 언어 파일의 확장자를 가지고 구글신에게 기도하는 수밖에 없다. Good luck!


4. 마지막으로..
모든 일이 그러하듯 처음의 마음가짐과 그 마음가짐을 끝까지 이어가는 것이 그 무엇보다 중요하다. 어설픈 마음으로 시작해서 하다가 그만두는 것은 아예 시작하지 않은만 못하다.

하지만 필자는 "그럼에도 불구하고" 일단은 시작해보라. 라고 말해주고 싶다.

잘난체 하고 싶어서여도 좋고, 필자처럼 심심해서 시간때우기용이어도 좋다. 영어를 못해도 좋고, 필자처럼 번역기로 돌린지 의심받아도 좋다. -_-;

그것은 당신이 어떤 프로그램을 한글화하기로 마음먹었다면, 이미 당신은 기본적인 마음가짐의 자세를 갖추고 있기 때문이다. 그것만으로 충분하다. 그것을 끝까지 마무리지을 것인가, 아니면 중도에 포기할 것인가, 그리고 꾸준한 교정을 통해 번역의 질을 높일 것인가, 한번 하고 잊어버릴 것인가는 그 이후의 문제이다.

참고로 필자는 그렇게 시작한 김프 매뉴얼 번역을 2년째하고 있다.
지금까지 1/4 했으니까 최초 완역까지 6년 더 남은건가 ㄱ-



Writer profile
author image
'To live like a dust..'라는 블로그를 운영하고 있습니다. 김프(GIMP), 오픈오피스(OpenOffice.org), 우분투(Ubuntu)와 관련해 활동을 하고 있으며, 프로그램과 문서의 한글화(번역)에 관심을 갖고 있습니다.

트랙백 주소 :: http://openlamp.co.kr/trackback/114

  1. |
    2009/04/13 00:20

    음, 오늘 오픈소스 한글화와 관련된 사항을 정리해 보려고 했었는데 이미 정리를 하였네요. 많이 참고 하겠습니다.

    • |
      2009/04/13 03:21

      생각보다 정리가 잘 안되 산만한 것 같습니다. ^^;