Poedit

오픈소스 비즈니스 컨설팅
Pnuskgh (토론 | 기여)님의 2018년 2월 22일 (목) 16:03 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

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 사용법

참고 문헌

참고 문헌