Практично упутство за спровођење превода програма на српски језик
— за преводиоце —

Данило Шеган <danilo na prevod.org>
Превод.орг
Увод у текст

Овај текст је написан како би на брз и лак начин приближили поступак превођења онима који не познају Гну систем и његово окружење.

Зато, текст садржи основни опис ПО датотека које се користе у преводу, затим упутство за употребу основних Геттекст алата, као и увод у неке напредније уређиваче превода као што је Емакс уз ПО-мод, и друго.

Овај документ би ваљало објавити под Гнуовом лиценцом за слободну документацију, али та лиценца захтева да цела буде укључена у сваки примерак документа, па ћу рећи овако: овај документ је објављен под свим условима које прописује Гнуова лиценца за слободну документацију (GNU FDL), осим обавезе укључивања лиценце у сваки примерак.

ПО збирке порука

Сви програми који ће се преводити на српски језик у оквиру Гнома користе Гну Геттекст алате за локализацију. Геттекстом се из изворног кода програма извлачи текст који треба превести, и смешта у посебну датотеку са наставком „.POT“ (од PO Template). Затим се за сваки појединачни језик на који се програм преводи прави нова збирка порука (ПО датотека) од ПОТ датотеке, и у њој се врши превод.

Структура ПО датотеке

Једна ставка у ПО датотеци изгледа као:

     РАЗМАЦИ
     #  ПРИМЕДБЕ-ПРЕВОДИОЦА
     #. АУТОМАТСКЕ-ПРИМЕДБЕ
     #: РЕФЕРЕНЦЕ...
     #, ОЗНАКЕ...
     msgid НЕПРЕВЕДЕНИ-ТЕКСТ
     msgstr ПРЕВЕДЕНИ-ТЕКСТ

Две ставке се уобичајено раздвајају помоћу једне празне линије, али количина и присуство размака је произвољно. Након размака се убацују примедбе, од којих постоје две врсте. Прва врста примедби су оне које почињу знаком „#“ и након њих следи размак — ово су примедбе преводиоца — а друга врста примедби су оне које почињу знаком „#“, а иза њега одмах следи знак који није размак — ово су аутоматске примедбе о којима Геттекст алати воде рачуна. Обе врсте примедби су необавезне.

Затим, у ставци се налази непреведени текст и преведени текст. Они се наводе помоћу аски наводника („"“), и уз употребу нарочитих наредби изграђених помоћу „\“ знака.

Примедбе које почињу са „#,“ су нарочите по томе што их програми који обрађују ПО датотеке неће занемарити. Ту се налазе ознаке за нејасан и несигуран превод („fuzzy“), које убацује или msgmerge програм, или преводилац зато што није сигуран да је превод пригодан.

Такође, међу овим ознакама се налази и ознака да је текст заправо једна спецификација за printf функцију програмског језика C — „c-format“, као и њена негација „no-c-format“. Ове ознаке се никада не убацују ручно, и служе ради додатних провера исправности превода.

Облици за множину

Када се користе облици за множину, што је обавезно за превод на српски језик, тада се једна ставка ПО датотеке делимично разликује:

     РАЗМАЦИ
     #  ПРИМЕДБЕ-ПРЕВОДИОЦА
     #. АУТОМАТСКЕ-ПРИМЕДБЕ
     #: РЕФЕРЕНЦЕ...
     #, ОЗНАКЕ...
     msgid НЕПРЕВЕДЕНИ-ТЕКСТ-ЗА-ЈЕДНИНУ
     msgid_plural НЕПРЕВЕДЕНИ-ТЕКСТ-ЗА-МНОЖИНУ
     msgstr[0] ПРЕВЕДЕНИ-ТЕКСТ-СЛУЧАЈ-0
     ...
     msgstr[N] ПРЕВЕДЕНИ-ТЕКСТ-СЛУЧАЈ-N

За српски језик се разликују три случаја, па је N=2. Када се користи дефиниција каква је дата у Правилнику, онда случај 0 одговара бројевима који завршавају цифром 1, а претпоследња цифра није 1 (нпр. 1, 21, 91, 541, али не 11, 411, 911); случај 1 одговара бројевима који завршавају неком од цифара 2, 3 или 4, а претпоследња цифра није 1 (нпр. 2, 3, 4, 23, 34, 72, 154, али не 14, 212, 713); последњи, случај 2 одговара свим осталим бројевима (нпр. 5, 9, 11, 13, 16, 29, 348).

Вишелинијски текст

Повремено се наиђе и на текст који је предугачак за једну линију. Тада се он раздваја на више редова и то тако да у сваком буде посебан текст под наводницима. Тако, уместо смештања свега у један дугачак ред:

msgid "This is a very long string that is supposed to be translated as soon as it is possible, with no regard to newlines."
msgstr "Ово је веома дугачак текст који треба превести што је пре могуће, без обзира на нове линије."
може се користити подељени облик:
msgid ""
"This is a very long string that is supposed to be translated as "
"soon as it is possible, with no regard to newlines."
msgstr ""
"Ово је веома дугачак текст који треба превести што је пре "
"могуће, без обзира на нове линије."

Употреба Геттекст алата

Ради спровођења превода ПО датотека, користе се алати из скупа програма за локализацију Геттекст. Најважнија два програма за преводиоце су програми „msgfmt“ и „msgmerge“. Први омогућава да се провери исправност превода, статистика, и направи сам превод који се може испоручити крајњим корисницима, док други служи за усклађивање старих верзија превода са текстом из најновијих верзија програма.

Синтакса msgfmt наредбе

Када желите само да проверите ПО датотеку и видите какво је тренутно стање превода (колико има преведених, несигурних и непреведених низова у њој), покрените:

msgfmt -cv -o /dev/null име-датотеке.po

Наравно, име-датотеке треба заменити одговарајућим именом. Уколико желите и да припремите превод за употребу, користите

msgfmt -cv -f -o име-датотеке.mo име-датотеке.po
Разлика је у томе што сада правите једну МО датотеку, и истовремено укључујете и све несигурне преводе у њу (опција -f).

Синтакса msgmerge наредбе

Када изађе ново издање програма који је преведен, уз њега углавном дође и новија, бар делимично измењена ПОТ датотека. Уколико је то случај, онда треба ускладити постојећи превод са новом ПОТ датотеком, а томе служи наредба msgmerge:

msgmerge -v -o име-нове-датотеке.po име-датотеке.po име-пот-датотеке.pot

На овај начин се добија нова датотека са усклађеним текстом према ПОТ датотеци.

Програм msgmerge се такође може користити на почетку превода неког програма, тако што ћемо уместо постојеће ПО датотеке користити једну велику збирку свих постојећих превода. Уколико имамо на располагању нпр. датотеку „сви-преводи.поруке“, онда то можемо учинити са:

msgmerge -v -o име-датотеке.po сви-преводи.поруке име-пот-датотеке.pot
Међутим, тада ће у новој ПО датотеци бити и много „застарелих“ текстова, односно оних који се нису појавили у ПОТ датотеци. Како смо заобишли правила и користили скуп свих превода, све „застареле“ преводе ваља избацити пре него што почнемо са правим превођењем новодобијене ПО датотеке.

Унос „необичних“ знакова: наводници и црте

При преводу текста са енглеског језика, обавезно је користити одговарајуће српске наводнике. Практично, то значи да свака појава низа „\"“ у преведеном тексту представља грешку. Уколико користите ИксФри86 4.3.0, онда за унос српских наводника можете користити издања Дунав тастатуре почевши од Ц.1. Такође, следеће верзије (почевши од издања Ц.2) подржавају и старија издања ИксФри86 софтвера (из гране 4, уколико неко испроба уз ИксФри86 из серије 3.3, нека јави резултате).

Додатни знаци у Емаксу

За Емакс 21.2 и старије вам је неопходан МјулУЦС (MuleUCS): потражите га у Емакс Викију ( http://www.emacswiki.org/). Затим, дефинишите следеће једноставне функције у вашој .emacs датотеци:

(defun mcrta () "Vraca m-crtu" (interactive) (insert-ucs-character '8212))
(defun ncrta () "Vraca n-crtu" (interactive) (insert-ucs-character '8211))
(defun nava () "Vraca pocetni navodnik" (interactive) (insert-ucs-character '8222))
(defun navb () "Vraca zavrsni navodnik" (interactive) (insert-ucs-character '8220))
(defun jnava () "Vraca jednostruki pocetni navodnik" (interactive) (insert-ucs-character '8216))
(defun jnavb () "Vraca jednostruki zavrsni navodnik" (interactive) (insert-ucs-character '8217))

Уколико користите Емакс 21.3.50 издање, онда вам МјулУЦС није потребан, а свако појављивање „insert-ucs-character“ замените са „ucs-insert“. А ако већ користите Емакс 21.3.50, он подржава и унос знакова преко XKB додатка, па се може користити и Дунав тастатура за додатне знаке.

Када то завршите, моћи ћете да уносите ове знакове помоћу „M-x mcrta“ (M-x означава држење тастера Алт и притисак на „x“). Уколико желите, можете неке од ових функција доделити одређеним тастерима. Ево мог примера:

(global-set-key [?\M--] 'ncrta)
(global-set-key [?\C--] 'mcrta)
(global-set-key [?\C-"] 'nava)
(global-set-key [?\M-"] 'navb)