Poedit

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기

gettext에서 사용하는 다국어 지원을 위한 메시지 파일인 po 파일 편집기인 poedit를 정리 한다.

설치 가이드

Windows에서 poedit를 다운로드 하여 설치하는 것을 설명 한다.

poedit 설치

  • "poedit-1.4.2-setup.exe"를 실행한 후 "Next"를 선택하여 설치를 시작 한다.

설치 시작

  • 라이선스를 확인하고 "Next"를 선택 한다.

라이선스

  • 설치 폴더를 선택하고 "Next"를 선택 한다.

설치 폴더

  • "Full installation"을 선택한 후 "Next"를 선택 한다.

설치 옵션

  • 메뉴 폴더로 Poedit를 지정한 후 "Next"를 선택 한다.

메뉴 폴더

  • "Install"을 선택하여 실제 설치를 진행 한다.

설치

  • "Run Poedit now"를 선택한 후 "Finish"를 선택하여 설치를 종료 한다.

설치 종료

  • 처음으로 poedit가 실행될 때 사용 언어로 "Korean"을 지정 하여야 메뉴 등이 한글로 표시 된다.

언어 선택

  • 메시지를 읽고 "확인"은 선택 한다.

안내 메시지

  • 카탈로그(PO 파일)의 "Last-Translator"에 표시할 신상 정보를 입력 한다.
  • 이름 : 산사랑
  • 이메일 : consult(골뱅이)jopenbusiness.com

신상 정보

주요 환경 설정

  • 여러개의 관련 카탈로그(PO 파일)을 프로젝트로 등록하여 관리를 하려면 다음과 같이 한다.
  • "파일 -> 카탈로그 관리자" 메뉴를 선택 한다.
  • 카탈로그 관리자에서 붉은 네모 박스로 표시된 아이콘("번역 프로젝트 생성")을 선택 한다.

번역 프로젝트 생성

  • 프로젝트 이름 : "koreanTranslation", 자신이 원하는 프로젝트 이름을 사용할 것
  • 디렉토리 : 프로젝트에 해당하는 카탈로그(PO 파일)가 있을 경우 "둘러보기" 버튼을 선택하여 해당 PO 파일을 추가 한다.

프로젝트 정보 등록

  • poedit는 번역본 기억 장치(TM)을 지원 한다. TM을 사용하여 기존에 번역에 사용 하였던 정보로 손쉽게 초벌 번역이 가능하다. 아래와 같이 하여 TM을 생성할 수 있다.
  • "파일 -> 선택사항" 메뉴에서 번역본 기억 장치(TM) 탭을 선택 한다.
  • DB 경로 : c:/koreanTranslationDB, 번역본 기억 장치(TM)가 저장될 폴더를 지정 한다.
  • 내 언어 : ko (korean), "추가" 버튼을 선택하여 사용할 언어를 지정 한다.

번역본 기억 장치(TM)

  • "데이터베이스 생성" 버튼을 선택 한다.
  • 디폴트로 등록된 "C:"를 삭제 한다.
  • "둘러보기"를 선택하여 PO 파일이 저장된 "c:/koreanTranslation"을 선택 한다.
"Next" 버튼을 선택 한다.

로컬 파일이 저장된 디렉토리 추가

  • 번역본 기억 장치(TM)를 생성할 번역 파일(PO 파일 또는 MO 파일)을 지정
  • 번역본을 생성할 PO 파일을 지정 한다.
  • "Finish" 버튼을 눌러 데이터베이스 생성을 종료 한다.
  • 번역본 기억 장치의 DB 폴더가 c:/koreanTranslationDB 일 경우 구조
c:/koreanTranslationDB/ko 폴더 
   strings.db 파일
   translations.db 파일
   words.db 파일 

번역 파일 추가


Poedit Pro와 비교

Poedit 2.0.6

가격 : $29.99 (1명이 최대 3대의 컴퓨터에서 사용 가능)

제공 기능

  • 온라인 번역 기억 장소 제안
  • WordPress 테마 또는 플러그인 번역 지원
  • Crowdin에서 공동 번역 지원
  • twig 양식에서 문자열 추출
  • 단어 계수 및 통계

사용자 가이드

파일 메뉴

메뉴 설명
카탈로그 관리자
  • 프로젝트 단위 그룹핑하여 카탈로그를 관리 한다.
  • 프로젝트 생성
  • 카탈로그 관리자에서 붉은 네모 박스로 표시된 아이콘("번역 프로젝트 생성")을 선택 한다.

번역 프로젝트 생성

  • 프로젝트 이름 : "koreanTranslation"
  • 디렉토리 : "둘러보기" 버튼을 선택하여 "c:/koreanTranslation/koreanProject.po"를 추가 한다.

프로젝트 정보 등록

새 카탈로그
  • 새 카탈로그(PO 파일)를 생성 한다.
  • 프로젝트 이름과 버전 : koreanProject, 카탈로그의 프로젝트 명
  • 팀 : pnus, 카탈로그 작성 팀명
  • 팀 메일 주소 : consult(골뱅이)jopenbusiness.com, 카탈로그 작성 팀의 메일 주소
  • 언어 : "Korean"
  • 국가 : "KOREA, REPUBLIC OF"
  • 문자코드 : "utf-8"
  • 소스 코드 문자코드 : "utf-8"
  • 문장내 복수 표시 형식 :

새 카탈로그

  • 새 카탈로그를 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: 산사랑 <consult(골뱅이)jopenbusiness.com>\n"
"Language-Team: pnus <consult(골뱅이)jopenbusiness.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"


POT 파일로부터 새로운 카탈로그 작성...
  • GNU Gettext 템플릿(~.pot) 파일로 부터 새로운 카탈로그(GNU Gettext 파일, ~.po)를 작성 한다.
열기...
  • 카탈로그(GNU Gettext 파일, ~.po)를 연다.
저장
  • 현재 작성 중인 카탈로그(GNU Gettext 파일, ~.po)를 저장 한다.
다른 이름으로 저장...
  • 카탈로그(GNU Gettext 파일, ~.po)를 다른 이름으로 저장 한다.
다른 형식으로 저장...
  • 카탈로그(GNU Gettext 파일, ~.po)를 다른 형식(~.po.html)으로 저장 한다.
선택사항

poedit의 기본 설정과 사용자 정보를 등록 한다.

  • "개인 정보" 탭
  • 이름 : 산사랑
  • 이메일 : consult(골뱅이)jopenbusiness.com

신상 정보

  • "편집기" 탭
  • 동작
  • 저장할 때, .mo 파일 자동 생성 : 선택시 c:/koreanTranslation 폴더의 koreanProject.po를 저장할 경우 자동으로 koreanProject.mo 파일이 생성 된다.
  • 카탈로그 업데이트 후 요약 정보 보기
  • Poedit 시작시에 카탈로그 관리자 열기
  • 항상 포커스를 입력창으로 옮김
  • 주석을 수정 가능하게 합니다.
  • CR/LF 변환
  • 개행 서식 : 유닉스, MS 윈도우즈, 매킨토시, 현재 플랫폼 기본 사항
  • 존재하는 카탈로그의 포맷을 변경하지 마세요
  • 외부 편집기
  • 편집기 실행파일
  • 파일 뷰어에서 열지 않고, 편집기에서 소스 파일 열기
  • 글꼴
  • 번역 목록에 대한 사용자 글꼴
  • 본문 영역에 대한 사용자 글꼴

편집기

  • "번역본 기억 장치(TM)" 탭
  • 데이터베이스
  • DB 경로 : c:/koreanTranslationDB, 번역본 기억 장치(TM)가 저장될 폴더
  • 내 언어 : ko (korean), 아래 추가 버튼을 선택하여 사용할 언어를 지정 한다.

번역본 기억 장치(TM)

  • "데이터베이스 생성" 버튼을 선택 한다.
  • 디폴트로 등록된 "C:"를 삭제 한다.
  • "둘러보기"를 선택하여 PO 파일이 저장된 "c:/koreanTranslation"을 선택 한다.
"Next" 버튼을 선택 한다.

로컬 파일이 저장된 디렉토리 추가

  • 번역본 기억 장치(TM)를 생성할 번역 파일(PO 파일 또는 MO 파일)을 지정
  • 번역본을 생성할 PO 파일을 지정 한다.
  • "Finish" 버튼을 눌러 데이터베이스 생성을 종료 한다.
  • 번역본 기억 장치의 DB 폴더가 c:/koreanTranslationDB 일 경우 구조
c:/koreanTranslationDB/ko 폴더 
    strings.db 파일
    translations.db 파일
    words.db 파일 

번역 파일 추가

  • 설정
  • 누락된 최대 단어 수
  • Max. difference in sentence length
  • 카탈로드 업데이트할 때, 자동 번역
  • "분석기" 탭
  • 소스 코드를 분석하여 PO 파일을 생성할 때 필요한 정보를 관리 한다.

분석기

  • Java 분석기 설정 예

Java 분석기 설정 예

  • PHP 분석기 설정 예

PHP 분석기 설정 예

닫기 poedit 프로그램을 종료 한다.

편집 메뉴

메뉴 설명
원본을 번역창으로 복사
  • 번역을 하기 위해 선택한 메시지의 원본 메시지(msgid)를 번역 메시지(msgstr)로 복사 한다.
참조 보기
  • 선택한 메시지가 참조된 곳을 보여 준다.
찾기
  • 다양한 조건으로 문자열을 검색 한다.
모호한 번역
  • 선택한 메시지가 모호한 번역일 경우에 표시를 한다.
  • poedit에서는 노란색 별표로 표시되며, PO 파일에서는 "#, fuzzy"라는 주석이 추가 된다.
주석 편집
  • 선택한 메시지의 주석을 편집 한다.

카탈로그 메뉴

메뉴 설명
소스로부터 업데이트
  • 카탈로그를 원본 소스(Java, PHP 등)로 부터 업데이트 한다.
POT 파일로부터 업데이트
  • 카탈로그를 POT 파일로부터 업데이트 한다.
TM을 사용하여 자동 번역
  • 생성된 번역본 기억 장치(TM)의 정보를 이용하여 초벌 번역을 한다.
삭제된 번역을 완전히 제거  
설정
  • 프로젝트 정보 : 프로젝트의 기본 정보를 저장 한다.
  • 경로 : 원본 소스(Java, PHP 등)의 경로를 저장 한다.
  • 키워드 : 소스 파일에서 번역할 문자열을 인식할 키워드(함수명)를 저장 한다.

보기 메뉴

메뉴 설명
전체 화면
  • poedit를 전체 화면으로 표시 한다.
따옴표 보이기
  • msgid와 msgstr에 따옴표를 보여 준다.
줄번호 보이기
  • msgid의 줄번호를 보여 준다.
주석 창 보이기
  • 주석 창을 보여 준다.
자동 주석 창 보이기  
음영으로 구분된 번역 리스트  

책갈피 메뉴

메뉴 설명
책갈피 삽입 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"
책갈피로 바로 가기 0, 1, ..., 9
  • 지정한 책갈피로 바로 간다.
  • 단축키로 Ctrl-0에서 Ctrl-9까지 사용 한다.

도움말 메뉴

메뉴 설명
목차 및 검색
  • poedit의 영문 사용자 가이드를 보여 준다.
GNU gettext 문서
  • 영문 GNU gettext manual을 보여 준다.
Poedit 정보
  • 설치된 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] "~"
msgstr[1] "~"


참고 문헌

프로그램 매뉴얼

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
# /usr/local/share/locale/ko_KR.UTF8/LC_MESSAGE/mydomain.mo
# /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");
# 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");
# putenv("LC_ALL=ko_KR.utf8");
# 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 사용법

참고 문헌

참고 문헌