[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
5.1 msgmerge 프로그램 실행하기 | ||
5.2 번역된 항목 | ||
5.3 퍼지 항목 | ||
5.4 번역되지 않은 항목 | ||
5.5 없어진 항목 | Obsolete Entries | |
5.6 번역문 수정 | ||
5.7 주석문 수정하기 | ||
5.8 보조 파일 참조하기 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
msgmerge
프로그램 실행하기[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
msgstr
필드가 번역문으로 채워져 있으면서, 퍼지로 표시되지 않은
(see section 퍼지 항목) PO 파일 항목을 번역된 항목이라고 한다. 번역된
항목만이 GNU msgfmt
으로 컴파일될 것이고, 국제화된 프로그램에서
사용될 수 있다. 그 외의 항목 타입은 모두 컴파일에서 제외된다; 메세지
번역은 이들 항목에 대해서는 일어나지 않을 것이다.
몇몇 명령어는 번역된 항목의 처리에 더 관련 있는 명령어이다.
다음의 번역된 항목을 찾는다.
이전의 번역된 항목을 찾는다.
t(po-next-translated-entry
)와
M-t(po-previous-transted-entry
) 명령은 번역된 항목들이
선택된 상태로 앞으로, 그리고 뒤로 움직인다. 번역된 항목이 없는 경우, 찾기
명령은 계속되어, t의 경우 다시 버퍼의 맨 끝에서부터 찾고,
M-t의 경우 다시 버퍼의 맨 처음에서부터 찾는다.
번역된 항목는 보통 번역자가 그 메세지를 편집하고 나서 생긴다,
번역문 수정. 하지만, po-auto-fuzzy-on-edit
변수의 값이
nil
이 아니면, 처음 새로 번역된 항목는 퍼지 항목이 되고, 나중에
공식적으로 진짜 번역된 항목이 되려면 퍼지를 먼저 없애야 한다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
각 PO 파일 항목는 어떤 속성들을 갖고 있을 수 있고, 이 속성들
하나하나는 그 항목 번역과 관련해 특별한 이름의 주석문을 사용해서
표시된다. 그 한 가지 속성중의 하나는 fuzzy
라는 이름이고, 이
속성을 가진 항목을 퍼지 번역문이라고 한다. 간단히 퍼지 항목라고 한다.
퍼지 항목는 비록 다른 목적으로는 번역된 항목으로 간주될지 몰라도, 보통의
경우 번역자가 다시 손봐야 하는 항목이다. 이 항목는 msgmerge
프로그램이 새로운 PO 틀 파일에 따라 옛날에 번역된 PO 파일을 갱신할
경우에 생긴다. msgmerge
는 msgid
가 옛날의 msgid
에서
아주 약간 변경되었다고 가정하고, 새로운 항목에 해당하는 옛날
번역문이라고 생각되는 짝을 찾는다. 원 문자열(msgid
문자열)에서
약간만 수정된 경우에는 대부분의 경우 번역된 문자열도 약간만 수정하면
되고, 이 수정작업은 번역자가 직접 해야 한다. 이런 이유로,
msgmerge
는 어떤 항목을 퍼지로 표시할 수 있다.
또, 번역자는 직접 편의를 위해 어떤 항목을 퍼지로 표시하기로 결정할 수도 있다. 그 항목을 나중에 더 살펴봐야 할 경우가 이런 경우이다. 이런 경우를 위해 몇 명령어는 퍼지 항목 처리와 특히 관련되어 있다.
다음의 퍼지 항목을 찾는다.
이전의 퍼지 항목을 찾는다.
현재 항목에서 퍼지 속성을 지운다.
f(po-next-fuzzy
) 명령어와
M-f(po-previous-fuzzy
) 명령어는 퍼지 항목이 선택된 상태로
앞으로, 그리고 뒤로 움직인다. 퍼지 항목이 없는 경우, 찾기 명령은
계속되어, f의 경우 다시 버퍼의 맨 끝에서부터 찾고, M-f의
경우 다시 버퍼의 맨 처음에서부터 찾는다.
TAB(po-unfuzzy
) 명령은 어떤 항목에 주어진 퍼지 속성을
없앤다. 보통 그 항목는 번역된 상태일 것이다. 그리고, 만약
po-auto-select-on-unfuzzy
변수의 값이 nil
이 아니면,
TAB 명령은 자동으로 작업할 또 다른 항목을 찾아 이동할 것이다.
po-auto-select-on-unfuzzy
의 초기값은 nil
이다.
po-auto-fuzzy-on-edit
의 초기 값은 nil
이다. 하지만, 만약
po-auto-fuzzy-on-edit
의 값이 t
인 경우에, RET
명령으로 편집된 모든 항목는 퍼지로 표시되어, 나중에 또 다시 점검해야
한다. 이 경우에, 기본적인 아이디어는 변역자가 어떤 항목을 수정하면 그
항목을 (이미 퍼지가 아니라면) 퍼지로 만드는 것이다. 만약 번역자가 그
번역문에 만족한다면, 그때 TAB을 눌러서 퍼지 속성을 제거한 다음에
작업할 또 다른 항목으로 간다. 번역문에 만족하지 못할 경우는 SPC를
써서 또 다른 항목을 찾아가고, 앞의 항목는 퍼지로 남겨둔다.
번역자가 DEL(po-fade-out-entry
) 명령을 퍼지로 표시된
항목에 쓰면, 나중에 이 항목에 작업하려고 돌아올때 찾아오기 쉽게 된다.
또 q 명령으로 PO 파일 버퍼 작업을 끝낼 때가 되면, 퍼지 문자열이 아직 남아있는 경우에 정말로 끝낼 것인지 번역자에게 물어본다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
xgettext
가 맨 처음에 PO 파일을 만들때, 달리 지정하지 않는다면
원래 문자열로 msgid
필드를 초기화하고, msgstr
을 비워둔다.
이렇게 번역문이 비어있는 항목을 번역되지 않은 항목라고 한다.
나중에 프로그래머가 프로그램 내에서 어떤 문자열을 약간 수정할 경우에, 이
변화는 새롭게 수정된 문자열에 대한 번역되지 않은 항목이 PO 파일에 새로
생긴다.
항목 사이를 이동하는 명령들은 번역된 항목과 같은 식으로 번역되지 않은 항목들을 알아낼 수 있다. 번역되지 않은 항목들은 ‘msgstr ""’로 끝난다는 사실에서 번역되지 않았다는 것을 쉽게 알 수 있다.
번역자가 할 일은 (당연하게도) 번역되지 않은 항목을 찾아서 그에 대한 번역문을 편집하는 것이다. 그리고 이 동작을 번역되지 않은 항목이 하나도 남아있지 않을 때까지 반복한다. 몇 개의 명령어는 번역되지 않은 항목을 처리하는 것과 특히 관련이 있다.
다음의 번역되지 않은 항목을 찾는다.
이전의 번역되지 않은 항목을 찾는다.
현재 항목을 번역되지 않은 항목으로 바꾼다.
u(po-next-untranslated-entry
) 명령어와
M-u(po-previous-untranslated-entry
) 명령어는 번역되지 않은
항목이 선택된 상태로 앞으로, 그리고 뒤로 움지긴다. 번역되지 않은
항목이 없는 경우, 찾기 명령은 계속되어, u의 경우 다시 버퍼의 맨
끝에서부터 찾고, M-u의 경우 다시 버퍼의 맨 처음에서부터 찾는다.
k(po-kill-msgstr
) 명령을 쓰면 어떤 항목의 번역문을
비워버려서 번역되지 않은 항목으로 만든다. See section 번역문 수정.
또, q 명령으로 PO 파일 버퍼 작업을 끝낼 때가 되면, 번역되지 않은 문자열이 아직 남아있는 경우에 정말로 끝낼 것인지 번역자에게 질문을 한다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
없어진 PO 파일 항목이란, 주석으로 처리된 항목을 말한다. 이 주석은
보통 msgmerge
에서 더 이상 패키지에서 사용되지 않는 번역문을
발견했을 때 만들어진다.
항목 사이를 이동하는 명령들은, 없어진 항목들도 번역된 항목과 같은 식으로
취급한다. 설령 항목에 msgid
혹은 msgstr
이 들어 있더라도,
항목 내의 모든 줄이 #로 시작한다면 없어진 항목이라는 걸 쉽게 알 수
있다.
이 없어진 번역문을 지우거나, 다시 원래 번역되지 않은 문자열로 다시 초기화하는 명령도 있다. 킬 링(kill ring)을 사용하는 명령어들을 이용해 전에 저장된 글을 번역문에 넣을 수도 있다. 사용자는 대화적으로 번역문을 편집할 수도 있다. 이러한 명령어들은 모두 없어진 항목들을 위한 명령이고, 이런 작업 이후에도 그 항목을 없어진 항목으로 남겨둔다.
또, 몇 명령어는 없어진 항목을 처리하는 것과 특히 관련이 있다.
다음의 없어진 항목을 찾는다.
이전의 없어진 항목을 찾는다.
어떤 항목을 없어진 항목으로 만들거나, 없어진 항목을 지운다.
o(po-next-obsolete-entry
) 명령어와
M-o(po-previous-obsolete-entry
) 명령어는 없어진 항목이
선택된 상태로 앞으로, 그리고 뒤로 움직인다. 없어진 항목이 없는 경우에도
찾기 명령은 계속되어, o의 경우 다시 버퍼의 맨 끝에서부터 찾고,
M-o의 경우 다시 버퍼의 맨 처음에서부터 찾는다.
PO 모드에서는 없어진 항목의 주석을 지우거나, 보통의 유효한 항목으로
만드는 방법이 없다. 왜냐하면 이렇게 할 경우 프로그램 소스코드에
표시되지 않은 문자열에 전혀 대응되지 않은 원 문자열이 들어가도록 되기
때문이다. 이는 엉터리 msgid
값을 절대 만들지 않겠다는 생각에서
나왔다.
하지만, 유효한 항목을 주석처리해서, 없어진 항목으로 만드는 것은
가능하다. GNU gettext
유틸리티는 번역문이 없어진데 대해서 원래의
번역되지 않은 문자열을 그대로 사용하는 방법으로 대처할 것이다.
DEL(po-fade-out-entry
) 명령은 현재 항목을 제거하는 데
한단계 한단계 가깝게 해 준다. 만약 항목이 번역된 항목인 경우, 이 명령은
일단 이 항목을 퍼지로 만든다. 만약 이미 퍼지일 경우에, 그 항목을 주석
처리할 것이다. 만약 이미 없어진 (주석 처리된) 항목일 경우, PO 파일에서
완전히 삭제한다. 어떤 지워진 번역문을 또 다른 PO 파일 항목(보통
번역되지 않은 항목)로 재활용하기도 쉽다. See section 번역문 수정.
앞으로 PO 모드 개발에서 밤을 새어 가면서 해결할 아주 재미있는 문제가 있다. 아이디어는 어떤 새로운 문자열이 등장했을 때, 없어진 항목들 중에서 가장 후보가 될만한 후보를 알아낼 정도로 PO 모드를 똑똑하게 만드는 것이다. 나는 이 문제가 알고리즘적으로 매우 어려운 문제일거라고 생각하는데, 그것은 비슷한 문자열을 훌륭하면서도 빠르게 판단하는 방법을 개발해야 하기 때문이다. 지금 현재로서는, PO 모드는 번역자에게 모든 결정을 맡긴다. 이와 같이 없어진 항목중에서 적당한 번역문을 찾아낼 수 있게 된다면, PO 모드는 번역자의 작업을 돕는 매우 편리한 도구가 될 것이다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
PO 모드에서는 버퍼내용을 수정할 때 보통 사용하는 이맥스 명령으로는 PO 파일을 직접 편집하지 못한다. 이렇게 하면 타이핑 실수가 있을 수 없기 때문에, 파일 포맷을 유지하면서 문자열의 따옴표를 제대로 만들 수 있다. 그러한 실수는 아주 쉽게 일어난다. 또 다른 종류의 오류가 아직도 가능한데, V 명령으로 알아낼 수 있다. 그 외의 애러의 경우는, 번역자 자신의 판단력과, 같은 모국어를 쓰는 패키지의 사용자가 보낸 번역관련 버그 보고에 의지하는 수 밖에는 없다.
번역문을 처음 만들거나, 기계적으로 찾아내거나 사용자가 보고한 오류를 고치려고 할 때, 번역문을 수정하는 목적으로 다음 명령을 자주 쓴다.
대화적으로 번역문을 편집한다.
번역문을 원래, 번역되지 않은 문자열로 다시 초기화한다.
번역문을 킬 링(kill ring)에 저장하고 지운다.
번역문을 지우지 않은 채, 킬 링(kill ring)에 저장한다.
현재 번역문을 킬 링(kill ring)에서 새로 가져온 번역문으로 바꾼다.
RET(po-edit-msgstr
) 명령은 새로운 이맥스 윈도우를 열고, 그
윈도우 내에는 현재 PO 파일 항목에서 나온 번역문이 들어간다. 이 윈도우의
번역문은 GNU 이맥스의 모든 편집 명령을 사용해서 수정할 수 있다.
문자열은 모든 따옴표가 제거된 채로 번역자에게 보여지고, 이
따옴표가 없어진 문자열을 마음대로 수정하게 된다. 일단 수정이
끝나면 보통 이맥스 명령어인 M-C-c(exit-recursive-edit
)
명령을 써서 원래 PO 파일로 돌아가면서 기존 번역문을 바꾼다.
C-c C-c 키는 M-C-c와 동일한 효과를 내도록 바인딩되어 있다.
번역자가 새로운 번역에 만족스럽지 못할 경우에는, RET 명령 이전의
번역문을 그대로 유지하고 싶어할 것이고, 그 경우에는 이맥스 표준 명령
C-](abort-recursive-edit
)으로 편집한 내용을 버리면서, 옛날
번역문을 그대로 유지한다. C-c C-k 키는 C-]와 같은
효과를 갖도록 바인딩되어 있다. 또다른 방법은 C-c C-c로
빠져나간 다음에, U
를 한번 타이프해서 방금 편집한 내용을 취소하는
것이다.
만약 po-subedit-mode-hook
에 함수가 들어 있다면, 이 함수들은
문자열이 편집 버퍼에 들어간 후와, 재귀 편집(recursive edit)이 시작하기
전에 실행된다.
번역문을 편집할 때, 번역자는 <RET> 문자를 문자열의 끝에 필요없이 쓰지 않도록 주의해야 한다. 그리고 이러한 문자가 필요한 경우에 지우지 않도록 주의해야 한다. 이러한 문자는 편집 버퍼에서 보이지 않기 때문에, 쉽게 실수한다. 번역자를 위해, <RET>는 자동으로 < 문자를 편집할 문자열의 맨 끝에 넣는다. 하지만 이 <는 문자열의 일부가 아니다. C-c C-c로 편집 창을 나갈 때, PO 모드는 자동으로 이 <와 그 뒤에 오는 빈 칸들을 지운다. 만약 번역자가 이 < 다음에 문자를 삽입한 경우에, <는 본래 목적을 잃어버리고, 문자열의 일부로 포함될 것이다. 만약 <를 지운다면, 편집하는 문자열은 있는 그대로, 보이지 않는 줄바꿈 문자가 있다면 모두 들어가게 된다. 또, 번역된 문자열이 진짜로 < 문자로 끝나야 되는 경우에는, 마지막 <는 지워지면 안 된다; 즉 편집창에 문자열은 <로 끝난 채로 남아있어야 한다.
번역문(혹은 주석문)이 편집될 경우, 번역자는 다시 PO 파일 버퍼로 돌아가서 다른 항목을 이동하면서 살펴볼 수 있다. 편집중인 항목는 변경되고 있는 유일한 항목이므로, 편집중인 항목는 편집이 끝나자 마자 원래대로 돌아갈 것이다. 만약 편집창이 열려진 상태에서 번역자가 PO 파일 버퍼 사이를 돌아다니고 있다면, 다른 어떤 항목도 바꾸지 못할 것이다. 만약 다른 항목을 수정하려고 시도할 경우에, PO 모드는 현재 편집을 끝내라고 알려주거나, 혹은 또 다른 편집을 하기 전에 현재 편집창을 끝내도록 안내해 줄 것이다.
LFD(po-msgid-to-msgstr
) 명령은 번역문을 원 문자열과 같도록
초기화한다. 이 명령은 보통 번역자가 전의 번역문이 마음에 안 들 때, 원
문자열에서부터 시작해서 다시 새로운 번역문을 쓰고 싶을 때 쓴다.
번역되지 않은 항목을 편집할 때 언제나 LFD 명령이 자동으로
실행되도록 조정할 수 있다. po-auto-edit-with-msgid
의 값을
t
로 하면, 번역문이 없는 경우에 자동으로 원 문자열과 같도록 초기화될
것이다. po-auto-edit-with-msgid
의 기본값은 nil
이다.
사실 번역문을 빈 문자열에서부터 새로 시작하는 것이 좋을지, 원 문자열을 복사한 다음에 시작하는 것이 좋을지는 취향 혹은 습관의 문제이다. 어떤 경우에는, 원 언어와 번역문을 쓸 언어가 너무 달라서 처음부터 시작하는 편이 좋을 수도 있다. 또 한편, 원 언어와 번역문을 쓸 언어가 비슷해서, 이미 원 문자열에 쓰여진 단어를 다시 쓰는 건 낭비일 수도 있다. 또 번역자가 원 문자열이 바로 눈앞에 있는 편을 좋아할 수도 있다. 즉, 원래 문자열을 지워나가는 편집 작업이 더 필요하지만 조금씩 조금씩 원래 글을 번역문으로 대체해 나가는 작업을 더 좋아할 수도 있다.
k(po-kill-msgstr
) 명령은 단순히 번역문을 없애버려서 해당
항목을 번역되지 않은 항목으로 만든다. 이렇게 하면 전에 있던 번역문은 킬
링(kill ring)이라고 알려져 있는 특별한 장소로 옮겨진다.
w(po-kill-ring-save-msgstr
) 명령 역시 번역문을 그대로 kill
ring으로 복사하는 효과가 있지만, 항목는 그대로 두고 번역문을 지우지
않는다. 두 명령 모두 모든 버퍼들 사이에 공유되는 이맥스의 kill
ring을 사용하고, 이 킬 링(kill ring)은 GNU 이맥스를 좋아하는
사람들에게는 이미 잘 알려져 있다.
킬 링(kill ring)은 여러 개의 번역문을 저장할 수 있기 때문에, 번역자는 k나 w를 여러번 쓸 수 있다. 킬 링(kill ring)에서부터 나오는 문자열은 나중에 여러 가지 이맥스 버퍼 내에서 쓰여질 수 있다. 특히, 킬 링(kill ring)은 번역문을 한개의 PO 파일 버퍼내의 다른 항목으로 옮기는 데 사용되거나, 혹은 여러 개의 버퍼를 사용중일 때 PO 파일들 사이에서도 사용될 수 있다.
PO 모드가 아닌 버퍼들 사이의 자료교환을 위해서, k 명령으로 킬 링(kill ring)에 들어간 번역문은 저장되기 전에 완전히 따옴표가 제거된다: 외부의 따옴표는 제거되고, 여러줄의 문자열은 연결되고, 백슬래쉬로 시작하는 이스케이프 연속은 거기에 해당하는 각 문자로 바뀐다. 없어진 항목에 대해서는 좀 다르게, 저장되기 전에 번역문의 주석이 없어진다.
y(po-yank-msgstr
) 명령은 현재 항목의 번역문을 킬 링에서
나온 문자열로 완전히 교체한다. GNU 이맥스의 용어를 따라서, 우리는 이
교체 문자열을 PO 파일 버퍼에 당겨넣어진다(yanked)고 표현한다.
See (emacs)Yanking section ‘Yanking’ in The Emacs Editor. 첫번째로 y를 쓸 때,
번역문은 가장 최근에 킬 링(kill ring)에 들어가게 된 값으로 바뀌게 된다.
만약 중간에 다른 키를 누르지 않고 y가 즉시로 다시 한번
타이프된다면, 방금 들어간 번역문은 사라지고 킬 링(kill ring)에서
두번째로 최근의 문자열로 교체될 것이다. y를 한번에 여러번
반복하면, 번역자는 정말로 원하는 문자열을 찾을 때까지 킬 링(kill ring)에
번역된 문자열들을 죽 둘러볼 수 있다.
문자열이 PO 파일 항목으로 당겨져 들어갈 때, 그 문자열은 PO 파일 형식에 맞도록 완벽하게 자동으로 따옴표가 씌워질 것이다. 그리고, 만약 해당 항목이 없어진 항목일 경우, PO 모드는 자동으로 주석문 안에 문자열을 삽입한다. 역시, 번역자는 (물론) 번역문이 프로그램이 사용하기에 적합한지를 제외하고는 따옴표를 어떻게 씌우느냐는 문제로 부담을 가질 필요가 없다.
k 혹은 w는 킬 링(kill ring)에 문자열을 밀어넣는 유일한 명령어는 아니다. 번역문을 바꾸는 (또는 번역자 주석을 바꾸고) 거의 모든 PO 모드 명령어는 자동으로 옛날 문자열을 킬 링(kill ring)에 저장한다. 이 규칙의 큰 예외는 당겨넣기(yanking) 명령어들 뿐이다.
지우고 당겨넣는 동작을 좀더 잘 설명하기 위해, 실제 자주 발생하는 상황에
대해 예를 들어본다. 프로그래머가 프로그램 내의 어떤 문자열을 조금
바꿨을 때, 그 변화는 나중에 PO 파일의 번역되지 않은 항목이 생기도록
만든다. 그리고 원래 있던 문자열은 없어진 항목으로 변한다. 대부분의
경우, 번역자는 없어진 항목에서부터 번역문을 가져와서 더 작업함으로써
시간을 줄이려고 할 것이다. 일단 그 번역되지 않은 항목의 msgstr
필드를 아까 가져온 번역문으로 초기화하는 것이다. 일단 이렇게 하면, 방금
없어진 항목는 더이상 필요가 없으므로, 안전하게 지울 수 있다.
번역자가 번역되지 않은 항목을 찾고 번역문이 약간 다른 항목이 어딘가 있을
것이라고 의심이 가면, 즉각 m을 사용해 현재 항목 위치를 표시해
두고, o를 써서 대응되는 번역문을 찾기를 바라면서 없어진 항목들을
추적하기 시작한다. 일단 찾고자 하는 항목을 찾으면, DEL 명령으로
그 없어진 항목을 지운다. 이때 DEL 명령은 그 번역문을
지우므로, 그 번역문은 킬 링(kill ring)에 들어간다. 그 다음에
r을 사용해 원래 번역되지 않은 항목으로 돌아간 다음, y로
저장된 번역문을 msgstr
필드로 당겨넣는다. 그다음에
번역자는 <RET>을 써서 번역문을 더 다듬은 다음, 또다시
u과 m을 사용해서 다음 번역되지 않은 문자열을 향해 떠난다.
어떤 키 연속이 계속 반복해서 타이프되는 경우, 이 키 연속을 미리 기억해 놓고 필요할 때 반복하는 GNU 이맥스의 키 매크로 기능에 익숙해지면 더 편리할 것이다. See (emacs)Keyboard Macros section ‘Keyboard Macros’ in The Emacs Editor.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
심각하게 작업중인 어떠한 번역도 많은 언어 문제와 관련되어, 어떤 결정을 내릴지, 그리고 그 결정사항을 어떻게 문서화할지 등과 같은 어려움이 생긴다. 이걸 문서화하면 PO 파일 내에 번역자 주석문의 형태로 저장되고, 번역자는 자유롭게 주석문을 만들고, 지우고, 수정할 수 있다. 이 주석문은 오랜 시간 후에 이 PO 파일에 다시 돌아왔을 때 도움이 될 것이다.
맨 처음의 ‘#’ 다음에 빈칸이 없는 주석문, 예를 들어 ‘#.’ 혹은
‘#:’로 시작하는 주석문들은 번역자 주석문이 아니고, 도다른
gettext
도구에 의해 만들어진 것이다. 그러므로 아래에 설명된
명령어들은 이렇게 시스템이 첨가한 주석문을 바꾸지 않는다. 이 명령어들은
번역자가 수정할 주석문에만 사용할 수 있다. See section PO 파일의 형식.
다음 명령어는 번역문을 수정하는 명령어와 어느정도 비슷하기 때문에, 번역문 수정 명령어와 비슷한 사용법이 여기에도 적용된다. See section 번역문 수정.
대화적으로 번역자 주석을 편집한다.
킬 링(kill ring)에 번역자 주석문을 저장하고, 지운다.
킬 링(kill ring)에 번역자 주석문을 저장하고, 지우지 않는다.
번역자 주석문을 킬 링(kill ring)에서 가져온 문자열로 교체한다.
이 명령어들은 번역문을 고치는 PO 모드 명령어들과 하나씩 대응되고, 번역문이 아니라 번역자 주석문에 해당한다는 것만 제외하고는 같은 방법으로 동작한다. 그러므로, 이미 자세한 내용은 설명되었기 때문에, 아래에는 간단히만 설명한다. See section 번역문 수정.
#(po-edit-comment
) 명령은 현재 PO 파일 항목의 번역자
주석문을 담고 있는 새로운 이맥스 창을 연다. 이런 주석문이 없는 경우,
번역자가 주석을 새로 추가하려는 것으로 가정하고, 비어있는 스크린을 보게
될 것이다. 주석표시 (#)와 그 다음에 오는 공백은 편집 전에
자동으로 제거되고, 편집이 끝나면 다시 첨가된다. 없어진 항목에 속해 있는
번역자 주석문을 위해, 주석처리 없애기 및 다시 주석처리하기 작업은 두번에
걸쳐 이루어진다. 일단 편집 창에 들어선 다음, C-c C-c 키로
주석문 편집을 끝낼 수 있다.
po-subedit-mode-hook
에 함수가 들어 있으면, 편집창에 문자열을
삽입된 후와 재귀 편집이 시작되기 전에 이 함수들이 실행된다.
K(po-kill-comment
) 명령은 모든 번역자 주석문을 없애고,
그주석문을 킬 링(kill ring)에 저장한다.
W(po-kill-ring-save-comment
) 명령은 번역자 주석문을 kill
ring에 저장하지만 그 주석문은 그대로 남겨둔다.
Y(po-yank-comment
) 명령은 번역자 주석문을 킬 링(kill ring)의 맨
앞에서 가져온 문자열로 완전히 바꾼다. 이 명령이 반복되면 주석문은
계속해서 킬 링(kill ring)을 따라 가져온 문자열로 하나씩 삽입되고 없어지고
또다른 문자열로 교체되는 것을 반복한다.
킬 링(kill ring)에서 모든 문자열은 같은 성질을 가진다. 번역 문자열과 번역자 주석문 문자열 사이에 차이는 없다. 예를 들어, 번역자가 막 번역문 편집을 끝내고, 왜 전의 번역문이 좋지 않은지에 대해 번역자 주석문을 만들어서 무슨 문제가 있었는지 기록하려 한다고 가정하자. 주석문 내에서 그 문제를 기록할 것이고, 번역자는 번역자 주석문에 앞의 번역문을 인용할 수 있다. 이렇게, 번역자는 번역자 주석문을 킬 링(kill ring)의 맨 앞에 있는 이전의 번역문으로 초기화할 수 있다. 편집작업은 이미 전의 번역문을 킬 링(kill ring)에 밀어넣었을 것이므로, 번역자는 간단히 # 다음에 M-w를 누르면 전의 번역문을 그대로 번역자 주석문에 쓸 수 있고, 이제 좀 더 설명하는 글을 쓸 준비가 된 것이다.
또 한편으로, 이미 번역자 주석문이 있고, 이 주석문을 완전히 교체하는
대신에 그 뒤에 또다른 주석을 추가하고 싶다고 가정하자. 이 경우에,
주석문을 직접 #로 편집한다. 편집 윈도우 내에서 보통 GNU 이맥스
명령어인 C-y(yank
)와 M-y(yank-pop
)을 써서
원하는 이전 번역문을 붙여 넣을 수 있다.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
PO 모드에는 여러 개의 언어에 능숙한 유식한 번역자의 경우, 알고 있는 또 다른 언어에 있는 번역문을 참조할 수 있는 기능이 있다. PO 모드는 이 또 다른 언어의 번역문을 번역자 자신의 작업에 참고자료로 제공해 준다. 게다가 PO 모드를 이용하면 여러 개 언어에 대한 번역문을 쉽게 만들 수 있다 (이런 식으로 작업하기를 좋아하는 번역자를 위해).
보조 PO 파일은 번역자가 작업중인 같은 패키지를 위한, 하지만 또 다른 고유어를 위해 작성된 PO 파일을 말한다. 보조 PO 파일을 선언하고 처리하는 명령어가 있고, 항목에 대해 참고자료를 보여주는 기능도 개발중이다.
다음과 같은 보조 파일 명령어가 PO 파일에 있다.
같은 항목에 대한 또다른 번역문을 보조 파일에서 찾는다.
어떤 보조 파일을 지정해서 그 파일로 이동한다.
이 PO 파일을 보조 파일로 만든다.
PO 파일을 보조 파일 리스트에서 지운다.
A(po-consider-as-auxiliary
) 명령은 현재 PO 파일에 대해 보조
파일들의 리스트를 첨가한다. M-A(po-ignore-source-path
)
명령은 이 리스트를 지운다.
a(po-cycle-auxiliary
) 명령은 모든 보조 PO 파일을 죽
돌아보면서, 또다른 언어의 번역된 항목의 msgid
필드가 현재
항목과 같은 항목을 찾는다. 그런 항목을 찾으면 화면상에서 현재 PO
파일의 위치를 차지한다 (그 윈도우가 위에 나타난다). 이렇게 하기 전에,
현재 PO 파일이 아직 보조파일이 아니라면, 하나의 보조 파일로 등록한다.
즉, 이 새로 표시된 PO 파일에서 a 명령은 계속해서 또 다른 PO 파일을
찾을 것이고, a를 반복하면 마침내 맨 처음 PO 파일로 돌아오게 된다.
M-a(po-select-auxiliary
) 명령은 번역자가 특정 보조 파일을
선택하도록 질문을 한다. 완성(completion)을 이용해 답할 수 있고, 그
다음에 선택된 PO 파일로 이동한다. 이 명령은 선택된 파일이 현재 항목과
똑같은 msgid
필드가 있는지를 체크하고, 있으면 그 항목이 현재
항목이 된다. 그렇지 않으면 선택된 파일의 커서는 움직이지 않는다.
이 기능을 완전히 사용하려면, 보조 PO 파일은 표준화되어, msgid
필드가 정확히 같은 방법으로 쓰여져야 한다. msgid
필드를
같은 문자열에 대해 여러 가지 방법으로 작성할 수도 있다지만, 다르게 쓰면
PO 모드의 보조 파일 명령이 제대로 동작하지 않을 것이다. 하지만
동일한 msgid
필드가 다르게 쓰여지는 일은 보통 일어나지 않을
것이다. 대부분의 PO 파일들은 같은 GNU gettext
도구에 이해
msgid
필드가 만들어졌을 것이기 때문이다.
하지만, PO 파일은 맨 처음에 소스 파일에 표시된 문자열에서 만들어지는 게
아니라 PO 모드 자체에 의해 만들어지고, 다른 방법으로 표준화된다.
즉 최종 PO 파일은 ‘M-x normalize’ 명령으로 만들어진다. PO 모드와
다른 GNU gettext
도구들 사이의 이러한 불일치가 완전히 없어지면,
번역자는 표준화 문제에 대해 신경을 쓰지 않아도 될 것이다.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Autobuild on February 7, 2019 using texi2html 1.82.