GPGrelay 한국어 지원 DLL 만드는 방법
작업에 필요한 추가적인 패키지/프로그램들은 아래와 같습니다.
도구들이 준비되었으니 이제
GPGrelay 프로젝트 홈페이지에서 GPGrelay의 소스코드 배포판을
구해서 압축을 풀고 아래의 디렉토리를 엽니다.
(프로젝트디렉토리)\GPGrelayLanguageDLL\GPGrelay.l10n
번역에 필요한 데이터는 모두 이 디렉토리에 들어있습니다.
우선 GPGrelay.lang.c 파일로부터 gpgrelay.ko.po 파일을 만듭니다.
xgettext -ogpgrelay.ko.po GPGrelay.lang.c
xgettext는 GNU gettext 패키지에 들어있는 프로그램이고,
입력파일(프로그램 소스파일)로부터 번역할만한 문자열들을 자동으로
추려내는 기능을 합니다. 원래 소스트리를 통째로 스캔하면서 문자열을
추려내는 식으로 사용하는 모양인데, GPGrelay의 경우 개발자가
gpgrelay.lang.c 파일에 모든 번역대상 문자열을 미리 따로 추려놓았으므로
이 파일만 입력파일로 지정하면 됩니다.
이렇게 만들어진 gpgrelay.ko.po 파일은 메시지 카탈로그 파일이라고
부르며 원본문자열/번역문자열이 짝을 이뤄 나열된 형태를 가집니다.
지금은 원본문자열(영문)만 추려낸 상태지만 이 파일을 편집하여
번역문자열들을 추가한 다음 적절한 후처리 과정을 거치면 메시지
한글화가 이루어지게 됩니다.
.po 파일은 텍스트 편집기로 수정해도 되지만, 이런 편집을 위한 전용
프로그램이 있는데 바로 poedit입니다. poedit의 메뉴를 보면 알 수 없는
기능들이 좀 있기는 하지만 GPGrelay 번역에는 사용되지 않습니다.
GPGrelay 번역에는 오직 poedit의 "편집기능"만을 이용합니다.
poedit을 실행하고 위에서 만든 gpgrelay.ko.po 파일을 연 다음
Catalog/Settings 메뉴를 골라 아래 그림처럼 설정해줍니다.
반드시 이렇게 설정해야 하는 것은 아니고, 그냥 제가 다른 언어의
.po 파일을 참조해서 그렇게 했을 뿐입니다.
(Charset 항목을 Windows-949로 했는데 원래는 euc-kr로 하거나
아예 utf-8로 사용하는 것이 더 바른 설정일 것 같습니다만 그렇게
할 경우 poedit에서 제대로 처리를 못하거나 후처리 과정에서 문제가
발생하기에 이렇게 했습니다)
이제 남은 것은 실질적인 번역작업입니다. 만약 옛버전의 번역본이
있다면 바닥부터 새로 번역할 필요없이, 구버전 .po 파일에 새버전의
변경/추가분만 반영한 후 작업하면 작업시간이 단축될 것입니다.
GNU gettext 패키지의 msgmerge 프로그램을 이용하면 됩니다.
ren gpgrelay.ko.po gpgrelay-new.ko.po
msgmerge -ogpgrelay.ko.po gpgrelay-old.ko.po gpgrelay-new.ko.po
이렇게 하면 옛버전과 새버전을 비교하여 변경/추가분을 찾아내는
골치아픈 작업이 자동으로 이루어집니다. 이렇게 만든 gpgrelay.ko.po를
poedit에서 읽어들인 화면은 아래와 같습니다. 파란색은 아직 번역되지
않은 문자열, 붉은색과 노란색은 번역이 덜된 문자열, 흰색은 번역이 끝난
문자열입니다. 화면 아래쪽에는 영문메시지와 그에 해당하는 한글메시지를
보여주는 작은 창들도 보입니다. 그 창을 통해 편집을 하면 됩니다.
주의할 점은 %s, \n같은 문자들이 원문에 등장하면 번역문에도 그것들이
적절히 배치되어야 한다는 것입니다. 그것들을 제대로 하지 않으면
붉은색으로 표시됩니다. 하다보면 저절로 알게 됩니다...
번역작업을 마치고 최종적인 gpgrelay.ko.po 파일이 작성되면 아래와 같은
후처리 작업을 해야 합니다. 원래는 .po 파일을 컴파일(?)하여 .mo 파일로
만든 후... 어쩌구 (저도 잘 모릅니다) ... 과정을 거치는 것이 보통인데
GPGrelay에서는 좀 달리 처리합니다. 이것 역시 저도 잘 모릅니다.
respotrans.exe GPGrelay.res gpgrelay.ko.po GPGrelay.lang.res 1042
reshacker.exe -add GPGrelay.lang.dll.stub, GPGrelay.lang.dll, GPGrelay.lang.res,,,
upx --best GPGrelay.lang.dll
이런 후처리 과정을 GPGrelay 개발자인 Andreas John이 Translate.bat
파일에 정리해 놓았는데 이 배치파일을 사용하려면 배치파일 안에서
DLLSTUB, TRANSDLL, PO, TARG_LANG, RESHACKEREXE, UPXEXE 등의 변수
설정부분을 적절히 수정해야 합니다.
그냥 위의 세줄을 배치파일로 만들어 사용해도 무방합니다.
(단, upx 처리는 실행파일 압축을 위한 것으로 필수가 아닌 선택사항입니다)
이런 처리를 하고나면 드디어 GPGrelay.lang.dll이 만들어지고 이 파일을
GPGrelay.exe 파일과 같은 디렉토리에 넣고 실행시키기만 하면 한글화가
끝나게 됩니다.