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

다국어 번역을 위해 Gettext를 지원하는 PO 파일 편집기인 poedit를 사용하여 Apache Software License 2.0을 번역 하였다. 번역을 위해서 김윤수님이 번역한 아파치 사용 허가서 Version 2.0 번역 완료을 참조 하였다.

poedit에서 사용한 Translate Memory는 다음 번역 파일을 참조 하여 생성 하였다.


Apache Software License 2.0


그림:Cc license.png
  • 번역 버전 : Apache Software License 2.0 번역 버전 0.0.1 (2009.4.11 ~ 2009.5.10)

아파치 사용 허가서, 버전 2.0

아파치 사용 허가서 버전 2.0, 2004년 2월 http://www.apache.org/licenses/

사용, 재생산과 배포를 위한 규정과 조건

1. 정의

"사용 허가서"는 이 문서의 1절부터 9절에 제시되어 있는 사용, 재생산과 배포를 위한 규정과 조건을 의미 한다.

"사용허가자"는 사용 허가서를 허가하는 저작권자 또는 저작권자에 의해 지명된 실체를 의미 한다.

"법인"은 행동하는 실체와, 그 실체를 조정 하거나 조정 되는 또는 공통의 조정하에 있는 모든 실체의 연합체를 의미 한다. 이 정의에 따르면, "조정"은 (i) 계약 또는 다른 것에 의해 직간접적으로 그 실체를 조정 또는 관리 하는 힘 또는 (ii) 발행 주식 중 50% 이상의 소유권 또는 (iii) 그 실체로부터 수익을 얻는 소유권을 의미 한다.

"사용자"(또는 "사용자들")는 이 사용 허가서에 의해 허가된 권한을 행사하는 개인 또는 법인을 의미 한다.

"소스 코드" 형태는 소프트웨어 소스 코드, 문서 소스 그리고 구성 파일과 같이 개작에 편리한 형태를 의미 한다. 그렇지만 이 세가지 형태로 국한 되지는 않는다.

"목적 코드" 형태는 컴파일된 목적 코드, 생성된 문서, 여타 미디어 타입으로 변환된 형태를 포함한, 소스 코드 형태를 기계적으로 변환하거나 번역하여 얻은 임의의 결과물을 의미 한다. 그렇지만 이 세가지 형태로 국한 되지는 않는다.

"저작물"은 이 사용 허가서 하에 만들어진 소스 코드 또는 목적 코드 형태의, 저작물에 포함 또는 첨부된 저작권 공지에 의해 명시된 원저작자의 저작물을 의미 한다. (샘플은 아래 첨부에서 제공 한다.)

"2차 저작물"은 저작물에 기반한 (또는 파생된) 소스 코드 또는 목적 코드 형태의 저작물 그리고 전체적으로 볼 때 원저작자의 저작물에 편집상 개정, 주석 추가, 상세화 또는 기타 변경이 발생한 저작물을 의미 한다. 이 사용 허가서에 따르면, 2차 저작물은 저작물 그리고 2차 저작물로부터 분리된 형태 또는 인터페이스에 의해 단순히 링크된 (또는 이름에 의해 연결된) 저작물은 포함 하지 않는다.

"기여물"은 저작물 원래 버전 그리고 저작물 또는 그것의 모든 2차 저작물에 대한 수정 또는 추가 사항을 포함한 저작물로서, 저작권자가 직접 또는 저작권자에 의해 지명된 개인 또는 법인이 저작권자를 대신 하여 저작물에 포함 시켜 달라고 제출한 것을 의미 한다. 이 정의에 따르면, "제출됨"은 사용허가자 또는 그 대리인에게 보내진 전자적, 음성적 또는 기록적인 모든 대화물을 의미 한다. 대화물은 저작물에 관해 논의하고 개선할 목적으로 사용허가자 또는 사용허가자의 대리인에 의해 관리되는 전자 메일링 리스트, 소스 코드 제어 시스템 그리고 이슈 트래킹 시스템에서의 대화물을 포함하지만 이것에만 국한 되지는 않는다. 다만 저작권자에 의해 "기여물이 아님"이라고 명확하게 표시 또는 기록되어 있는 대화물은 포함 되지 않는다.

"기여자"는 사용허가자 그리고 사용허가자에게 기여물을 보내어 그 기여물이 저작물에 반영 되었을 때 그 기여물을 보낸 개인 또는 법인을 의미 한다.

2. 저작권 사용 허가.

이 사용 허가서의 규정 및 조건에 따라, 각 기여자는 사용자에게 소스 코드 또는 목적 코드 형태로 저작물과 그 2차 저작물을 재생산, 2차 저작물 준비, 일반 공표, 일반 실행, 하위 사용허가 그리고 배포 하기 위한 영구적인, 전세계적인, 비 독점적인, 비용 없는, 사용료 없는, 취소될 수 없는 저작권을 허가 한다.

3. 특허 사용 허가.

이 사용 허가서의 규정 및 조건에 따라, 각 기여자는 사용자에게 저작물을 제작, 사용, 판매 제안, 판매, 수입 그리고 전송할 수 있는 영구적인, 전세계적인, 비 독점적인, 비용 없는, 사용료 없는, 취소될 수 없는 (이 절에서 기술된 경우를 제외하고) 특허권을 허가 한다. 여기서 특허권은 공헌자에 의해 사용허가 될 수 있고, 기여물 단독 또는 저작물과 기여물의 결합에 의해 침해될 수 밖에 없는 특허 청구에 대해서만 적용 된다. 만일 사용자가 저작물 또는 저작물에 포함된 기여물이 직접적 또는 기여적으로 특허를 침해 했다고 주장하는 개체에 대항해서 특허 소송(교차 청구 및 반소를 포함한)을 제기하면, 이 사용 허가서 하에 사용자에게 허가된 특허권은 소송이 신청된 날로부터 종료 된다.

4. 재배포.

사용자는 아래의 조건을 만족하는 한 수정 또는 수정 없이, 소스 코드 또는 목적 코드의 형태로, 임의의 미디어로 저작물 또는 2차 저작물의 복사본을 재생산 그리고 배포할 수 있다.

1. 사용자는 저작물 또는 2차 저작물의 수신자에게 이 사용 허가서의 복사본을 제공 해야 한다; 그리고
2. 사용자는 수정한 파일에 자신이 파일을 수정 하였음을 알아 보기 쉽게 명시 해야 한다; 그리고
3. 사용자는 배포 하려는 2차 저작물의 소스에서, 원 저작물의 소스 코드에 있던 모든 저작권, 특허권, 상표권과 귀속 공지를 유지 해야 한다. 단, 2차 저작물과 관계 없는 공지는 제외 한다; 그리고
4. "NOTICE" 파일이 저작물의 배포본에 포함되어 있으면, 사용자가 배포하는 모든 2차 저작물에도 그 NOTICE 파일에 담긴 귀속 공지 사본이 읽을 수 있는 형태로 포함 되어야 한다. 단, 2차 저작물의 어떤 부분에도 관련이 없는 공지는 제외한다. 그 공지는 적어도 다음과 같이 위치 중 한 곳에 위치해야 한다: 2차 저작물의 일부로 배포되는 NOTICE 텍스트 파일 안에; 2차 저작물과 함께 배포 되는 소스 또는 문서 안에; 또는 2차 저작물에 의해 생성되는 화면 안에 보통 나타나는 제3자 공지사항으로. NOTICE 파일의 내용은 정보 제공이 목적이므로 사용 허가서 조건을 변경 할 수는 없다. 사용자는 자신이 배포하는 2차 저작물 내에 저작물의 NOTICE 파일에 덧붙여 자신만의 귀속 공지를 배포할 수 있으나 그 귀속 공지가 사용 허가서 조건을 변경 해서는 안된다.

만일 저작물에 대한 사용자의 사용, 재생산 그리고 재배포가 이 사용 허가서에 명시된 조건과 호환 된다면, 사용자는 자신이 수정한 부분에 자신의 저작권 문구를 추가하고 수정 부분의 사용, 재생산, 배포권에 대해 또는 2차 저작물 전체에 대해 부가적인 또는 이 사용 허가서와는 다른 규정 및 조건을 추가할 수 있다.

5. 제출된 기여물.

사용자가 명확하게 다른 사항을 언급하지 않았다면, 사용자가 저작물에 포함 시키기 위해 사용허가자에게 의도적으로 제출한 기여물은 추가적인 규정 또는 조건 없이 이 사용 허가서의 규정과 조건을 따른다. 위 규정에도 불구하고, 여기의 어떤 규정도 사용자가 기여물에 관해 사용허가자와 맺은 별도의 사용 허가서의 규정을 대신 하거나 변경 하지 않는다.

6. 상표권.

이 사용 허가서는 사용허가자의 상품명, 등록상표, 서비스 마크, 제품명을 사용할 권한을 부여하지 않는다. 단, 저작물의 시초를 밝히거나 NOTICE 파일을 재생산하기 위해 합리적이고 관습적으로 쓰는 경우에 한해서는 사용할 수 있다.

7. 보증 거부.

법에 의해 요구 되거나 문서상으로 합의된 경우를 제외하고, 사용허가자(공헌자)는 명시적 또는 묵시적인, 포함하는 어떤 종류의 보증 또는 조건 없이, 적법한 권한, 무침해, 상업성, 특정 목적 부합성의 보증 또는 조건, 제한 없이 "있는 그대로"의 저작물(공헌물)을 제공 한다. 사용자는 저작물의 사용 또는 재배포의 적합성을 결정할 전적인 책임이 있고 이 사용 허가서 하에서 권한을 실행하는데 관련된 어떤 위험도 감당해야 한다.

8. 법적 책임의 한계.

기여자가 손해의 가능성에 대해 조언을 받았다 할지라도, (직무 태만을 포함한) 불법 행위, 계약, 또는 다른 형태로든, (고의적인 그리고 전적으로 태만한 행동 같이) 적합한 법률로 강제 되거나 또는 문서로 합의하지 않는 한, 어떤 사건 속에서 그리고 어떤 법률적 이론 하에서도, 기여자는 사용자의 손실에 대해 책임이 없다. 이 손실은 이 사용 허가서 또는 저작물의 사용 중단 또는 저작물의 사용 불가의 결과로 발생하는 직접, 간접, 특별, 우연 또는 중대한 손실을 포함 한다. (이 손실은 선의의, 업무 중단의, 컴퓨터 고장 또는 오동작의 손실, 또는 기타 모든 상업적 손해 또는 손실을 포함하지만 제한 되지 않는다.)

9. 보증 또는 책임의 추가.

저작물과 그것의 2차 저작물을 재배포 할 때, 사용자는 지원, 보증, 손해배상 책임 또는 기타 이 사용 허가서와 일치하는 법적 책임 및 권한을 받아 들이는데 대한 소정의 수수료를 요청하고 부과할 수 있다. 그러나, 그러한 책임을 받아 들임에 있어 사용자는 오로지 자신의 책임하에 받아 들여야 하며, 이로 인해 야기되는 법적 책임 또는 지불 청구 등에 대해 기여자를 대신하여 배상금을 지불하고, 기여자를 보호하고, 각 기여자가 손해를 입지 않도록 하는데 동의 하여야 한다.

규정과 조건의 끝

첨부: 저작물에 아파치 사용 허가서를 적용 하는 방법

자신의 저작물에 아파치 사용 허가서를 적용 하려면, 다음의 틀을 갖는 공지에서 대괄호를 둘러 쌓인 부분을 자신을 식별할 수 있는 정보로 대치 해야 한다. (대괄호 자체는 포함 해서는 안된다) 아래 공지는 파일 형식에 따라 적절한 코멘트 형식으로 둘러 싸야 한다. 제3자의 아카이브에서 쉽게 확인할 수 있도록 파일 또는 클래스 이름과 목적인 "인쇄된 페이지"에 저작권도 같이 공지할 것을 권장 한다.
저작권 [년도] [저작자 명]


아파치 사용허가서, 버전 2.0 ("사용 허가서")에 의해 사용 허가됨 당신은 사용 허가서에 따르지 않고서는 이 파일을 사용 할 수 없다. http://www.apache.org/licenses/LICENSE-2.0 에서 이 사용 허가서의 복사본을 구할 수 있다.

적합한 법률을 만족 하지 않거나 쓰기에 동의 하지 않는다면, 이 사용 허가서 하에 배포되는 소프트웨어는 명시적 또는 암시적인 어떤 종류의 보증 또는 조건 없이 기본적으로 "있는 그대로" 배포 된다. 사용 허가서에 따라 특정 언어에 대한 허가와 제한을 다루는 사용 허가서는 볼 수 있다.

*** 참고 문헌 ***
오픈소스 비즈니스 컨설팅 - Apache Software License 2.0

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

     

관련 글 목록


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

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



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. 기존에 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

     

오픈오피스 한국어 커뮤니티는 2007년에 한국어팀을 결성하여 오픈오피스 번역과 QA 등 여러 활동에 직접 참여를 하고 있습니다. 그 중에서 오픈오피스 프로그램 자체(UI+도움말) 번역에 관련된 내용을 소개하고자 합니다.

우선 오픈오피스는 그 전신인 스타오피스 시절, Sun 마이크로시스템즈에 의해 번역이 되었고, Sun 마이크로시스템즈에서 직접 관리하는 언어 중 하나로 한국어가 지정되어 Sun 마이크로시스템즈 지역화(L10n)팀에서 직접 번역 및 관리를 해왔습니다. 하지만 오픈오피스 2.4.0 부터는 오픈오피스 한국어 커뮤니티의 번역팀이 참가하여 거의 대부분의 번역을 직접 하고 있으며, 현재까지 번역률 100% 를 유지하고 있습니다.


이러한 오픈오피스 번역은 다음과 같은 과정을 통해 이루어집니다.
  1. 먼저 오픈오피스 새 개발자 버전이 발표됩니다.
  2. 이 중 언어관련 부분(사용자 인터페이스, 도움말)을 추출하여 gettext 기반인 po 파일로 변환합니다.
  3. 이를 Pootle 이라는 온라인기반 공동 번역 시스템에 업데이트합니다.
    사용자 삽입 이미지

  4. Pootle 에서 한국어 관련 부분을 다운로드 받아, 번역되지 않았거나 모호한 번역을 추출합니다.
  5. 이렇게 정리된 "번역해야 할 부분" 을 번역팀원들에게 할당합니다.
    사용자 삽입 이미지

  6. 번역팀원들은 각자 맡은 부분을 지정한 일자까지 번역합니다.
  7. 최종 마감일에 취합된 번역을 정리하여 리뷰어에게 보냅니다.(현재는 Sun 마이크로시스템즈에 근무하는 전문 리뷰어에게 보냅니다.)
  8. 리뷰 내용을 검토하여 반영한 뒤, 한국어 부분 원본에 병합합니다.
  9. 최종적으로 마무리된 파일들을 Pootle 시스템에 업로드합니다.
  10. Pootle 시스템에서 오픈오피스 고유 포맷인 sdf 로 변환하여 소스에 포함한뒤 빌드합니다.
  11. 빌드된 개발자 버전을 다운로드 받아 정상적으로 번역되었는지, 잘못된 부분은 없는지 확인합니다.
뭔가 굉장히 복잡해 보입니다만, 실제론 더 복잡합니다. ;;;


아래는 현재 오픈오피스 3.1 버전을 위한 번역을 하고 있는 작업물입니다. 아직 마감 일자가 조금 남아 있어 번역이 안된 부분도 있습니다만, 실제 어떤 파일을 가지고 작업을 하는지 보여드리기 위해 업로드 합니다.


이 자리를 빌어(이런 말을 하기가 좀 어색한 글이긴 합니다만) 오픈오피스의 한글화를 위해 노력해주고 계신 Sun 마이크로시스템즈의 담당자 분들, 특히 김애진씨와 Ivy 에게 감사의 말씀을 드리고 싶고, 저(Mr.Dust)의 갈굼에 못이겨 밤새워 번역을 하고 있는 오픈오피스 한국어 커뮤니티의 번역팀원들, 그리고 오픈오피스의 재산이자 오픈오피스를 만들고 가고 계신 사용자 모든 분들께 감사드립니다. :)

참고로 오픈오피스 한국어 커뮤니티 번역팀의 번역 작업 내용은 다음 페이지에서 확인하실 수 있습니다. 오픈오피스 한국어 번역팀 내부 문서



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

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

  1. |
    2009/01/09 20:28

    진짜 고생 많이 하시네요. 복 받으실거예요..^^

  2. |
    2009/01/10 15:44

    옷, 이렇게 훌륭한 일을. ^^
    고생 많으십니다.
    상경하실 일 있으면 꼭 연락주세요. 한번 뵈어야죠. :)

  3. |
    2009/03/20 14:04

    어제 번역에 관한 얘기를 많이 들어 pootle, po, sdf, mo 등이 뭔지 알게 되었습니다. 번역 관련 제가 많이 괴롭혀 드릴 것 같네요.

  4. |
    2010/01/12 14:43

    정말 멋진 작업을 하고 계시는군요. 감사합니다.^^.