리눅스에서 이런저런 프로그램을 쓰다보면 난감할 때가 많습니다. 분명 일부 글자는 한글로 잘 뜨지만 중간중간 영어나 다른 외국어가 끼어있는 경우도 있고 가끔 멀쩡히 한글로 뜨던것이 갑자기 영어로 덜컥 나오면서 멘붕을 먹게하는 경우도 있지요.


사실 오픈소스 프로그램들은 대부분 i18n이라해서 국제화 방식을 사용합니다. 시스템의 국가설정을 읽어서 이에 맞춰 해당 언어로 인터페이스를 갖추는 것 입니다. 윈도우에서도 반디집이나 한글2007 이후 버전이 국가 설정을 읽어서 언어 설정을 자동으로 하는 대표적인 프로그램입니다. 윈도우 영문판을 설치하거나 국가설정을 영어로 맞추면 반디집의 인터페이스가 자동으로 영문으로 바뀌는 것을 확인 할 수 있습니다.


물론, 옛날 옛적에 만든 프로그램은 그런 것을 1도 신경 안 썼기 때문에 한글판이면 한글판이 필요했고 영문판과 한글판의 라이센스가 따로 논다던지 하는 문제가 있었는데(대표적인 예가 포토샵 구버전 영문판 구매하고 한글판 설치하면 안 먹힙니다.) 요즘은 어느 국가에서 구입을 하더라도 한국어 인터페이스를 갖출 수 있는 것입니다.


문제는...


상용 프로그램이면 몰라도 커뮤니티의 기여와 여러사람들의 노력으로 굴러가는 오픈소스 프로그램 특성상 기존 번역가가 빠지면 번역이 옛날 버전 수준으로 만들어 진다는 점입니다.


대표적인 프로그램이 PlayonLinux입니다.


분명 기본 인터페이스는 한국어로 잘 나옵니다.


어디는 한국어화가 되어있고 어디는 한국어화가 안 되어있는 난감한 상황, 이러고 3년을 썼다.

하지만 특정 인터페이스는 영문으로 출력되는 것을 알 수 있습니다. 그것도 제일 중요한 프로그램 설치 중 메시지는 100% 영문입니다. 심지어 일부 메시지는 한국어와 영어가 혼재되어있습니다.


이유는 PlayonLinux는 계속 업데이트 되었지만 업데이트되며 추가된 텍스트가 번역이 되지 않은 것입니다. 사실 이런 프로그램이 상당히 많습니다. 그러니까 해당 언어권 사람의 기여가 필요합니다.


그러려면 우선 po파일에 대하여 알려드려야겠네요.


po파일은 말 그대로 번역파일입니다. 소스에서 문장을 뽑아서 이를 적용할 수 있게 만들어진 파일입니다. 그냥 UTF8 혹은 UTF16으로 인코딩된(당연히 유니코드계열 인코딩이겠지요. 멍청이가 아닌 이상) 텍스트 파일입니다.


이런 식으로 구성되어 있습니다. (예시는 PlayonLinux의 ko.po입니다.)


# Korean translation for playonlinux
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the playonlinux package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: playonlinux\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2015-08-31 19:00+0200\n"
"PO-Revision-Date: 2014-11-25 09:09+0000\n"
"Last-Translator: Hyun-Seok, Choi <chs1217@gmail.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2015-09-01 05:11+0000\n"
"X-Generator: Launchpad (build 17690)\n"

#: Capture plugin:2, Detour plugin:4
msgid "Which application do you want to apply the modification to?"
msgstr "어느 어플리케이션에 수정 사항을 적용할 것 입니까?"

#: Capture plugin:3
msgid ""
"This plugin wil allow you to capture you applications under PlayOnLinux"
msgstr "이 플러그인은 PlayOnLinux 아래의 어플리케이션을 캡쳐할 수 있습니다."

#: Capture plugin:4
msgid "Capture menu (OpenGL)"
msgstr "캡쳐 메뉴(OpenGL)"

#: Capture plugin:5
msgid "Capture menu (not OpenGL)"
msgstr "캡쳐 메뉴(not OpenGL)"


제일 위쪽에 언제 누가 번역을 했는지 적혀있고 아래로 내려오면서 실제 번역될 문장과 번역된 문장이 있는 것을 알 수 있습니다.


그럼 이 po파일만 있으면 되느냐 하면 그건 아니고 이것을 mo파일로 컴파일 해야합니다.

msgfmt란 프로그램이 그런 역할을 합니다.


msgfmt XXX.po -o XXX.mo

이렇게 하면 mo 파일이 만들어집니다.


/usr/share/locale 여기로 들어간 다음 하위 폴더를 찾아보면 수많은 mo파일들을 볼 수 있는데 이것이 바로 지금까지 우리가 언어팩이라며 설치한 수많은 국가들을 위해 만들어진 파일입니다. 여기에는 Gnome이나 MATE, KDE의 프로그램도 있고 심지어 apt-get의 메시지도 번역되어 들어가 있습니다.


/usr/share/locale/ko/LC_MESSAGES

여기에 가면 수많은 한국어 번역 파일들이 있고 그렇다는 것은 여기에 파일명에 맞춰서 mo파일을 넣으면 해당 프로그램이 한국어로 뜨게 된다는 것을 의미합니다.


그리고 대다수 프로그램들은 i18n지원을 위해서 pot파일이라하여 po파일의 템플릿을 제공합니다.


즉, 그냥 양식을 줄테니 번역만 해서 달라 이겁니다.


그런데 이걸 그냥 텍스트에디터로 작업하려고 하면 노가다가 극심하겠지요. 심지어 기존 번역이 부족해서 추가하려고 한다면? 맨 땅에 pot파일을 가져와서 처음부터 다시 번역을 해야 할까요? 그랬다간 번역자들이 죽어 나갈겁니다. 그래서 po편집전문 프로그램이 있습니다.


poedit https://poedit.net/


아주 간단합니다. 이것을 쓰면 됩니다. 심지어 한글로도 잘 번역되어 있으니(당연하다면 당연한 것일까요?) 편하게 쓸 수 있습니다. 한국에서는 Wordpress로 자체 사이트 운영하는 사람들이 쓴다고 소개하던데 본래 목적은 i18n지원이 목적입니다.


sudo apt install poedit


이렇게 하면 설치됩니다.


당연하게도 한국어 번역이 잘 되어있다. 만약 번역이 안 된 부분이 있다면 poedit으로 poedit의 한국어화를 하도록 하자.

그냥 po파일을 불러와서 편집만 하면 되는 아주 간단한 프로그램입니다. 윈도용은 유료니 뭐니 하는 이야기가 있던데 그건 협업 시스템 이야기고 우리는 그냥 개인적으로 이용할 테니 무시하도록 합시다.


일단 하나를 예시로 들어봐야겠네요.


아까 위에서 말했던 PlayonLinux를 이용해보도록 하겠습니다.

보통 오픈소스 프로그램들은 github에서 소스코드를 제공합니다. 물론 po파일도 같이 제공합니다.


PlayonLinux의 po파일들은 여기 있군요.

https://github.com/PlayOnLinux/POL-POM-4/tree/master/lang/po


보통 소스트리에서 po란 폴더 혹은 lang이란 폴더가 po파일들이 있는 폴더일 가능성이 높습니다. 여기서 두 가지 파일을 다운로드 받아봅시다.


하나는 번역이 부족한 한국어 번역파일 ko.po

다른 하나는 프로젝트에서 제공하는 템플릿인 pol.pot 파일입니다. 보통 템플릿 파일은 확장자를 pot으로 만듭니다. 만약 pot이 없다면 en.po를 이용해야 합니다. (그런데 보통은 pot을 제공합니다. 정 없으면 소스트리에서 gettext를 통해 pot을 만들어야합니다.)


Raw버튼을 누르면 github에서 실제 파일이 다운로드 가능하다.

해당 파일을 github에서 연 뒤에 RAW버튼을 누르면 파일을 다운로드 받을 수 있습니다. 파일이 다운로드 안되고 그냥 열린다면 오른쪽 버튼을 누르고 다른 이름으로 저장을 누르면 됩니다. 어차피 그냥 일반 텍스트 파일이니까요.


그럼 이것을 poedit으로 열어봅시다.


poedit을 열고 ko.po파일을 열어봅시다.

보시면 아시겠지만 번역은 완벽히 된 것처럼 보입니다. 하지만 이것은 오래된 버전에 맞춰져서 만들어진 번역입니다. 최신판에 맞춰서 바꿔야겠지요.


카탈로그 - POT파일로 업데이트를 누르고 다운로드 받은 pol.pot파일을 선택하면...


번역 숙제가 와르르 쏟아집니다.

이제 이것은 숙제입니다. 일일이 노가다해서라도 번역을 해야합니다. 그러고 나면 자동으로 mo파일이 만들어집니다. 저장 버튼을 누르면 알아서 컴파일까지 다 해주더군요.


번역이 완료된 뒤에 해당 mo파일을 pol.mo로 바꾸고 /usr/share/locale/ko/LC_MESSAGES 여기에 넣으면...


PlayonLinux의 번역이 완료됩니다. 가능하다면 po파일을 해당 프로젝트 관리자에게 보내거나 직접 github에 branch해서 올리는 것도 방법입니다. 그러면 관리자가 해당 branch를 master로 합쳐줄 수 있겠지요.


다른 프로그램도 비슷합니다. 아직 한국어 번역이 되지 않은 수많은 프로그램을 이런 식으로 한국어화 할 수 있습니다. 예외가 몇 가지 있기는 대부분은 이렇게 번역이 가능합니다. 심지어 이것을 웹으로 할 수 있게 만든 weblate란 프로젝트도 있습니다. 이쪽은 CSV형태로도 가능하더군요!


영어 능력자이신 한국인, 취미로 영어 번역을 하시는 분, 영어를 쓰시면서 한국어가 되시는 분, 그냥 한국어가 되는 영어권 사람 등등 그리고 오픈소스를 사랑하는 한국어 사용자 분들 이런 식으로 작은 기여를 통해 오픈소스 세계의 한국을 만들어봅시다.

,