오픈소스 한글화

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

오픈소스 라이선스와 오픈소스의 한글화를 진행하고 이와 관련된 정보를 정리 한다. 한글화를 위해 CAT(Computer Aided Translation) 도구와 TM(Translation Memory)을 활용한다. 다국어 지원을 위한 문서 양식은 GNU Gettext의 PO(Portable Object) 형식을 중심으로 변환 도구를 사용하여 다양한 문서 양식을 포함 한다.

주요 용어

용어 설명
현지화
(Localization, L10n)
  • 해당 지역의 전문가를 거쳐서 만들어 지는 번역(의역)
국제화
(Internationalization, I18n)
  • 세계화, 현지화가 가능 하도록 하는 기반을 마련해 주는 시스템
  • 지역적 언어 표현 방법을 모두 수용할 수 있도록 만들어주는 시스템
세계화
(Globalization, G11n)
  • 다국어 시스템를 구성하는 것
  • I18n + L10n
Glocalization
  • 세계화(Globalization)와 현지화(Localization)를 합성한 신조어
  • 세계화를 추구하면서 동시에 현지 국가의 풍토를 존중하는 방식
Translation (T9n)
  • 번역, 통역
  • GILT외에 MT(Machine translation)까지 포함한 영역
MT
(Machine Translation)
  • 기계 번역, 자동 번역
  • 컴퓨터를 사용하여 한국어나 영어 등의 자연 언어를 다른 자연 언어로 자동 번역 하는 것
CAT
(Computer Aided Translation)
  • 사람의 번역을 컴퓨터가 도와주는 번역
  • 핵심에는 TM(Translation Memory)을 통한 번역 시스템이 있다.
TM
(Translation Memory)
  • 번역 메모리, 번역본 기억 장치
  • 원문과 번역문을 함께 저장한 데이터베이스로 업계 표준인 TMX 포맷을 따른다.
  • 이전에 번역한 것을 참고로, Fuzzy 알고리즘에 따라 동일 또는 유사한 번역을 찾아 준다.
  • 주로 Translation Editor와 함께 사용 한다.
  • 도구 : Trados, Wordfast, SDLX, STAR Transit, ...
  • 이미 번역한 PO 파일을 사용하여 번역과 관련된 정보를 저장하는 번역본 기억 장치를 생성하며, 또한 생성된 번역본 기억 장치로 새로운 PO 파일을 초벌 번역할 수 있다.
  • 번역본 기억 장치의 DB 폴더가 c:/koreanTranslationDB 일 경우 구조
  • ko 폴더
  • strings.db 파일
  • translations.db 파일
  • words.db 파일
Terminology Management
  • 효율적인 용어 관리
  • 용어, 설명, 정의, 분류
L10 Workflow System  
프로젝트
  • 카탈로그 관리자에서 하나의 단위로 관리할 카탈로그의 모음을 지칭 한다.
PO
(Portable Object)
  • 카탈로그, GNU Gettext 카탈로그, 번역 파일
  • Text 기반의 파일로 GNU version과 non GNU version이 있다.
  • GNU version 샘플
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"

#--- 여기서 부터 실제 다국어 메시지가 저장 된다.
msgid "Hello"
msgstr "안녕하세요"
  • non GNU Version 샘플
domain "messages"
#--- 여기서 부터 실제 다국어 메시지가 저장 된다.
msgid "Hello"
msgstr "안녕하세요"
POT
(Portable Object Template)
  • GNU Gettext 템플릿
  • PO 파일을 생성하기 위해 사용 한다.
MO
(Machine Object)
  • PO 파일이 컴파일된 Binary 기반의 파일로 실제로 gettext 함수에서 사용 한다.
  • 참고 문헌

한글화 요소

  • 오픈소스 한글화 (Localization, L10n, 지역화)
  • SW Localization (필수)
  • 개발자 : 한글 처리가 가능하도록 관련 자원의 문자셋을 UTF-8로 변경
  • 번역가 : 메뉴, 메시지 등을 한글로 번역
  • 디자이어 : 로고, 이미지, 아이콘, 폰트 등을 한국에 맞도록 변경
  • 개발자 : Localization에 따른 프로그램 오류 수정
  • GET 방식으로 호출시 한글 깨어짐
  • SW Localization (옵션)
  • 개발자 : "이름 성"을 "성 이름"으로 변경
  • 개발자 : 통화, 숫자 표시 방법 등을 한국식으로 변경
  • 개발자 : 미국식 주소 체계를 한국식으로 변경
  • 개발자 : 달력에 한국의 공휴일 등 적용
  • Manual Localization
  • 번역가 : 한글 매뉴얼/가이드 작성

CAT 도구 가이드

  • 다국어 파일을 Translate Toolkit을 사용하여 PO 파일 또는 POT 파일로 변환 한다.
  • poedit와 여기에 포함된 Translation Memory를 사용하여 PO 파일을 한국어로 번역 한다.
  • Translate Toolkit과 번역한 PO 파일로 다국어 파일을 한국어로 번역된 다국어 파일로 변환 한다.

Localization.png

  • CAT 도구
도구 설명
Translate Toolkit
  • 다국어 지원을 위한 다양한 변환 도구를 제공 한다.
  • 특히 GNU Gettext에서 지원하는 PO (Portable Object) 형식을 중심으로 하는 변환 도구가 많이 있다.
poedit
  • 멀티 플랫폼(Windows, Linux, Mac)을 지원 한다.
  • 한글 입출력이 자유롭고 TM (Translation Memory) 기능을 지원 한다.
  • 기타 PO 편집기
pootle (웹 기반),
Virtaal (Stand-alone)
  • 프로젝트 성으로 다수의 사람들이 협업하여 번역을 하기 위한 지원 도구
ko-po-check
  • 한국어 PO 파일 검사툴
  • 그놈용 프로그램의 번역에서 자주 실수하는 부분들을 확인하기 위한 프로그램
open-language-tools
  • XLIFF & TMX 기반의 번역 지원 도구

주요 개념 설명

gettext

gettext는 다국어 지원을 위해 사용되는 함수로 msgid를 넘겨 주면 현재 시스템의 언어 설정에 맞는 메시지(msgstr)를 반환한다.

  • C 언어에서의 gettext 사용
setlocale(LC_ALL, "");   //--- 현재 시스템의 locale을 사용하도록 한다.
//--- "textDomain01" 도메인을 "/usr/locale/share/locale"로 지정한다.
bindtextdomain("textDomain01", "/usr/locale/share/locale");
//--- 메시지 테이블의 Default 도메인을 "textDomain01"로 설정 한다.
textdomain("textDomain01");
//--- "Greeting"에 해당하는 다국어 메시지를 가져온다.
printf("gettext trans  : %s\n", gettext("Greeting"));
  • 참고 문헌

PO (Portable Object)

사용자의 언어에 따라 메시지의 다국어 처리 기능을 제공하는 gettext는 GNU version과 non GNU version의 두가지가 존재하며, 관련 프로그램도 동일한 버전의 것을 사용하여야 문제가 발생하지 않는다.

gettext용 mo 파일 생성

  • messages.po 파일 생성 (text 기반, po : Portable Object file, pot : po template)
xgettext Hello.c
  • messages.po 파일에서 msgid에 해당하는 msgstr을 한글로 작성 한다. (po 편집기 : poedit)
  • Hello.mo 파일 생성 (binary 기반, mo : Machine Object file)
msgfmt -o Hello.mo messages.po
  • /usr/local/share/locale/ko/LC_MESSAGE/ 폴더 아래에 Hello.mo 파일을 복사해 둔다.
  • $SOFTWARE_HOME/locale/ko 아래에 ~.mo 파일을 복사 한다.

참고 문헌

sdf

오픈오피스 전용 포맷

sdf 한글화

  • 파일 변환에 필요한 Translate Toolkit을 다운로드 한다.
  • sdf 파일을 po 파일로 변환
  • po-dir 폴더 아래에 여러 po 파일이 생성됨
oo2po --duplicates=msgid_comment --input <sdf file> -l ko -o po-dir
  • po 에디터를 사용하여 편집
  • po 파일을 sdf 파일로 변환
po2oo -l ko -t en-US.sdf -i po-dir -o backconvert_ko.sdf

참고 문헌


오픈소스 매뉴얼 번역

참고 문헌

  • 번역 프로그램