Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
오픈소스 번역 기여하기
그놈 한국어 번역팀
류창우 <cwryu@debian.org>
우리말이 나오는 오픈소스는
● 물론 누군가 번역한 사람이 있습니다. 아마도 한국인.
● 오늘날 오픈소스는 전세계 모두가 같이 만들어서 같이 씁니다. 특히 번역은 각
언어의 네이티브들의 도움을 받습니다.
● AI가 완전히...
주요 번역 방식 소개: 온라인
● https://translatewiki.net - 주로 위키미디어 관련 (mediawiki, openstreetmap)
● https://www.transifex.com/
● https...
주요 번역 방식 소개: GNOME
● https://l10n.gnome.org “Damned Lies”
● 세상에는 세 가지 종류의 거짓말이 있다. 거짓말, 빌어먹을 거짓말, 그리고 통
계.
● 번역 "통계" 사이트 -...
주요 번역 방식 소개: The Translation Project
● https://translationproject.org/
● 처음에 GNU Translation Project로 시작. 주로 GNU 프로그램들
● P...
번역 “리소스”
● 진리의 케바케: 여러가지 파일 포맷
● 온라인 번역: translatewiki, transifex, weblate, pootle
● 리소스 파일을 메일로 전달하기도 하고 github PR로 하기도 하...
● 1990 Sun에서 최초 개발한 방식을 GNU Gettext에서 사용, 지금은 GNU
Gettext 확장된 버전이 사실상 대세
● 대부분 (아마도 모든) 프로그래밍 언어에서 지원
● 영문 문자열을 key로 (msgi...
Gettext 파일: PO와 MO
● .po 파일은 사람이 편집할 수 있는 텍스트 파일입니다.
● 영문 문자열(msgid)과 번역된 문자열(msgstr)이 들어 있습니다.
● .mo 파일은 .po 파일에서 컴파일한 바이...
별로 알 필요 없는 내부 구조
/usr/share/locale/ko/LC_MESSAGES/hello.mo
setlocale(LC_MESSAGES, "");
bindtextdomain("hello", "/usr/share...
일반적인 작업 과정
hello.c
ko.po
hello.pot
ko.po
(merged)
일반적인 작업 과정
● 앱 개발자/관리자가 소스코드에서 영문 스트링을 추출해 영문 스트링만 들어
있는 PO 파일을 (.pot) 만듭니다.
● 새로 번역하는 경우 번역자가 이 .pot 파일을 .po 파일로 만들어서 편집합...
그래서 PO 파일을 기여하려면..
● 배포하는 .pot (번역이 없으면) 또는 .po (있으나 업데이트해야 하면) 파일을 찾
습니다. 또는 파일을 만드는 방법이 안내되어 있을 수도 있습니다.
● 폭풍 번역 & 제출
PO 편집 시작
● 형식에 맞춰 써야 합니다. 전용 편집 프로그램 또는 모드/플러그인이 필수적
● POEdit, Emacs po-mode, VIM po.vim
헤더 엔트리
● 관리를 위한 정보 및 중요 메타데이터가 들어 있습니다.
● Content-Type 및 Plural-Forms 중요msgid ""
msgstr ""
"Project-Id-Version: gnome-cont...
엔트리
● 전용 에디터를 쓰면 알 일이 없겠지만…
● 번역자는 번역 문자열 및 코멘트만 추가할 수 있습니다.
# 모니터 이름, Primary-Secondary
#: ../panels/display/cc-display-p...
엔트리 (계속)
● 문맥 문자열(msgctx)이 들어 있을 수도 있습니다.
#: ../shell/cc-window.c:872
msgctxt "category"
msgid "Hardware"
msgstr "하드웨어"
고급: 복수형
한국어는 복수형 구별을 하지 않습니다.
msgid "%i day ago"
msgid_plural "%i days ago"
msgstr[0] " %i일 전"
고급: 포맷 문자열
● 해당 프로그래밍 언어의 지식이 필요한데, 번역하면서 익숙해지면 됨.
#, c-format
msgid "%d of %d"
msgstr "%2$d개 중 %1$d"
번역이 끝나면..
● msgfmt -v 명령으로 확인합니다.
● 전용 에디터에는 내장되어 있음.
$ msgfmt --statistics -c -v -o /dev/null ko.po
ko.po: 번역된 메시지 1497개....
ko-po-check
● https://github.com/changwoo/ko-po-check/
● 추가로 한국어 번역을 확인하는 프로그램
● 자주 틀리는 관례, 용어, XML 포맷 실수 등등..
● 잡아낸 게 모두 ...
오픈소스 번역 기여하기
Upcoming SlideShare
Loading in …5
×

오픈소스 번역 기여하기

1,102 views

Published on

GNU Gettext 사용하는 오픈소스 번역

Published in: Software
  • Be the first to comment

오픈소스 번역 기여하기

  1. 1. 오픈소스 번역 기여하기 그놈 한국어 번역팀 류창우 <cwryu@debian.org>
  2. 2. 우리말이 나오는 오픈소스는 ● 물론 누군가 번역한 사람이 있습니다. 아마도 한국인. ● 오늘날 오픈소스는 전세계 모두가 같이 만들어서 같이 씁니다. 특히 번역은 각 언어의 네이티브들의 도움을 받습니다. ● AI가 완전히 대신할 날은 쉽게 안 옵니다. :P
  3. 3. 주요 번역 방식 소개: 온라인 ● https://translatewiki.net - 주로 위키미디어 관련 (mediawiki, openstreetmap) ● https://www.transifex.com/ ● https://weblate.org/ ● 각자 pootle 사용 - https://translations.documentfoundation.org/ 등
  4. 4. 주요 번역 방식 소개: GNOME ● https://l10n.gnome.org “Damned Lies” ● 세상에는 세 가지 종류의 거짓말이 있다. 거짓말, 빌어먹을 거짓말, 그리고 통 계. ● 번역 "통계" 사이트 - 지금은 번역 제출 기능도 탑재 ● PO 다운로드 & 웹에서 제출
  5. 5. 주요 번역 방식 소개: The Translation Project ● https://translationproject.org/ ● 처음에 GNU Translation Project로 시작. 주로 GNU 프로그램들 ● PO 다운로드 & 자동처리되는 메일로 제출
  6. 6. 번역 “리소스” ● 진리의 케바케: 여러가지 파일 포맷 ● 온라인 번역: translatewiki, transifex, weblate, pootle ● 리소스 파일을 메일로 전달하기도 하고 github PR로 하기도 하고 다 다릅니다. ● GNOME: https://l10n.gnome.org ● 오픈소스에서 가장 많이 쓰이는 GNU Gettext 포맷을 여기서 다룹니다.
  7. 7. ● 1990 Sun에서 최초 개발한 방식을 GNU Gettext에서 사용, 지금은 GNU Gettext 확장된 버전이 사실상 대세 ● 대부분 (아마도 모든) 프로그래밍 언어에서 지원 ● 영문 문자열을 key로 (msgid) 번역 문자열을 (msgstr) 찾아내는 방식. ● 개발자 입장에서 도입 장벽이 낮음 ● 번역자 입장에서 점진적으로 작업해 나갈 수 있음 ● 계속 업데이트되는 긴 문서를 번역할 때도 중간 포맷으로 괜찮음 GNU Gettext
  8. 8. Gettext 파일: PO와 MO ● .po 파일은 사람이 편집할 수 있는 텍스트 파일입니다. ● 영문 문자열(msgid)과 번역된 문자열(msgstr)이 들어 있습니다. ● .mo 파일은 .po 파일에서 컴파일한 바이너리 형식 해시테이블입니다. ● 앱에서는 .mo 파일에서 번역 문자열을 찾아봅니다.
  9. 9. 별로 알 필요 없는 내부 구조 /usr/share/locale/ko/LC_MESSAGES/hello.mo setlocale(LC_MESSAGES, ""); bindtextdomain("hello", "/usr/share/locale"); textdomain("hello"); ... greeting_msg = _("Hello, world!"); $ LANG=C hello Hello, world! $ LANG=ko_KR.UTF-8 hello 안녕하세요, 여러분! $ env LANG=ko_KR.UTF-8 TEXTDOMAINDIR=/usr/share/locale gettext hello "Hello, world!" 안녕하세요, 여러분!$
  10. 10. 일반적인 작업 과정 hello.c ko.po hello.pot ko.po (merged)
  11. 11. 일반적인 작업 과정 ● 앱 개발자/관리자가 소스코드에서 영문 스트링을 추출해 영문 스트링만 들어 있는 PO 파일을 (.pot) 만듭니다. ● 새로 번역하는 경우 번역자가 이 .pot 파일을 .po 파일로 만들어서 편집합니다. ● 기존 번역이 있는 경우 msgmerge 프로그램을 사용해 .pot 파일과 기존 .po 파 일에서 추가된/바뀐 문자열을 포함한 새 .po 파일을 만듭니다. ● 번역자는 .po 파일에 번역을 추가/업데이트해 제출
  12. 12. 그래서 PO 파일을 기여하려면.. ● 배포하는 .pot (번역이 없으면) 또는 .po (있으나 업데이트해야 하면) 파일을 찾 습니다. 또는 파일을 만드는 방법이 안내되어 있을 수도 있습니다. ● 폭풍 번역 & 제출
  13. 13. PO 편집 시작 ● 형식에 맞춰 써야 합니다. 전용 편집 프로그램 또는 모드/플러그인이 필수적 ● POEdit, Emacs po-mode, VIM po.vim
  14. 14. 헤더 엔트리 ● 관리를 위한 정보 및 중요 메타데이터가 들어 있습니다. ● Content-Type 및 Plural-Forms 중요msgid "" msgstr "" "Project-Id-Version: gnome-control-centern" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "control-center&keywords=I18N+L10N&component=generaln" "POT-Creation-Date: 2016-08-30 15:17+0000n" "PO-Revision-Date: 2016-09-03 20:05+0900n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>n" "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>n" "Language: kon" "MIME-Version: 1.0n" "Content-Type: text/plain; charset=UTF-8n" "Content-Transfer-Encoding: 8bitn" "Plural-Forms: nplurals=1; plural=0;n"
  15. 15. 엔트리 ● 전용 에디터를 쓰면 알 일이 없겠지만… ● 번역자는 번역 문자열 및 코멘트만 추가할 수 있습니다. # 모니터 이름, Primary-Secondary #: ../panels/display/cc-display-panel.c:578 #: ../panels/display/cc-display-panel.c:2429 msgid "Primary" msgstr "주요"
  16. 16. 엔트리 (계속) ● 문맥 문자열(msgctx)이 들어 있을 수도 있습니다. #: ../shell/cc-window.c:872 msgctxt "category" msgid "Hardware" msgstr "하드웨어"
  17. 17. 고급: 복수형 한국어는 복수형 구별을 하지 않습니다. msgid "%i day ago" msgid_plural "%i days ago" msgstr[0] " %i일 전"
  18. 18. 고급: 포맷 문자열 ● 해당 프로그래밍 언어의 지식이 필요한데, 번역하면서 익숙해지면 됨. #, c-format msgid "%d of %d" msgstr "%2$d개 중 %1$d"
  19. 19. 번역이 끝나면.. ● msgfmt -v 명령으로 확인합니다. ● 전용 에디터에는 내장되어 있음. $ msgfmt --statistics -c -v -o /dev/null ko.po ko.po: 번역된 메시지 1497개. $
  20. 20. ko-po-check ● https://github.com/changwoo/ko-po-check/ ● 추가로 한국어 번역을 확인하는 프로그램 ● 자주 틀리는 관례, 용어, XML 포맷 실수 등등.. ● 잡아낸 게 모두 문제라는 뜻은 아니고, 모든 걸 잡아내지도 못합니다. :) $ ko-po-check ko.po ko.po:1775: 바로 가기: "link"은(는) "링크"(이)라고 번역하길 제안합니다 ko.po:4654: 인쇄 작업 보기(_J): "Show ..." 형태는 "... 보이기(표시)" 형태와 같이 번역합니 다 ko.po:5583: Mouse: 검색어가 중복되어 있습니다 $

×