.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "PO4A 1p" .TH PO4A 1p "2023-01-03" "Po4a Алати" "Po4a Алати" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "ИМЕ" .IX Header "ИМЕ" po4a \- у једном кораку ажурира и \s-1PO\s0 фајлове и преведене документе .SH "СИНОПСИС" .IX Header "СИНОПСИС" \&\fBpo4a\fR [\fIопције\fR] \fIконфиг_фајл\fR .SH "ОПИС" .IX Header "ОПИС" po4a (\s-1PO\s0 for anything [\s-1PO\s0 за било шта]) олакшава одржавање превода докумената употребом класичних gettext алата. Главна особина po4a је да раскида везу између садржаја превода и структуре његовог документа. Молимо да погледате страницу \fBpo4a\fR\|(7) у којој је изложен прости увод у овај пројекат. .PP Када сe програм покрене, \fBpo4a\fR парсира све фајлове документације наведене у свом конфигурационим фајлу. Он ажурира \s-1PO\s0 фајлове (у којима се налази превод) тако да се у њима прикажу све измене у документацији, па креира преведени документ уметањем превода садржаја (који се проналази у \s-1PO\s0 фајловима) у структуру оригиналног мастер документа. .PP У почетку, \s-1PO\s0 фајлови садрже само стрингове који треба да се преведу из оригиналне документације. Овај фајл формат омогућава да преводиоци ручно доставе превод сваког пасуса који издвоји \fBpo4a\fR. Ако се након превођења документација измени, \fBpo4a\fR означава одговарајуће преводе у \s-1PO\s0 фајлу као несигурне („fuzzy”) и тако од преводилаца захтева да их ручно провере. Преводиоци такође могу да наведу такозвани „додатак”, допунски садржај који наводи, на пример, ко је урадио превод и како да се пријаве багови. .PP .Vb 11 \& мастер документи \-\-\-\-\-\-+\-\-\-\-\-\-\-\->\-\-\-\-\-\-\-\->\-\-\-\-\-\-\-\-\-+ \& (писање док) | | \& V (po4a извршавања) >\-\-\-\-\-+\-\-> преведени \& | | | документи \& постојећи PO фајлови \-\->\-\-> ажурирани PO фајлови >\-+ | \& ^ | | \& | V | \& +\-\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-\-\-\-\-\-+ ^ \& (ручни процес превођења) | \& | \& додатак \-\->\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ .Ve .PP \&\fBpo4a\fR процес рада је асинхрон, прилагођен пројектима отвореног кода. Писци документације креирају мастер документе сопственим темпом. Преводиоци прегледају и ажурирају преводе у \s-1PO\s0 фајловима. Одржаваоци по потреби поново покрећу \fBpo4a\fR, чиме се измене у оригиналној документацији приказују у \s-1PO\s0 фајловима, као и да произведу ажуриране преводе документације, уметањем најсвежијих превода у најновију структуру документа. .PP Подразумевано се неки преведени документ израђује онда када је барем 80% његовог садржаја преведено. Непреведени текст се задржава на оригиналном језику. Произведена документација дакле меша језике ако превод није комплетан. Границу од 80% можете да промените опцијом \fI\-\-keep\fR која је описана испод. Међутим, имајте на уму да одбацивање превода чим проценат преведених стрингова није 100% може да буде обесхрабрујуће за преводиоце чији рад корисници скоро никада неће видети, док приказивање „превода” који је далеко од завршеног може представљати проблем за крајње кориснике. .PP Чување фајлова превода документације у систему за контролу верзија је вероватно лоша идеја, јер се они генеришу аутоматски. Драгоцени су \s-1PO\s0 фајлови који садрже сав тежак рад ваших колега преводилаца. Такође, неким људима је једноставније да комуницирају са преводиоцима посредством онлајн платформе као што је веблејт, али то је наравно потпуно опционално. .SS "Туторијал за брзи почетак" .IX Subsection "Туторијал за брзи почетак" Претпоставимо да одржавате програм под именом \fBfoo\fR који има man страницу \fIman/foo.1\fR написану на енглеском језику (посредним језиком већине пројеката отвореног кода, мада \fBpo4a\fR може да се користи за било коју комбинацију изворног и циљног језика). Пре неког времена, неко је доставио немачки превод под именом \fIman/foo.de.1\fR и нестао. Ово представља проблем јер сте управо добили извештај о багу који каже да ваша документација садржи озбиљно погрешну информацију која мора да се исправи у свим језицима, али ви не познајете немачки језик тако да можете изменити само оригинал, а не и превод. Затим, још један сарадник жели да допринесе превод на јапански, још један језик којим не владате. .PP Време је двоју документацију конвертујете у \fBpo4a\fR и тако решите хаос у одржавању документације. Желите да ажурирате документ када је то потребно, желите да колегама преводиоцима олакжате посао и желите обезбедити да ваши кориснии никада не виде застарелу и услед тога нетачну документацију. .PP Конверзија се састоји из два корака: постављање po4a инфраструктуре и конверзија претходно постојећег немачког превода како би се сачувао ранији рад. Овај други део се ради помоћу скрипте po4a\-gettextize, као што следи. Из детаља у документацији скрипте \fBpo4a\-gettextize\fR\|(1) се види да је овај процес ретко кад у потпуности аутоматски, али једном када се обави, фајл \fBde.po\fR који садржи немачки превод може да се интегрише у ваш po4a процес рада. .PP .Vb 1 \& po4a\-gettextize \-\-format man \-\-master foo.1 \-\-localized foo.de.1 \-\-po de.po .Ve .PP Хајде сада конфигуришемо po4a. Уз погодан распоред фајлова, ваша конфигурација може да буде овако једноставна: .PP .Vb 1 \& [po_directory] man/po4a/ \& \& [type: man] man/foo.1 $lang:man/translated/foo.$lang.1 .Ve .PP Она наводи да се сви \s-1PO\s0 фајлови (који садрже рад преводилаца) налазе у директоријуму \fIman/po4a/\fR и да имате само један мастер фајл, \fIman/foo.1\fR. Ако имате неколико мастер фајлова, морали бисте да наведете неколико линија сличних другој линији. Свака та линија такође наводи и где да се упишу одговарајући фајлови превода. У овом случају, немачки превод фајла \fIman/foo.1\fR је \fIman/translated/foo.de.1\fR. .PP Последња ствар која треба да се уради како би се комплетирала конфигурација \fBpo4a\fR је \s-1POT\s0 фајл који садржи материјал шаблона који треба да се користи када се започиње нови превод. Једноставно креирајте празан фајл са .pot екстензијом у наведеном po_directory (нпр. \fIman/po4a/foo.pot\fR), а \fBpo4a\fR ће га испунити са очекиваним садржајем. .PP Ево подсетника фајлова који се користе у овом подешавању: .PP .Vb 7 \& ├── man/ \& │ ├── foo.1 <\- Оригинална man страница, на енглеском језику. \& │ ├── po4a/ \& │ │ ├── de.po <\- немачки PO превод, добијен gettextизацијом. \& │ │ └── foo.pot <\- POT шаблон будућих превода (у почетку празан) \& │ └── translated/ <\- Директоријум у који ће се смештати преводи \& └── po4a.cfg <\- Конфигурациони фајл. .Ve .PP Једном када је подешен, извршавањем програма \fBpo4a\fR се парсира ваша документација, ажурира \s-1POT\s0 фајл шаблона, он се употреби за ажурирање \s-1PO\s0 фајлова превода, а ти фајлови се употребе за ажурирање фајлова превода документације. Све у једној команди: .PP .Vb 1 \& po4a \-\-verbose po4a.cfg .Ve .PP И то је то. \fBpo4a\fR је сада у потпуности конфигурисан. Када исправите грешку у \fIman/foo.1\fR, неисправан пасус у немачком преводу ће се заменити исправљеним текстом на енглеском. Мешање језика није баш оптимално, али то је једини начин да се у преводима које чак и не разумете исправе грешке и да се обезбеди да је садржај који се представи корисницима увек тачан. Ажурирање немачког превода је такође много једноставније у одговарајућем \s-1PO\s0 фајлу, тако да мешавина језика вероватно неће дуго потрајати. Коначно, када вам преводилац на јапански достави jp.po преведени фајл, једноставно га убаците у директоријум \fIman/po4a/po/\fR. Када поново покренете \fBpo4a\fR, преведена страница ће се појавити као \fIman/translated/foo.jp.1\fR (у случају да је преведена потребна количина текста). .SH "ОПЦИЈЕ" .IX Header "ОПЦИЈЕ" .IP "\fB\-k\fR, \fB\-\-keep\fR" 4 .IX Item "-k, --keep" Најмањи ниво преведености који је потребан да се резултујући фајл задржи (тј. запише) (подразумевано: 80). То значи да је подразумевано потребно да барем 80% неког фајла буде преведено како би се његов превод записао на диск. .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Приказује кратку поруку помоћи. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Скуп карактера којим су записани фајлови који садрже документе за превод. Имајте на уму да сви мастер документи морају да користе исти скуп карактера. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Скуп карактера који користе фајлови локализованих докумената. Имајте на уму да ће сви преведени документи користити исти скуп карактера. .IP "\fB\-A\fR, \fB\-\-addendum\-charset\fR" 4 .IX Item "-A, --addendum-charset" Скуп карактера додатка. Имајте на уму да би сви додаци требало да буду записани употребом истог скупа карактера. .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" Приказује верзију скрипте и завршава извршавање. .IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 .IX Item "-v, --verbose" Увећава детаљност извештавања програма. .IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 .IX Item "-q, --quiet" Умањује детаљност извештавања програма. .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Исписује неке информације битне за отклањање грешака. .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-o, --option" Додатна опција (или више њих) које се прослеђују додатку формата. Погледајте документацију сваког од додатака да сазнате више информација о важећим опцијама и њиховом значењу. На пример, AsciiDoc парсеру бисте могли да проследите '\-o tablecells', док би текст парсер прихватио '\-o tabs=split'. .IP "\fB\-f\fR, \fB\-\-force\fR" 4 .IX Item "-f, --force" \&\s-1POT\s0 и \s-1PO\s0 фајлови се увек генеришу, чак и у случају када \fBpo4a\fR сматра да то није неопходно. .Sp Подразумевано понашање (када није наведено \fB\-\-force\fR) је као што следи: .RS 4 .Sp .RS 4 У случају да \s-1POT\s0 фајл већ постоји, он се регенерише из мастер документа или ако је конфигурациони фајл новији (само ако није наведено \fB\-\-no\-update\fR). \s-1POT\s0 фајл се такође уписује у привремени документ и \fBpo4a\fR проверава да ли су измене заиста неопходне. .Sp Такође, превод се регенерише само у случају када је његов мастер документ, \s-1PO\s0 фајл, један од његових додатака или конфигурациони фајл новији. Како би се спречио покушај регенерације превода који не пролазе тест потребног минималног процента завршетка (погледајте \fB\-\-keep\fR), може да се креира фајл са \fI.po4a\-stamp\fR екстензијом (погледајте \fB\-\-stamp\fR). .RE .RE .RS 4 .Sp У случају да мастер документ укључује фајлове, требало би да користите заставицу \fB\-\-force\fR јер се време модификације ових фајлова не узима обзир. .Sp \&\s-1PO\s0 фајлови се увек регенеришу сагласно \s-1POT\s0 фајлу са \fBmsgmerge \-U\fR. .RE .IP "\fB\-\-stamp\fR" 4 .IX Item "--stamp" Наводи \fBpo4a\fR да креира печат фајлове у случају да се превод не генерише јер проценат завршености није прешао задату границу. Ови печат фајлови се именују сагласно са очекиваним преведеним документом, и имају \fI.po4a\-stamp\fR екстензију. .Sp Напомена: ово само активира креирање \fI.po4a\-stamp\fR фајлова. Печат фајлови се увек користе ако постоје, и могу да се обришу помоћу \fB\-\-rm\-translations\fR или када се фајл комплетно преведе. .IP "\fB\-\-no\-translations\fR" 4 .IX Item "--no-translations" Не генеришу се преведени документи, само се ажурирају \s-1POT\s0 и \s-1PO\s0 фајлови. .IP "\fB\-\-no\-update\fR" 4 .IX Item "--no-update" \&\s-1POT\s0 и \s-1PO\s0 фајлови се не мењају, могуће је само да се ажурира превод. .IP "\fB\-\-keep\-translations\fR" 4 .IX Item "--keep-translations" Задржава постојеће фајлове превода чак и у случају када превод не задовољава критеријум задат са \fB\-\-keep\fR. Ова опција не креира нове фајлове превода са мало садржаја, али ће да сачува постојеће преводе који постају застарели услед измена над мастер фајловима. .Sp УПОЗОРЕЊЕ: ова заставица на прилично драстичан начин мења понашање програма po4a: ваши преведени фајлови се уопште неће ажурирати све док се превод не побољша. Користите ову заставицу само у случају да вам више одговара да достављате застарели превод документације него да достављате прецизну али непреведену документацију. .IP "\fB\-\-rm\-translations\fR" 4 .IX Item "--rm-translations" Уклања преведене фајлове (имплицира \fB\-\-no\-translations\fR). .IP "\fB\-\-no\-backups\fR" 4 .IX Item "--no-backups" Ова заставица нема никакву функцију почевши од верзије 0.41, и може бити уклоњена у наредним издањима програма. .IP "\fB\-\-rm\-backups\fR" 4 .IX Item "--rm-backups" Ова заставица нема никакву функцију почевши од верзије 0.41, и може бити уклоњена у наредним издањима програма. .IP "\fB\-\-translate\-only\fR \fIпреведени\-фајл\fR" 4 .IX Item "--translate-only преведени-фајл" Преводи само наведени фајл. Може да буде корисно за убрзавање обраде у случају када конфигурациони фајл садржи доста фајлова. Имајте на уму да ова опција не ажурира \s-1PO\s0 и \s-1POT\s0 фајлове. Ова опција може да се употреби више пута. .IP "\fB\-\-variable\fR \fIпром\fR\fB=\fR\fIвредност\fR" 4 .IX Item "--variable пром=вредност" Дефинише променљиву која ће да се развије у \fBpo4a\fR конфигурационом фајлу. Свако појављивање \fI$(пром)\fR ће да се замени са \fIвредност\fR. Ова опција може да се користи више пута. .IP "\fB\-\-srcdir\fR \fIИЗВОРНИДИР\fR" 4 .IX Item "--srcdir ИЗВОРНИДИР" Поставља базни директоријум за све улазне документе наведене у \fBpo4a\fR конфигурационом фајлу. .Sp Ако су наведени и \fIциљнидир\fR и \fIизворнидир\fR, улазни фајлови се траже у следећим директоријумима, према редоследу: \fIциљнидир\fR, текући директоријум и \fIизворнидир\fR. Излазни фајлови се записују у \fIциљнидир\fR ако је наведен, или у текући директоријум. .IP "\fB\-\-destdir\fR \fIЦИЉНИДИР\fR" 4 .IX Item "--destdir ЦИЉНИДИР" Поставља базни директоријум за све излазне документе наведене у \fBpo4a\fR конфигурационом фајлу (погледајте \fB\-\-srcdir\fR изнад). .SS "Опције које мењају \s-1POT\s0 заглавље" .IX Subsection "Опције које мењају POT заглавље" .IP "\fB\-\-porefs\fR \fIтип\fR" 4 .IX Item "--porefs тип" Наводи форамт референци. Аргумент \fIтип\fR може да буде једно од: \fBnever\fR да се не креирају никакве референце, \fBfile\fR да се наведе само фајл без броја линије, \fBcounter\fR да се број линије замени растућим бројачем, и \fBfull\fR да се креирају комплетне референце (подразумевано: full). .IP "\fB\-\-wrap\-po\fR \fBno\fR|\fBnewlines\fR|\fIброј\fR (подразумевано: 76)" 4 .IX Item "--wrap-po no|newlines|број (подразумевано: 76)" Наводи како би po фајл требало да се обавија. Овим вам се даје избор између фајлова који су лепо обавијени али би могли да доведу до git конфликата, или фајлова који се лакше обрађују аутоматски, али су компликованији за читање. .Sp Раније је gettext свита програма реформатирала po фајлове на 77ој колони ради лепшег изгледа. Ова опција одрешује понашање програма po4a. Ако се постави на нумеричку вредност, po4a ће да обавије po након колоне под тим бројем и након прелома линија у садржају. Ако се постави на \fBnewlines\fR, po4a ће само да раздели msgid и msgstr након прелома линија у садржају. Ако се постави на \fBno\fR, po4a уопште неће да обавија po фајл. gettext алати које интерно користимо увек обавијају референтне коментаре. .Sp Имајте на уму да ова опција не утиче на то како се msgid и msgstr обавијају, тј. на то како се додају преломи линија у садржај ових стрингова. .IP "\fB\-\-master\-language\fR" 4 .IX Item "--master-language" Језик изворних фајлова који садрже документе који се преводе. Водите рачуна да сви мастер документи морају да буду написани истим језиком. .IP "\fB\-\-msgid\-bugs\-address\fR \fIимејл@адреса\fR" 4 .IX Item "--msgid-bugs-address имејл@адреса" Поставља адресу за пријаву msgid багова. Подразумевано, креирани \s-1POT\s0 немају Report-Msgid-Bugs-To поља. .IP "\fB\-\-copyright\-holder\fR \fIстринг\fR" 4 .IX Item "--copyright-holder стринг" Поставља власника права умножавања у \s-1POT\s0 заглавље. Подразумевана вредност је \*(L"Free Software Foundation, Inc.\*(R" .IP "\fB\-\-package\-name\fR \fIстринг\fR" 4 .IX Item "--package-name стринг" Поставља име пакета у \s-1POT\s0 заглавље. Подразумевано је \*(L"\s-1PACKAGE\*(R".\s0 .IP "\fB\-\-package\-version\fR \fIстринг\fR" 4 .IX Item "--package-version стринг" Поставља верзију пакета у \s-1POT\s0 заглавље. Подразумевано је \*(L"\s-1VERSION\*(R".\s0 .SS "Опције за измену \s-1PO\s0 фајлова" .IX Subsection "Опције за измену PO фајлова" .IP "\fB\-\-msgmerge\-opt\fR \fIопције\fR" 4 .IX Item "--msgmerge-opt опције" Додатне опције за \fBmsgmerge\fR(1). .Sp Напомена: \fB\f(CB$lang\fB\fR ће да се развије у текући језик. .IP "\fB\-\-no\-previous\fR" 4 .IX Item "--no-previous" Ова опција уклања \fB\-\-previous\fR из опција које се прослеђују програму \fBmsgmerge\fR. Ово је неопходно да би се подржавале верзије програма \fBgettext\fR старије од 0.16. .IP "\fB\-\-previous\fR" 4 .IX Item "--previous" Ова опција додаје \fB\-\-previous\fR опцијама које се прослеђују програму \fBmsgmerge\fR. Захтева да је верзија програма \fBgettext\fR 0.16 или каснија, и подразумевано је активирана. .SH "КОНФИГУРАЦИОНИ ФАЈЛ" .IX Header "КОНФИГУРАЦИОНИ ФАЈЛ" Програм po4a очекује конфигурациони фајл као свој аргумент. Овај фајл мора да садржи следеће елементе: .IP "\(bu" 4 Путању до \s-1PO\s0 фајлова и листу језика који постоје у пројекту; .IP "\(bu" 4 Необавезно, неке глобалне опције и такозване конфигурационе алијасе који се користе као шаблони за конфигурисање појединачних мастер фајлова; .IP "\(bu" 4 Листу сваког од мастер фајлова који се преводи, заједно са специфичним параметрима. .PP Све линије садрже команду унутар великих заграда, иза које следе њени параметри. Коментари почињу карактером '#' и протежу се до краја линије. Можете да означите крај линије како бисте развукли команду на неколико линија. .PP На овој страници су приказани неки комплетни примери, док остале можете да пронађете у \f(CW\*(C`t/cfg\*(C'\fR директоријуму дистрибуције изворног кода. .SS "Проналажење \s-1PO\s0 и \s-1POT\s0 фајлова" .IX Subsection "Проналажење PO и POT фајлова" Најједноставније решење је да се експлицитно зада путања до \s-1POT\s0 и \s-1PO\s0 фајлова, као што следи: .PP .Vb 1 \& [po4a_paths] man/po/project.pot de:man/po/de.po fr:man/po/fr.po .Ve .PP Ово најпре наводи путању до \s-1POT\s0 фајла, а затим путање до немачких и француских \s-1PO\s0 фајлова. .PP Да би се умањио ризик грешака приликом копирања/постављања, исте информације могу да се запишу на следећи начин: .PP .Vb 2 \& [po4a_langs] fr de \& [po4a_paths] man/po/project.pot $lang:man/po/$lang.po .Ve .PP \&\f(CW$lang\fR компонента се аутоматски развија помоћу наведене листе језика, чиме се смањује ризик грешке при копирању/налепљивању онда када се додаје нови језик. .PP Исте информације можете додатно да скратити навођењем само путање директоријума који садржи ваш пројекат превода, као што следи. .PP .Vb 1 \& [po_directory] man/po/ .Ve .PP Наведени директоријум мора да садржи скуп \s-1PO\s0 фајлова, сваки назван \fI\s-1XX\s0.po\fR где је \f(CW\*(C`XX\*(C'\fR \s-1ISO 639\-1\s0 језика који се користи у том фајлу. Директоријум такође мора да садржи један \s-1POT\s0 фајл, са \f(CW\*(C`.pot\*(C'\fR екстензијом фајла. Приликом првог покретања овај фајл може да буде празан, али мора да постоји (po4a не може да погоди име које треба да користи испред екстензије). .PP Имајте на уму да морате изабрати само једно од \f(CW\*(C`po_directory\*(C'\fR и \f(CW\*(C`po4a_paths\*(C'\fR. Прво (\f(CW\*(C`po_directory\*(C'\fR) је компактније, додатно умањује ризик грешака приликом копирања/убацивања, али вас приморава да користите очекивану структуру пројекта, као и имена фајлова. Друго (\f(CW\*(C`po4a_paths\*(C'\fR), је експлициније, вероватно и читљивије, и пожељно да се користи када подешавате свој први пројекат са po4a. .PP \fIЦентрализовани или подељени \s-1PO\s0 фајлови?\fR .IX Subsection "Централизовани или подељени PO фајлови?" .PP Програм po4a подразумевано креира један јединствени \s-1PO\s0 фајл за сваки циљни језик, који садржи комплетан садржај вашег пројекта превода. Како ваш пројекат расте, величина ових фајлова може да постане проблематична. Када се користи веблејт, могуће је да се наведу приоритети за сваки сегмент превода (тј. msgid) тако да се прво преведу они битнији. Ипак, неки преводилачки тимови радије деле садржај на неколико фајлова. .PP Ако желите да имате један \s-1PO\s0 фајл за сваки мастер фајл, потребно је само да користите стринг \f(CW$master\fR у имену ваших \s-1PO\s0 фајлова у \f(CW\*(C`[po4a_paths]\*(C'\fR линији, као што следи. .PP .Vb 1 \& [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po .Ve .PP Овом линијом ће po4a да произведе одвојене \s-1POT\s0 и \s-1PO\s0 фајлове за сваки документ који се преводи. На пример, ако имате 3 документа и 5 језика, добићете 3 \s-1POT\s0 фајлова и 15 \s-1PO\s0 фајлова. Они добијају име наведено \f(CW\*(C`po4a_paths\*(C'\fR шаблоном, у којем се \f(CW$master\fR замењује са базним именом сваког документа који се преводи. У случају да дође до конфликта, на следећи начин можете навести \s-1POT\s0 фајл који треба да се користи, параметром \f(CW\*(C`pot=\*(C'\fR. .PP Ова могућност такође може да се употреби у циљу груписања неколико преведених фајлова у исти \s-1POT\s0 фајл. Следећи пример генерише само 2 \s-1POT\s0 фајла: \fIl10n/po/foo.pot\fR (који садржи материјал из \fIfoo/gui.xml\fR) и \fIl10n/po/bar.pot\fR (који садржи материјал и из \fIbar/gui.xml\fR и из \fIbar/cli.xml\fR). .PP .Vb 5 \& [po4a_langs] de fr ja \& [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po \& [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml pot=foo \& [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml pot=bar \& [type: xml] bar/cli.xml $lang:bar/cli.$lang.xml pot=bar .Ve .PP У подељеном режиму, програм \fBpo4a\fR креира привремени компендијум током ажурирања \s-1PO\s0 фајлова, како би се делили преводи из свих \s-1PO\s0 фајлова. Ако два \s-1PO\s0 files фајла имају различите преводе за исти стринг, програм \fBpo4a\fR ће да означи стринг као fuzzy и поставиће оба превода у све \s-1PO\s0 фајлове који садрже тај стринг. Када преводилац уклони fuzzy ознаку и изабере један од превода, тај превод се аутоматски користи у сваком \s-1PO\s0 фајлу. .SS "Навођење фокумената за превођење" .IX Subsection "Навођење фокумената за превођење" Такође морате да наведете листу докумената који треба да се преведу. За сваки мастер фајл морате да наведете који парсер формата ће да се користи, локацију произведеног преведеног документа, и необавезно, нека подешавања. Ево примера: .PP .Vb 5 \& [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \e \& de:doc/de/mein_kram.sgml \& [type: man] script fr:doc/fr/script.1 de:doc/de/script.1 \& [type: docbook] doc/script.xml fr:doc/fr/script.xml \e \& de:doc/de/script.xml .Ve .PP Али опет, читање и измена ових компликованих линија није једноставна, нпр. када се додаје нови језик. Много је једноставније да се ствари реорганизују употребом \f(CW$lang\fR шаблона као што следи: .PP .Vb 3 \& [type: sgml] doc/my_stuff.sgml $lang:doc/$lang/my_stuff.sgml \& [type: man] script.1 $lang:po/$lang/script.1 \& [type: docbook] doc/script.xml $lang:doc/$lang/script.xml .Ve .SS "Навођење опција" .IX Subsection "Навођење опција" Постоје два типа опција: \fIpo4a опције\fR су подразумеване вредности за опције командне линије програма po4a док се \fIформат опције\fR користе за промену понашања парсера формата. Као \fIpo4a опције\fR бисте могли на пример да у свом конфигурационом фајлу наведете да је подразумевана вредност параметра командне линије \fB\-\-keep\fR 50% уместо 80%. \fIФормат опције\fR су документоване на одређеној страници сваког модула за парсирање, нпр. \fBLocale::Po4a::Xml\fR\|(3pm). На пример, могли бисте да \s-1XML\s0 парсеру проследите \fBnostrip\fR како не би уклонио размаке око стрингова које пронађе. .PP Ове опције можете да проследите одређеном мастер фајлу, или чак одређеном преводу тог фајла употребом \f(CW\*(C`opt:\*(C'\fR и \f(CW\*(C`opt_XX:\*(C'\fR за језик \f(CW\*(C`XX\*(C'\fR. У наредном примеру, опција \fBnostrip\fR се прослеђује \s-1XML\s0 парсеру (за све језике), док се граница за француски превод спушта на 0% (дакле, увек се задржава). .PP .Vb 1 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-o nostrip" opt_fr:"\-\-keep 0" .Ve .PP У сваком случају, ови сегменти конфигурације морају да се нађу на крају линије. Најпре мора да дође декларација фајлова, затим додатак ако постоји (погледајте испод), па тек онда опције. Груписање сегмената конфигурације није толико битно, јер се интерно елементи спајају као стрингови. Следећи примери су сви еквивалентни међусобно: .PP .Vb 3 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-\-keep 20" opt:"\-o nostrip" opt_fr:"\-\-keep 0" \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-\-keep 20 \-o nostrip" opt_fr:"\-\-keep 0" \& [type:xml] toto.xml $lang:toto.$lang.xml opt:\-\-keep opt:20 opt:\-o opt:nostrip opt_fr:\-\-keep opt_fr:0 .Ve .PP Имајте на уму да се опције специфичне за језик не користе када се изграђује \s-1POT\s0 фајл. Тако је, на пример, немогуће да се \fBnostrip\fR проследи парсеру само када се изграђује француски превод, јер се исти \s-1POT\s0 фајл користи за ажурирање сваког језика. Дакле, једине опције које могу да буду специфичне за језик су оне које се користе када се прави превод, као што је опција \f(CW\*(C`\-\-keep\*(C'\fR. .PP \fIКонфигурациони алијаси\fR .IX Subsection "Конфигурациони алијаси" .PP Када желите да се исте опције проследе већем броју фајлова, најбоље је да дефинишете алијас типа, на начин како је објашњено у наставку. У следећем примеру, \f(CW\*(C`\-\-keep 0\*(C'\fR се прослеђује сваком италијанском преводу употребом типа \f(CW\*(C`test\*(C'\fR, који је проширење типа \f(CW\*(C`man\*(C'\fR. .PP .Vb 2 \& [po4a_alias:test] man opt_it:"\-\-keep 0" \& [type: test] man/page.1 $lang:man/$lang/page.1 .Ve .PP Постојећи тип такође можете да проширите поновним коришћењем истог имена за алијас, као што следи. То се не интерпретира као погрешна рекурзивна дефиниција. .PP .Vb 2 \& [po4a_alias:man] man opt_it:"\-\-keep 0" \& [type: man] man/page.1 $lang:man/$lang/page.1 .Ve .PP \fIГлобалне подразумеване опције\fR .IX Subsection "Глобалне подразумеване опције" .PP \&\f(CW\*(C`[options]\*(C'\fR линије можете такође да употребите за дефинисање опција које морају да се користе за све фајлове, без обзира на њихов тип. .PP .Vb 1 \& [options] \-\-keep 20 \-\-option nostrip .Ve .PP Као и са опцијама командне линије, и у конфигурационом фајлу можете да скратите параметре који се прослеђују: .PP .Vb 1 \& [options] \-k 20 \-o nostrip .Ve .PP \fIПриоритет опција\fR .IX Subsection "Приоритет опција" .PP Опције свих извора се спајају, чиме се једноставно обезбеђује да детаљније опције могу преиначити подразумеване вредности. Редослед је као што следи: .IP "\(bu" 4 \&\f(CW\*(C`[options]\*(C'\fR линије постављају подразумеване вредности које било који други извор може да преиначи. .IP "\(bu" 4 Затиме се користе алијаси типа. Подешавања за одређени језик преиначују подешавања која се примењују за све језике. .IP "\(bu" 4 Подешавања која су посебна за дати мастер фајл преиначују и подразумевана и она која долазе од алијаса типа. И у овом случају такође, подешавања специфична за језик преиначују глобална подешавања. .IP "\(bu" 4 Коначно, параметри који се задају у командној линији програма \fBpo4a\fR преиначују било која подешавања из конфигурационог фајла. .PP \fIПример\fR .IX Subsection "Пример" .PP Ево примера који показује на који начин се обележавају размаци и знаци навода: .PP .Vb 1 \& [po_directory] man/po/ \& \& [options] \-\-master\-charset UTF\-8 \& \& [po4a_alias:man] man opt:"\-o \e"mdoc=NAME,SEE ALSO\e"" \& [type:man] t\-05\-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \e \& opt:"\-k 75" opt_it:"\-L UTF\-8" opt_fr:\-\-verbose .Ve .SS "Додатак: додавање допунског садржаја у превод" .IX Subsection "Додатак: додавање допунског садржаја у превод" Ако желите да превод допуните додатним одељком, не пример, да изјавите захвалност преводиоцу, онда морате да дефинишете додатак линији која дефинише ваш мастер фајл. Молимо вас да погледате страницу \fBpo4a\fR\|(7) како би сазнали више детаља у вези синтаксе фајлова додатака. .PP .Vb 2 \& [type: pod] script fr:doc/fr/script.1 \e \& add_fr:doc/l10n/script.fr.add .Ve .PP Такође можете да употребите језичке шаблоне на начин који следи: .PP .Vb 2 \& [type: pod] script $lang:doc/$lang/script.1 \e \& add_$lang:doc/l10n/script.$lang.add .Ve .PP У случају да додатак не може да се примени превод се одбацује. .PP \fIМодификатори за декларацију додатка\fR .IX Subsection "Модификатори за декларацију додатка" .PP Модификатори додатка могу да поједноставе конфигурациони фајл у случају када сви језици не нуде додатак, или када се листа додатака мења од језика до језика. Модификатор је један карактер који се налази испред имена фајла. .IP "\fB?\fR" 2 .IX Item "?" Укљчује \fIaddendum_path\fR у случају да овај фајл постоји, у супротном не ради ништа. .IP "\fB@\fR" 2 .IX Item "@" \&\fIaddendum_path\fR није регуларан додатак већ фајл који садржи листу додатака, по један у свакој линији. Испред сваког додатка могу да се наведу модифкатори. .IP "\fB!\fR" 2 .IX Item "!" \&\fIaddendum_path\fR се одбацује, не учитава се и ниједна каснија спецификација додатка га неће учитати. .PP Оно што следи укључује додатак у било који језик, али само у случају да постоји. Ако додатак не постоји, не пријављује се грешка. .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:?doc/l10n/script.$lang.add .Ve .PP Оно што следи укључује листу додатака за сваки језик: .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:@doc/l10n/script.$lang.add .Ve .SS "Филтрирање преведених стрингова" .IX Subsection "Филтрирање преведених стрингова" Понекад неке стрингове желите да сакријете од процеса превођења. У том циљу, вашем мастер фајлу можете да додате параметар \f(CW\*(C`pot_in\*(C'\fR када се изграђује \s-1POT\s0 file. Ево примера: .PP .Vb 3 \& [type:docbook] book.xml \e \& pot_in:book\-filtered.xml \e \& $lang:book.$lang.xml .Ve .PP Са овим подешавањем, стрингови који треба да се преведу биће извучени из \fIbook\-filtered.xml\fR (који мора да се креира пре позивања програма \fBpo4a\fR) док ће преведени фајлови да се изграде из \fIbook.xml\fR. Као резултат, било који стринг који је део \fIbook.xml\fR али се не налази у \fIbook\-filtered.xml\fR неће постати део \s-1PO\s0 фајлова, чиме се преводиоци спречавају да их преведу. Тако да ће ови стрингови остати неизмењени када се буде креирали преведени документи. Наравно да ово смањује ниво преведености, тако да ће вам вероватно бити потребна опција \f(CW\*(C`\-\-keep\*(C'\fR како би обезбедили да се документи ипак креирају. .SH "ПОГЛЕДАЈТЕ ТАКОЂЕ" .IX Header "ПОГЛЕДАЈТЕ ТАКОЂЕ" \&\fBpo4a\-gettextize\fR\|(1), \fBpo4a\fR\|(7). .SH "АУТОРИ" .IX Header "АУТОРИ" .Vb 3 \& Дени Барбије \& Никола Франсоа \& Мартин Квинсон (mquinson#debian.org) .Ve .SH "ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА" .IX Header "ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА" Ауторска права 2002\-2022 \s-1SPI,\s0 inc. .PP Овај програм је слободан софтвер; можете да га редистрибуирате и/или мењате под условима \s-1GPL\s0 (погледајте фајл \s-1COPYING\s0).