- 설치 가이드
- poedit 설치
- 주요 환경 설정
- Poedit Pro와 비교
- 사용자 가이드
- 파일 메뉴
- 편집 메뉴
- 카탈로그 메뉴
- 보기 메뉴
- 책갈피 메뉴
- 도움말 메뉴
- PO 파일 포맷
- 프로그램 매뉴얼
- PO 파일 생성 및 위치
- PHP에서 po 파일 사용
gettext에서 사용하는 다국어 지원을 위한 메시지 파일인 po 파일 편집기인 poedit를 정리 한다.
홈페이지 : http://www.poedit.net/, http://sourceforge.net/projects/poedit/
라이센스 : MIT license
플랫폼 : Windows, Unix, Linux / C++
설치 가이드
Windows에서 poedit를 다운로드 하여 설치하는 것을 설명 한다.
poedit 설치
다운로드 사이트에서 "poedit-1.4.2-setup.exe"을 다운로드 한다.
"poedit-1.4.2-setup.exe"를 실행한 후 "Next"를 선택하여 설치를 시작 한다.
![설치 시작](img/Poedit install 01.png)라이선스를 확인하고 "Next"를 선택 한다.
![라이선스](img/Poedit install 02.png)설치 폴더를 선택하고 "Next"를 선택 한다.
![설치 폴더](img/Poedit install 03.png)"Full installation"을 선택한 후 "Next"를 선택 한다.
![설치 옵션](img/Poedit install 04.png)메뉴 폴더로 Poedit를 지정한 후 "Next"를 선택 한다.
![메뉴 폴더](img/Poedit install 05.png)"Install"을 선택하여 실제 설치를 진행 한다.
![설치](img/Poedit install 06.png)"Run Poedit now"를 선택한 후 "Finish"를 선택하여 설치를 종료 한다.
![설치 종료](img/Poedit install 07.png)처음으로 poedit가 실행될 때 사용 언어로 "Korean"을 지정 하여야 메뉴 등이 한글로 표시 된다.
![언어 선택](img/Poedit install 08.png)메시지를 읽고 "확인"은 선택 한다.
![안내 메시지](img/Poedit install 09.png)카탈로그(PO 파일)의 "Last-Translator"에 표시할 신상 정보를 입력 한다.
이름 : 산사랑
이메일 : consult(골뱅이)jopenbusiness.com
![신상 정보](img/Poedit 02.png)
주요 환경 설정
여러개의 관련 카탈로그(PO 파일)을 프로젝트로 등록하여 관리를 하려면 다음과 같이 한다.
"파일 -> 카탈로그 관리자" 메뉴를 선택 한다.
카탈로그 관리자에서 붉은 네모 박스로 표시된 아이콘("번역 프로젝트 생성")을 선택 한다.
[500px|번역 프로젝트 생성](File:Poedit 10.png.md)
프로젝트 이름 : "koreanTranslation", 자신이 원하는 프로젝트 이름을 사용할 것
디렉토리 : 프로젝트에 해당하는 카탈로그(PO 파일)가 있을 경우 "둘러보기" 버튼을 선택하여 해당 PO 파일을 추가 한다.
[프로젝트 정보 등록](File:Poedit 11.png.md)
poedit는 번역본 기억 장치(TM)을 지원 한다. TM을 사용하여 기존에 번역에 사용 하였던 정보로 손쉽게 초벌 번역이 가능하다. 아래와 같이 하여 TM을 생성할 수 있다.
"파일 -> 선택사항" 메뉴에서 번역본 기억 장치(TM) 탭을 선택 한다.
DB 경로 : c:/koreanTranslationDB, 번역본 기억 장치(TM)가 저장될 폴더를 지정 한다.
내 언어 : ko (korean), "추가" 버튼을 선택하여 사용할 언어를 지정 한다.
[번역본 기억 장치(TM)](File:Poedit 04.png.md)
- "데이터베이스 생성" 버튼을 선택 한다.
- 디폴트로 등록된 "C:"를 삭제 한다.
- "둘러보기"를 선택하여 PO 파일이 저장된 "c:/koreanTranslation"을 선택 한다.
"Next" 버튼을 선택 한다.
[로컬 파일이 저장된 디렉토리 추가](File:Poedit 05.png.md)
- 번역본 기억 장치(TM)를 생성할 번역 파일(PO 파일 또는 MO 파일)을 지정
- 번역본을 생성할 PO 파일을 지정 한다.
- "Finish" 버튼을 눌러 데이터베이스 생성을 종료 한다.
- 번역본 기억 장치의 DB 폴더가 c:/koreanTranslationDB 일 경우 구조
c:/koreanTranslationDB/ko 폴더
strings.db 파일
translations.db 파일
words.db 파일
[번역 파일 추가](File:Poedit 06.png.md)
Poedit Pro와 비교
Poedit 2.0.6
가격 : $29.99 (1명이 최대 3대의 컴퓨터에서 사용 가능)
제공 기능
온라인 번역 기억 장소 제안
WordPress 테마 또는 플러그인 번역 지원
Crowdin에서 공동 번역 지원
twig 양식에서 문자열 추출
단어 계수 및 통계
사용자 가이드
파일 메뉴
{| cellspacing="1" cellpadding="1" border="1" width="100%"
|-
|width="20%" bgcolor="cyan" align="center" valign="middle"|메뉴
|width="80%" bgcolor="cyan" align="center" valign="middle"|설명
|-
|align="center"|카탈로그 관리자
|
프로젝트 단위 그룹핑하여 카탈로그를 관리 한다.
프로젝트 생성
카탈로그 관리자에서 붉은 네모 박스로 표시된 아이콘("번역 프로젝트 생성")을 선택 한다.
![500px|번역 프로젝트 생성](img/Poedit 10.png)프로젝트 이름 : "koreanTranslation"
디렉토리 : "둘러보기" 버튼을 선택하여 "c:/koreanTranslation/koreanProject.po"를 추가 한다.
![프로젝트 정보 등록](img/Poedit 11.png) align="center"
새 카탈로그(PO 파일)를 생성 한다.
프로젝트 이름과 버전 : koreanProject, 카탈로그의 프로젝트 명
팀 : pnus, 카탈로그 작성 팀명
팀 메일 주소 : consult(골뱅이)jopenbusiness.com, 카탈로그 작성 팀의 메일 주소
언어 : "Korean"
국가 : "KOREA, REPUBLIC OF"
문자코드 : "utf-8"
소스 코드 문자코드 : "utf-8"
문장내 복수 표시 형식 :
![새 카탈로그](img/Poedit 01.png)
새 카탈로그를 c:/koreanTranslation/koreanProject.po 로 저장할 경우 파일 내용
koreanProject.po 파일은 utf-8 형태로 저장 된다.
msgid ""
msgstr ""
"Project-Id-Version: koreanProject\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: 산사랑 \n"
"Language-Team: pnus \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"
|-
|align="center"|POT 파일로부터 새로운 카탈로그 작성...
|
GNU Gettext 템플릿(~.pot) 파일로 부터 새로운 카탈로그(GNU Gettext 파일, ~.po)를 작성 한다. align="center" 카탈로그(GNU Gettext 파일, ~.po)를 연다. align="center" 현재 작성 중인 카탈로그(GNU Gettext 파일, ~.po)를 저장 한다. align="center" 카탈로그(GNU Gettext 파일, ~.po)를 다른 이름으로 저장 한다. align="center" 카탈로그(GNU Gettext 파일, .po)를 다른 형식(.po.html)으로 저장 한다.align="center" poedit의 기본 설정과 사용자 정보를 등록 한다. "개인 정보" 탭
이름 : 산사랑
이메일 : consult(골뱅이)jopenbusiness.com
![신상 정보](img/Poedit 02.png)
"편집기" 탭
동작
저장할 때, .mo 파일 자동 생성 : 선택시 c:/koreanTranslation 폴더의 koreanProject.po를 저장할 경우 자동으로 koreanProject.mo 파일이 생성 된다.
카탈로그 업데이트 후 요약 정보 보기
Poedit 시작시에 카탈로그 관리자 열기
항상 포커스를 입력창으로 옮김
주석을 수정 가능하게 합니다.
CR/LF 변환
개행 서식 : '''유닉스''', MS 윈도우즈, 매킨토시, 현재 플랫폼 기본 사항
존재하는 카탈로그의 포맷을 변경하지 마세요
외부 편집기
편집기 실행파일
파일 뷰어에서 열지 않고, 편집기에서 소스 파일 열기
글꼴
번역 목록에 대한 사용자 글꼴
본문 영역에 대한 사용자 글꼴
![편집기](img/Poedit 03.png)
"번역본 기억 장치(TM)" 탭
데이터베이스
DB 경로 : c:/koreanTranslationDB, 번역본 기억 장치(TM)가 저장될 폴더
내 언어 : ko (korean), 아래 추가 버튼을 선택하여 사용할 언어를 지정 한다.
![번역본 기억 장치(TM)](img/Poedit 04.png)"데이터베이스 생성" 버튼을 선택 한다.
디폴트로 등록된 "C:"를 삭제 한다.
"둘러보기"를 선택하여 PO 파일이 저장된 "c:/koreanTranslation"을 선택 한다.
"Next" 버튼을 선택 한다.
![로컬 파일이 저장된 디렉토리 추가](img/Poedit 05.png)
- 번역본 기억 장치(TM)를 생성할 번역 파일(PO 파일 또는 MO 파일)을 지정
- 번역본을 생성할 PO 파일을 지정 한다.
- "Finish" 버튼을 눌러 데이터베이스 생성을 종료 한다.
- 번역본 기억 장치의 DB 폴더가 c:/koreanTranslationDB 일 경우 구조
c:/koreanTranslationDB/ko 폴더
strings.db 파일
translations.db 파일
words.db 파일
![번역 파일 추가](img/Poedit 06.png)
설정
누락된 최대 단어 수
Max. difference in sentence length
카탈로드 업데이트할 때, 자동 번역
"분석기" 탭
소스 코드를 분석하여 PO 파일을 생성할 때 필요한 정보를 관리 한다.
![분석기](img/Poedit 07.png)Java 분석기 설정 예
![Java 분석기 설정 예](img/Poedit 08.png)PHP 분석기 설정 예
![PHP 분석기 설정 예](img/Poedit 09.png) align="center" poedit 프로그램을 종료 한다. }
편집 메뉴
{| cellspacing="1" cellpadding="1" border="1" width="100%"
|-
|width="20%" bgcolor="cyan" align="center" valign="middle"|메뉴
|width="80%" bgcolor="cyan" align="center" valign="middle"|설명
|-
|align="center"|원본을 번역창으로 복사
|
번역을 하기 위해 선택한 메시지의 원본 메시지(msgid)를 번역 메시지(msgstr)로 복사 한다. align="center" 선택한 메시지가 참조된 곳을 보여 준다. align="center" 다양한 조건으로 문자열을 검색 한다. align="center" 선택한 메시지가 모호한 번역일 경우에 표시를 한다.
poedit에서는 노란색 별표로 표시되며, PO 파일에서는 "#, fuzzy"라는 주석이 추가 된다. align="center" 선택한 메시지의 주석을 편집 한다.
|}
카탈로그 메뉴
{| cellspacing="1" cellpadding="1" border="1" width="100%"
|-
|width="20%" bgcolor="cyan" align="center" valign="middle"|메뉴
|width="80%" bgcolor="cyan" align="center" valign="middle"|설명
|-
|align="center"|소스로부터 업데이트
|
카탈로그를 원본 소스(Java, PHP 등)로 부터 업데이트 한다. align="center" 카탈로그를 POT 파일로부터 업데이트 한다. align="center" 생성된 번역본 기억 장치(TM)의 정보를 이용하여 초벌 번역을 한다. align="center" - align="center" 프로젝트 정보 : 프로젝트의 기본 정보를 저장 한다.
경로 : 원본 소스(Java, PHP 등)의 경로를 저장 한다.
키워드 : 소스 파일에서 번역할 문자열을 인식할 키워드(함수명)를 저장 한다.
|}
보기 메뉴
{| cellspacing="1" cellpadding="1" border="1" width="100%"
|-
|width="20%" bgcolor="cyan" align="center" valign="middle"|메뉴
|width="80%" bgcolor="cyan" align="center" valign="middle"|설명
|-
|align="center"|전체 화면
|
poedit를 전체 화면으로 표시 한다. align="center" msgid와 msgstr에 따옴표를 보여 준다. align="center" msgid의 줄번호를 보여 준다. align="center" 주석 창을 보여 준다. align="center" - align="center" }
책갈피 메뉴
{| cellspacing="1" cellpadding="1" border="1" width="100%"
|-
|width="20%" bgcolor="cyan" align="center" valign="middle"|메뉴
|width="80%" bgcolor="cyan" align="center" valign="middle"|설명
|-
|align="center"|책갈피 삽입 0, 1, ..., 9
|
선택한 메시지를 책갈피 0번에서 부터 9번까지 지정 한다.
단축키로 Alt-0에서 Alt-9까지 사용 한다.
PO 파일에서는 "X-Poedit-Bookmarks"가 추가되어 관리 되며, 책갈피에 해당하는 메시지 번호(0, 1, 2, ..., -1은 책갈피가 지정되지 않음을 표시함)가 저장된다.
# 0번 책갈피에 6번째 메시지(5)가 할당되었고
# 다른 책갈피에는 메시지가 할당되지 않았을 경우
"X-Poedit-Bookmarks: 5,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
|-
|align="center"|책갈피로 바로 가기 0, 1, ..., 9
|
지정한 책갈피로 바로 간다.
단축키로 Ctrl-0에서 Ctrl-9까지 사용 한다.
|}
도움말 메뉴
{| cellspacing="1" cellpadding="1" border="1" width="100%"
|-
|width="20%" bgcolor="cyan" align="center" valign="middle"|메뉴
|width="80%" bgcolor="cyan" align="center" valign="middle"|설명
|-
|align="center"|목차 및 검색
|
poedit의 영문 사용자 가이드를 보여 준다. align="center" 영문 GNU gettext manual을 보여 준다. align="center" 설치된 poedit의 정보를 보여 준다.
|}
PO 파일 포맷
msgid ""
msgstr ""
"Project-Id-Version: /root/repo_git/SuiteCRM/lang_ko_kr_pack/include/language/ko_kr.lang.php\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-15 13:00+0900\n"
"PO-Revision-Date: 2015-08-15 13:00+0900\n"
"Last-Translator: 산사랑 <consult골뱅이jopenbusiness.com>\n"
"Language-Team: 산사랑 <consult골뱅이jopenbusiness.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
# translator-comments (주석)
#. extracted-comments
#: reference… (참조 파일 정보)
#, flag…
#| msgid previous-untranslated-string
msgid "원본 메시지"
msgstr "번역한 메시지"
빈라인
# 주석
msgid "원본 메시지"
msgid_plural "복수형 원본 메시지"
msgstr[0] """
msgstr1 "
참고 문헌
프로그램 매뉴얼
PO 파일 생성 및 위치
PHP 파일에서 po 파일 생성
yum install gettext xgettext --default-domain=index -k_ index.php
po 파일로 mo 파일 생성
msgfmt -o domain.mo domain.po
#--- po 파일을 mo 파일로 변환하기
msgfmt domain.po > domain.mo
msgfmt domain.po -o domain.mo
#--- mo 파일을 po 파일로 변환하기
msgunfmt domain.mo > domain.po
msgunfmt domain.mo -o domain.po
#--- po 파일을 pot 파일로 변환하기
msgfilter -i domain.po -o domain.pot true
#--- po 파일과 pot 파일을 병합하기
msgmerge --update domain.po domain.pot
msgmerge --output-file=domain_new.po domain.po domain.pot
po 파일 위치
/usr/local/share/locale/ko_KR/LC_MESSAGE/mydomain.mo 1. /usr/local/share/locale/ko_KR.UTF8/LC_MESSAGE/mydomain.mo 1. /usr/local/share/locale/ko/LC_MESSAGE/mydomain.mo
PHP에서 po 파일 사용
PHP 환경 설정
vi php.ini ``` extension=gettext.so
po 파일 사용 준비
bindtextdomain("mydomain", "/usr/local/share/locale");
1. bindtextdomain("mydomain", dirname(__FILE__)."/locale");
bind_textdomain_codeset('mydomain', "UTF-8");
textdomain("mydomain");
po 파일 사용
putenv("LANG=ko_KR.utf8");
setlocale(LC_MESSAGES, "ko_KR.utf8");
1. putenv("LC_ALL=ko_KR.utf8");
1. setlocale(LC_ALL, "ko_KR.utf8");
gettext("~");
_("~");
### Python에서 po 파일 사용
import gettext
gettext.bindtextdomain("mydomain", "/usr/local/share/locale")
gettext.bind_textdomain_codeset("mydomain", "UTF-8")
gettext.textdomain("mydomain")
gettext.gettext("~")
_ = gettext.gettext
_("~")
### Linux Shell Script에서 po 파일 사용
#! /bin/bash
export TEXTDOMAINDIR=/usr/local/share/locale
export TEXTDOMAIN=mydomain
echo "$(gettext -s "Hello")"
## xgettext 사용법
참고 문헌
- https://developer.mozilla.org/en-US/docs/gettext
- [http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/xgettext-Invocation.html](http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/xgettext-Invocation.html)
## 참고 문헌
- [오픈소스 한글화](오픈소스 한글화.md)
- 대표적인 PO 편집기
- [KBabel (GPL)](http://kbabel.kde.org/)
- [gtranslator](http://sourceforge.net/projects/gtranslator)
- [TMX 편집기](http://blog.saltlux.com/blog-ko/saltlux_life/saltlux_tc_news/tmx-%EC%83%9D%EC%84%B1-%EB%B0%8F-tm-%EC%A0%95%EB%A6%AC-%EC%89%BD%EA%B2%8C-%ED%95%98%EA%B8%B0/)
- [한국어 PO 파일 검사툴](http://kldp.net/projects/ko-po-check)
- [Computer-assisted translation](http://en.wikipedia.org/wiki/Computer-assisted_translation)
- [http://lexcode.com/bbs/zboard.php?id=okc8&page=1](http://lexcode.com/bbs/zboard.php?id=okc8&page=1)
- [OmegaT](http://www.thewordcracker.com/translation/free-computer-aided-tool-omegat/), SDL Trados, DejaVu, MomoQ
- TMX (TM 데이터의 산업 표준 포맷)
- *[http://doc.mapeditor.org/reference/tmx-map-format/](http://doc.mapeditor.org/reference/tmx-map-format/)
- *[http://pythonhosted.org/tmx/](http://pythonhosted.org/tmx/)
- [https://github.com/vslavik/poedit](https://github.com/vslavik/poedit)
[[Category:오픈소스|Category:오픈소스]]
분류: [한글화](분류_한글화.md)