.\" 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-GETTEXTIZE 1p" .TH PO4A-GETTEXTIZE 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\-gettextize \- конверзија оригиналног фајла (и његових превода) у \s-1PO\s0 фајл .SH "СИНОПСИС" .IX Header "СИНОПСИС" \&\fBpo4a\-gettextize\fR \fB\-f\fR \fIfmt\fR \fB\-m\fR \fImaster.doc\fR \fB\-l\fR \fI\s-1XX\s0.doc\fR \fB\-p\fR \fI\s-1XX\s0.po\fR .PP (\fI\s-1XX\s0.po\fR је излаз, све остало су улази) .SH "ОПИС" .IX Header "ОПИС" po4a (\s-1PO\s0 for anything [\s-1PO\s0 за било шта]) олакшава одржавање превода докумената употребом класичних gettext алата. Главна особина po4a је да раскида везу између садржаја превода и структуре његовог документа. Молимо да погледате страницу \fBpo4a\fR\|(7) у којој је изложен прости увод у овај пројекат. .PP Скрипта \fBpo4a\-gettextize\fR вам помаже да конвертујете већ постојеће преводе у процес рада заснован на po4a. Потребно је да се ово уради једном током конверзије у po4a како би се искористио постојећи превод, а не редовно након конверзије пројекта. Овај заморан процес је детаљно објашњен у одељку 'Конвертовање ручног превода у po4a пројекат'. .PP Морате да наведете и мастер фајл (нпр. изворни фајл на енглеском језику) и постојећи преведени фајл (нпр. ранији покушај превода без употребе po4a). Ако наведете више од једног мастер или преведеног фајла, они ће се употребити сукцесивно, али може да буде једноставније да gettextизујете сваку страницу или поглавље посебно, па да онда употребите \fBmsgmerge\fR да спојите све добијене \s-1PO\s0 фајлове. Како год желите. .PP Ако мастер документ садржи не\-ASCII карактере, ново генерисани \s-1PO\s0 фајл ће бити кодиран у \s-1UTF\-8.\s0 У случају када је мастер документ потпуно написан \s-1ASCII\s0 карактерима, генерисани \s-1PO\s0 ће да употреби кодирање преведеног улазног документа. .SH "ОПЦИЈЕ" .IX Header "ОПЦИЈЕ" .IP "\fB\-f\fR, \fB\-\-format\fR" 4 .IX Item "-f, --format" Формат документације који се обрађује. Да бисте видели списак доступних формата употребите опцију \fB\-\-help\-format\fR. .IP "\fB\-m\fR, \fB\-\-master\fR" 4 .IX Item "-m, --master" Фајл који садржи мастер документ који се преводи. Ову опције можете да употребите више пута ако желите да gettextујете више докумената. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Скуп карактера фајла који садржи документ који се преводи. .IP "\fB\-l\fR, \fB\-\-localized\fR" 4 .IX Item "-l, --localized" Фајл који садржи локализовани (преведени) документ. Ако сте навели више мастер фајлова, вероватно ћете хтети да употребом ове опције наведете више локализованих фајлова. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Скуп карактера фајла који садржи локализовани документ. .IP "\fB\-p\fR, \fB\-\-po\fR" 4 .IX Item "-p, --po" Фајл у који би требало да се упише каталог порука. Ако није задат, каталог порука ће да се испише на стандардни излаз. .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-o, --option" Додатна опција (или више њих) које се прослеђују додатку формата. Погледајте документацију сваког од додатака да сазнате више информација о важећим опцијама и њиховом значењу. На пример, AsciiDoc парсеру бисте могли да проследите '\-o tablecells', док би текст парсер прихватио '\-o tabs=split'. .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Приказује кратку поруку помоћи. .IP "\fB\-\-help\-format\fR" 4 .IX Item "--help-format" Списак формата документације које програм po4a разуме. .IP "\fB\-k\fR \fB\-\-keep\-temps\fR" 4 .IX Item "-k --keep-temps" Задржава привремене мастер и локализоване \s-1POT\s0 фајлове изграђене пре спајања. Ово може бити корисно да се разуме зашто ови фајлови постану десинхронизовани, што доводи до проблема у gettextизацији .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\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Исписује неке информације битне за отклањање грешака. .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 "Конвертовање ручног превода у po4a пројекат" .IX Subsection "Конвертовање ручног превода у po4a пројекат" \&\fBpo4a\-gettextize\fR синхронизује мастер и локализоване фајлове да би се њихов садржај издвојио у \s-1PO\s0 фајл. Из садржаја мастер фајла се креира \fBmsgid\fR, док се из садржаја локализованог фајла креира \fBmsgstr\fR. Овај процес је донекле осетљив: Нти стринг преведеног фајла би требало да буде превод Нтог стринга у оригиналу. .PP Gettextизација најбоље функционише ако успете да дођете до потпуно исте верзије оригиналног документа која је коришћена за прављење превода. Чак и онда, ако је оригинални преводилац променио структуру превода, може бити неопходно да преправљате и мастер и локализоване фајлове тако да се њихове структуре поравнају. Стога се саветује да радите са копијама оригиналних фајлова. .PP Интерно, сваки po4a парсер пријављује синтактични тип сваког издвојеног стринга. На тај начин се откривају десинхронизације током gettextизације. У примеру датом испод, мало је вероватно да је 4ти стринг у преводу (типа 'chapter') превод 4тог стринга у оригиналу (типа 'paragraph'). Вероватније је да је оригиналу додат нови пасус, или да су у преводу два пасуса из оригинала спојена у један. .PP .Vb 1 \& Оригинал Превод \& \& chapter chapter \& paragraph paragraph \& paragraph paragraph \& paragraph chapter \& chapter paragraph \& paragraph paragraph .Ve .PP \&\fBpo4a\-gettextize\fR ће детаљно да дијагностицира било какву десинхронизацију структуре. Када се то догоди, требало би ручно да уредите фајлове и да додате лажне пасусе или да ту и тамо уклоните неки садржај, све док се структуре оба документа саршено не поклопе. Испод су наведени неки од трикова којима се спашава већина постојећег превода док се ово ради. .PP Ако имате довољно среће да вам се структуре фајлова савршено поклапају без било какве интервенције, изградња исправног \s-1PO\s0 фајла траје неколико секунди. У супротном, врло брзо ћете схватити зашто овај процес има тако ружно име :) Чак и онда, gettextизација је често бржа од поновног превођења свега. Ја сам gettextизовао комплетну Perl документацију у једном дану упркос \fIвеликом броју\fR проблема са синхронизацијом. Узевши у обзир количину текста (2МБ оригиналног текста), поновно превођење без спашавања постојећег превода би захтевало неколико месеци рада. Уз то, овај гломазан посао је цена која мора да се плати како би се дошло до комфора који пружа програм po4a. Једном када се обави конверзија, синхронизација између мастер докумената и превода ће увек бити потпуно аутоматска. .PP Након успешне gettextизације, произведене документе би требало ручно прегледати да би се уочили диспаритети и тихе грешке, као што је објашњено испод. .PP \fIСавети и трикови за процес gettextизације\fR .IX Subsection "Савети и трикови за процес gettextизације" .PP gettextизација се прекида чим се детектује десинхронизација. \fBpo4a\-gettextize\fR је прилично детаљан када ствари не иду како треба. Он пријављује стрингове који се не подударају, њихове позиције у тексту, и тип сваког од њих. Уз то, \s-1PO\s0 фајл који је до тада генерисан се избацује као \fIgettextization.failed.po\fR како бисте могли даље да истражујете. .PP Ево неких трикова који могу да вам помогну у овом заморном процесу и који обезбеђују да спасите већи део преходног превода: .IP "\(bu" 4 Уклоните сав додатни садржај превода, као што је одељак у коме се одаје признање преводиоцима. Они би требало да се у \fBpo4a\fR уметну одвојено као додаци (погледајте \fBpo4a\fR\|(7)). .IP "\(bu" 4 Када уређујете фајлове како бисте им поравнали структуре, боље је да уређујте превод ако је то могуће. Заиста, ако измене оригинала нису суптилне, стара и нова верзија неће да се подударају приликом првог покретања програма po4a након gettextизације (погледајте испод). Неупарени превед ће свакако да се одбаци. Упркос томе, ипак ћете морати да уређујете оригинални документ ако је сувише компликовано да се омогући наставак gettextизације, чак и ако то значи да се један пасус превода одбацује. Важна ствар је да за почетак добијете први \s-1PO\s0 фајл. .IP "\(bu" 4 Не оклевајте да уконите било какав оригинални садржај који не постоји у преведеној верзији. Тај садржај ће касније аутоматски да се врати, када се \s-1PO\s0 фајл буде синхронизовао са документом. .IP "\(bu" 4 Вероватно ћете морати да обавестите оригиналног аутора о било каквим променама структуре у превпду које се чине оправданим. Проблеми у оригиналном документу би требало да се пријаве аутору. Ако се поправе у само у вашем преводу, само део заједнице ће знати за то. А и иначе је немогуће да се тако нешто уради када се користи po4a ;) Али највероватније ћете сачекати до краја конверзије у \fBpo4a\fR пре него што измените оригиналне фајлове. .IP "\(bu" 4 Понекад се садржаји пасуса подударају, али не и њихови типови. Исправљање овог проблема је углавном зависно од формата. Често се догађа у \s-1POD\s0 и man због чињенице да један од пасуса садржи линију која почиње празним простором док други не. У тим форматима, такви пасуси не могу да се обавију и стога постају други тип. Једноставно уклоните размак и биће како треба. Узрок такође може да буде и грешка у куцању имена ознаке у \s-1XML.\s0 .Sp Слично, два пасуса могу у \s-1POD\s0 фајлу да се споје у један када раздвајајућа линија садржи неке размаке, или када нема празне линије између \fB=item\fR линије и садржаја ставке. .IP "\(bu" 4 Понекад се чини да је порука о десинхронизацији необична јер је превод придружен погрешном оригиналном пасусу. То је знак неоткривеног проблема раније у процесу. Потражите стварну тачку десинхронизације испитивањем генерисаног фајла \fIgettextization.failed.po\fR, и исправите проблем тамо где се он заиста и налази. .IP "\(bu" 4 Дуплирани стрингови било у оригиналу или преводу могу да проузрокују и друге проблеме. Дуплирани стрингови се спајају у \s-1PO\s0 фајлове са две референце. То представља тешкоћу за алгоритам gettextизације, који користи просто један на један упаривање \fBmsgid\fR стрингова у мастер и локализованим фајловима. Међутим, сматра се да се скорашње верзије po4a исправно носе са дуплираним стринговима, тако да би требало да пријавите евентуални преостали проблем на који наиђете. .SS "Преглед фајлова које је генерисала скрипта \fBpo4a\-gettextize\fP" .IX Subsection "Преглед фајлова које је генерисала скрипта po4a-gettextize" Сваки фајл који је генерисала скрипта \fBpo4a\-gettextize\fR би требало ручно прегледати, чак и када је скрипта успешно завршила извршавање. Требало би да прелетите преко \s-1PO\s0 фајла и проверите да се \fBmsgid\fR и \fBmsgstr\fR заиста подударају. Још увек није неопходно да је превод савршен, пошто су све ставке ионако означене као несигурни преводи. Потребно је само да уочите очигледне проблеме са упаривањем јер ће се у наредним корацима лоше упарени преводи одбацити, а ви желите да их сачувате. .PP Срећом, овај корак не захтева да владате циљним језицима јер само желите да препознате сличне елементе у сваком \fBmsgid\fR и одговарајућем \fBmsgstr\fR. Ја као говорник француског, енглеског и помало немачког, ово могу да урадим барем за све европске језике, чак и ако на већини њих не могу да изговорим ни реч. Понекад успем да откријем проблем у упаривању на језицима који нису на латиници тако што посматрам дужину стринга, структуру фразе (да ли се поклапа број знакова питања?) као и остале трагове, али више волим да неко други провери те језике. .PP Ако откријете неподударање, уредите фајлове оригинала и превода као да је скрипта \fBpo4a\-gettextize\fR пријавила грешку, па покушајте поново. Једном када за свој претходни превод добијете солидан \s-1PO\s0 фајл, направите његову резервну копију све док po4a не почне исправно да функционише. .SS "Прво покретање програма \fBpo4a\fP" .IX Subsection "Прво покретање програма po4a" Најједноставнији начин да се подеси po4a систем је да напишете \fBpo4a.conf\fR конфигурациони фајл и да користите интегрисани po4a програм (\fBpo4a\-updatepo\fR и \fBpo4a\-translate\fR су застарели). За више детаља, молимо вас да погледате одељак „КОНФИГУРАЦИОНИ ФАЈЛ” у \fBpo4a\fR\|(1) документацији. .PP Када се \fBpo4a\fR покрене по први пут, за ажурирање \s-1PO\s0 фајлова који садрже старе преводе спашене кроз gettextизацију ће се употребити текућа верзија мастер докумената. Ово може да потраје доста дуго јер се многи \fBmsgid\fR стрингови из gettextизације не подударају у потпуности са елементима \s-1POT\s0 фајла изграђеног из скорашњих мастер фајлова. Због тога програм gettext мора да тражи најближи стринг употребом скупог алгоритма удаљености стрингова. На пример, прво извршавање над француским преводом Perl документације (\s-1PO\s0 фајл величине 5.5 \s-1MB\s0) је трајало око 48 сати (тако је, два цела дана), док накнадна трају само неколико секунди. .SS "Пренос ваших превода у продукцију" .IX Subsection "Пренос ваших превода у продукцију" Након првог извршавања, преводиоци могу да провере \s-1PO\s0 фајлове. \fBpo4a\-gettextization\fR је све ставке у \s-1PO\s0 фајлу означио као несигурне (fuzzy), чиме се обезбеђује темељна провера пре употребе. Преводиоци би требало да погледају сваку ставку и потврде да се спашени превод заиста подудара са текућим оригиналним текстом, по потреби ажурирају превод, и уклоне маркере несигурног превода. .PP Онда када се уклони довољно маркера несигурног превода, \fBpo4a\fR ће почети да генерише фајлове превода на диск и спремни сте да свој процес превода преместите у продукцију. Неки пројекти сматрају корисним да се ослоне на веблејт за координацију преводилаца и одржаваоца, али то је ван опсега система \fBpo4a\fR'. .SH "ПОГЛЕДАЈТЕ ТАКОЂЕ" .IX Header "ПОГЛЕДАЈТЕ ТАКОЂЕ" \&\fBpo4a\fR\|(1), \fBpo4a\-normalize\fR\|(1), \fBpo4a\-translate\fR\|(1), \fBpo4a\-updatepo\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).