.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (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 .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . 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 "LOCALE::PO4A::MAN.3PM 1" .TH LOCALE::PO4A::MAN.3PM 1 2024-06-26 "perl v5.38.2" "User Contributed Perl Documentation" .\" 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 "ИМЕ" Locale::Po4a::Man \- двосмерна конверзија страна упутства и PO фајлова .SH ОПИС .IX Header "ОПИС" Циљ po4a (PO for anything – PO за било шта) пројекта је да поједностави превођење (и што је још интересантније, одржавање превода) употребом gettext алата на деловима на којима се не очекује њихова употреба, као што је документација. .PP Locale::Po4a::Man је модул који помаже превођење документације у nroff формату (језик страница упутства) на друге [људске] језике. .SH "ПРЕВОЂЕЊЕ ПОМОЋУ PO4A::MAN" .IX Header "ПРЕВОЂЕЊЕ ПОМОЋУ PO4A::MAN" Овај модул се заиста својски труди да олакша живот преводиоцу. Текст који се представља преводиоцима није дословна копија текста који се налази у man страни. Наравно, грубљи делови nroff формата су скривени, тако да преводиоци не могу да се петљају са њима. .SS "Обмотавање текста" .IX Subsection "Обмотавање текста" Неувучени пасуси се за преводиоца аутоматски поново обавијају. То може довести до ситуације да постоје неке минималне разлике у генерисаном излазу, пошто правила поновног обавијања која користи groff нису баш најјаснија. На пример, два размака након заграда понекад остају очувана. .PP У сваком случају, разлика ће бити једино у позицији екстра размака у обавијеном пасусу и ја мислим да је вредна. .SS "Спецификација фонта" .IX Subsection "Спецификација фонта" Прва измена је у вези спецификација за промену фонта. У nroff, постоји неколико начина да се наведе да ли одређена реч треба да се испише малим словима, подебљано или курзивом. У тексту који се преводи, постоји само један начин, позајмљен из POD (Perl online documentation) формата: .IP "I<текст> \-\- курзивни текст" 4 .IX Item "I<текст> -- курзивни текст" еквивалентно са \efIтекст\efP или ".I текст" .IP "B<текст> \-\- подебљани текст" 4 .IX Item "B<текст> -- подебљани текст" еквивалентно са \efBтекст\efP или ".B текст" .IP "R<текст> \-\- латинични текст" 4 .IX Item "R<текст> -- латинични текст" еквивалентно са \efRтекст\efP .IP "CW<текст> \-\- текст са карактерима константне ширине" 4 .IX Item "CW<текст> -- текст са карактерима константне ширине" еквивалентно са \ef(CWтекст\efP или ".CW текст" .PP Опаска: CW писмо није доступно за све groff уређаје. Његова употреба се не препоручује. Понуђено је да би вама било једноставно. .SS "Аутоматско пресловљавање карактера" .IX Subsection "Аутоматско пресловљавање карактера" Програм po4a аутоматски пресловљава неке карактере како би се олакшало превођење или лекторисање превода. Ево листе пресловљавања: .IP "цртице на крају реда" 4 .IX Item "цртице на крају реда" У PO фајлу се цртице на крају реда (\-) и минус знаци (\e\-) у man страницама све пресловљавају у просте цртице (\-). Затим се све црте пресловљавају у roff минус знаке (\e\-) када се превод умеће у излазни документ. .Sp Преводиоци могу да форсирају цртице на крају реда употребом roff глифа ’\e[hy]’ у својим преводима. .IP "размаци на којима нема прелома реда" 4 .IX Item "размаци на којима нема прелома реда" Преводиоци у својим преводима могу да користе непреламајуће размаке. Ови непреламајући размаци (0xA0 у latin1 кодној страни) ће да се преслове у roff непреламајући размак (’\e ’). .IP "пресловљавања навода" 4 .IX Item "пресловљавања навода" `` и '' се пресловљавају у \e*(lq и \e*(rq респективно. .Sp Ако желе да спрече ова пресловљавања, преводиоци могу да уметну roff карактер нулте ширине (нпр. употребом `\e&` или '\e&' респективно). .SS "Стављање ’<’ и ’>’ и преводе" .IX Subsection "Стављање ’<’ и ’>’ и преводе" Пошто се ови карактери користе за одвајање делова под изменом фонта, не можете да их користите дословно. Употребите уместо њих E и E (као у POD, још једном). .SH "ОПЦИЈЕ КОЈЕ ПРИХВАТА ОВАЈ МОДУЛ" .IX Header "ОПЦИЈЕ КОЈЕ ПРИХВАТА ОВАЈ МОДУЛ" Ово су опције везане само за овај модул: .IP \fBdebug\fR 4 .IX Item "debug" Активира дибаговање за неке интерне механизме овог модула. Погледајте изворни код да сазнате за који делове може да се користи дибаг. .IP \fBverbose\fR 4 .IX Item "verbose" Повећава количину информација. .IP \fBgroff_code\fR 4 .IX Item "groff_code" Ова опција контролише понашање модула када наиђе на .de, .ie или .if одељке. Може да има следеће вредности: .RS 4 .IP \fIfail\fR 4 .IX Item "fail" Ово је подразумевана вредност. Модул ће прекинути са извршавањем када се наиђе на .de, .ie или .if одељак. .IP \fIverbatim\fR 4 .IX Item "verbatim" Назначава да .de, .ie или .if одељци морају да се копирају из оригинала у преведени документ онакви какви су. .IP \fItranslate\fR 4 .IX Item "translate" Назначава да ће .de, .ie или .if одељци да се предложе за превођење. Ову опцију би требало да користите само ако се стринг за превођење налази у једном од ових одељака. У супротном, бољи избор је \fIverbatim\fR. .RE .RS 4 .RE .IP \fBgenerated\fR 4 .IX Item "generated" Ова опција наводи да је фајл генерисан, и да програм po4a не би требало да покуша са откривањем да ли су man стране генерисане из неког другог формата. Ова опција је обавезна код употребе po4a над генерисаним man страницама. Имајте на уму да превођење генерисаних страница уместо извора често доводи до грешака, па није добра идеја. .IP \fBmdoc\fR 4 .IX Item "mdoc" Ова опција је корисна само за mdoc странице. .Sp Она одабира стриктнију подршку mdoc формата наводећи програм po4a да не преводи ’NAME’ одељак. mdoc странице чији је ’NAME’ одељак преведен уопште неће генерисати заглавље или подножје. .Sp Према groff_mdoc страници, одељци NAME, SYNOPSIS и DESCRIPTION су обавезни. Нема познатих проблема за превођењем одељака SYNOPSIS или DESCRIPTION, мада ове одељке можете да наведете и на следећи начин: \-o mdoc=NAME,SYNOPSIS,DESCRIPTION .Sp Овај mdoc проблем такође може да се реши са додатком, као што је овај: PO4A\-HEADER:mode=before;position=^.Dd .TH DOCUMENT_TITLE 1 "Month day, year" OS "Section Name" .PP Опције које следе наводе понашање кориснички дефинисаног макроа (.de захтевом), или класичног макроа који програм po4a не подржава. Они као аргумент узимају листу макроа раздвојених зарезима. На пример: .PP .Vb 1 \& \-o noarg=FO,OB,AR \-o translate_joined=BA,ZQ,UX .Ve .PP Напомена: ако програм po4a не подржава макро, а ви сматрате да је то стандардни roff макро, требало би да га доставите развојном тиму програма po4a. .IP \fBuntranslated\fR 4 .IX Item "untranslated" \&\fBuntranslated\fR наводи да овај макро (као и његови аргументи) не морају да се преведу. .IP \fBnoarg\fR 4 .IX Item "noarg" \&\fBnoarg\fR је као \fBuntranslated\fR, осим што ће програм po4a проверити да ниједан аргумент није додат макроу. .IP \fBtranslate_joined\fR 4 .IX Item "translate_joined" \&\fBtranslate_joined\fR наводи да програм po4a мора да предложи превођење аргумената макроа. .IP \fBtranslate_each\fR 4 .IX Item "translate_each" Са \fBtranslate_each\fR, аргументи ће такође бити предложени за превод, осим што ће сваки од њих да се преводи одвојено. .IP \fBno_wrap\fR 4 .IX Item "no_wrap" Ова опција као аргумент узима листу парова \fIпочетак\fR:\fIкрај\fR раздвојених зарезима, где су \fIпочетак\fR и \fIкрај\fR команде које ограђују почетак и крај одељка који не би требало да се поново обавија. .Sp Напомена: не ради се никакав тест да се осигура подударање команде \fIкрај\fR са својом командом \fIпочетак\fR; било која команда уређивања зауставља no_wrap режим. Ако имате \fIпочетак\fR (и одговарајући \fIкрај\fR) макро који нема \fIкрај\fR (и одговарајући \fIпочетак\fR), можете да наведете неки постојећи \fIкрај\fR (као fi) или \fIпочетак\fR (као nf) као његов пар. Ови макрои (и њихови аргументи) неће бити превођени. .IP \fBinline\fR 4 .IX Item "inline" Ова опција наводи листу макроа раздвојених зарезима који не смеју да преломе текући пасус. Тада ће стринг који треба да се преведе садржати \fIfoo <.bar baz qux> quux\fR, где је \fIbar\fR команда која би требало да се налази унутар текста, а \fIbaz qux\fR су њени аргументи. .IP \fBunknown_macros\fR 4 .IX Item "unknown_macros" Ова опција одређује како би програм po4a требало да се понаша када се наиђе на непознат макро. Подразумева се да програм po4a прекине извршавање са упозорењем. Може да има следеће вредности: \fBfailed\fR (подразумевана вредност), \fBuntranslated\fR, \fBnoarg\fR, \fBtranslate_joined\fR, или \fBtranslate_each\fR (погледајте изнад за објашњење ових вредности). .SH "ПИСАЊЕ MAN СТРАНИЦА САГЛАСНИХ СА PO4A::MAN" .IX Header "ПИСАЊЕ MAN СТРАНИЦА САГЛАСНИХ СА PO4A::MAN" Овај модул је и даље веома ограничен, и увек ће бити, јер он није прави nroff интерпретер. Било би могуће да се направи прави nroff интерпретер, чиме би аутори могли да користе све постојеће макрое, или да чак у својим страницама дефинишу и нове, али нисмо хтели то да урадимо. Било би сувише тешко, и мислили смо да није неопходно. Сматрамо да ако аутори man страница желе да виде своја дела преведена, морали би мало да се прилагоде како би олакшали посао преводиоцима. .PP Дакле, man парсер имплементиран у програм po4a има нека позната ограничења која баш и не желимо да исправимо, и која ће проузроковати неке проблеме које ћете морати да избегнете ако желите да видите преводиоце како се старају о вашој документацији. .SS "Немојте да програмирате у nroff" .IX Subsection "Немојте да програмирате у nroff" nroff је комплетан програмски језик, са дефиницијом макроа, кондиционалима и тако даље. Пошто овај парсер није комплетан nroff интерпретер, он неће успети да се изврши над странама које користе ове конструкције (на мојој машини има око 200 таквих страница). .SS "Користите прости скуп макроа" .IX Subsection "Користите прости скуп макроа" Постоји још макроа које po4a::man не подржава. То је само због тога јер нисам успео да пронађем документацију за њих. Ево листе макроа који нису подржани, а користе на мојој машини. Имајте на уму да листа није потпуна пошто програм прекида са извршавањем чин наиђе на први макро који не подржава. Ако имате било какве информације у вези неких од ових макроа, радо ћу да додам подршку за њих. Јер због ових макроа, око 250 страница на мојој машини нису доступне модулу po4a::man. .PP .Vb 11 \& .. ." .AT .b .bank \& .BE ..br .Bu .BUGS .BY \& .ce .dbmmanage .do .En \& .EP .EX .Fi .hw .i \& .Id .l .LO .mf \& .N .na .NF .nh .nl \& .Nm .ns .NXR .OPTIONS .PB \& .pp .PR .PRE .PU .REq \& .RH .rn .S< .sh .SI \& .splitfont .Sx .T .TF .The \& .TT .UC .ul .Vb .zZ .Ve .SS "Скривање текста од po4a" .IX Subsection "Скривање текста од po4a" Аутор понекад зна да неки делови не треба да се преводе и програм po4a не би требало да их издваја. На пример, опција би могла да прихвата аргумент \fIother\fR, а \fIother\fR такође може да се појави као последња ставка листе. У првом случају, \fIother\fR не би требало да се преводи. А у другом случају, \fIother\fR би требало да се преведе. .PP Користећи неке специјалне groff конструкције, аутор у том случају може да постићи да po4a не издвоји неке стрингове: .PP .Vb 1 \& .if !\*(Aqpo4a\*(Aqhide\*(Aq .B other .Ve .PP (за ово је неопходна опција \fB\-o groff_code=verbatim\fR) .PP Ово може да се аутоматизује дефинисањем новог макроа: .de IR_untranslated . IR \e\e$@ .. .PP .Vb 1 \& .IR_untranslated \e\-q ", " \e\-\e\-quiet .Ve .PP (за ово су неопходне опције \fB\-o groff_code=verbatim\fR и \fB\-o untranslated=IR_untranslated\fR; уз ову конструкцију, кондиционал \fB.if !'po4a'hide'\fR није стриктно неопходан јер програм po4a неће парсирати интерну дефиницију макроа) .PP или коришћењем алијаса: .als IR_untranslated IR .PP .Vb 1 \& .IR_untranslated \e\-q ", " \e\-\e\-quiet .Ve .PP За ово је неопходна опција \fB\-o untranslated=als,IR_untranslated\fR. .SS Закључак .IX Subsection "Закључак" Да укратко поновимо поенту овог одељка, нека буде једноставно, и немојте да се правите паметни када пишете своје man странице. У nroff је могуће урадити много ствари које овај парсер не подржава. На пример, не покушавајте да се петљате са \ec како бисте прекинули процесирање текста (као што 40 страница на мојој машини ради). Или, будите сигурни да сте ставили аргументе макроа у исту линију у којој је и сам макро. Знам да је то исправно у nroff, али би сувише искомпликовало парсер ако би се применило. .PP Наравно, друга могућност је да користите неки други формат, погоднији за преводиоца (као што је POD који користи po4a::pod, или неки из XML породице као што је SGML), мада захваљујући po4a::man то више није неопходно. Дакле, ако је изворни формат ваше документације POD, или XML, паметније би било да преведете изворни формат, а не овај генерисани. po4a::man ће у већини случајева моћи да детектује генерисане странице и издаће упозорење. Чак ће и одбити да обради POD генерисане стране, јер po4a::pod савршено ради са њима, а и због тога што њихови одговарајући nroff еквиваленти дефинишу пуно нових макроа, нисам желео да напишем подршку за то. На мојој машини, 1432 од 4323 странице су генерисане из POD и po4a::man ће да их игнорише. .PP У већини случајева, po4a::man ће открити проблем и одбиће да обради страницу, издајући прилагођену поруку. У неким ретким случајевима, програм ће да се изврши без упозорења али излаз неће бити исправан. Такви случајеви се зову „багови” ;) Ако наиђете на такав случај, обавезно га пријавите, ако је могуће заједно са исправком… .SH "СТАТУС ОВОГ МОДУЛА" .IX Header "СТАТУС ОВОГ МОДУЛА" Овај модул може да се користи за већину постојећих man страница. .PP Неки тестови се редовно врше на Linux машинама: .IP • 4 одбија се обрада једне трећине страница јер су генерисане из другог формата који програм po4a подржава (нпр. POD или SGML). .IP • 4 10% осталих страница се не обрађује услед неке грешке (нпр. groff макро који није подржан). .IP • 4 Затим, програм po4a без обавештења прихвата мање од 1% страница, али са озбиљним проблемима (нпр. речи које недостају, или уметнуте нове речи) .IP • 4 Остале странице се обично обрађују без неких значајнијих разлика, осим на пример разлике у размацима или поново обавијене линије (проблеми са фонтом у мање од 10% обрађених страница). .SH "ПОГЛЕДАЈТЕ ТАКОЂЕ" .IX Header "ПОГЛЕДАЈТЕ ТАКОЂЕ" \&\fBLocale::Po4a::Pod\fR\|(3pm), \fBLocale::Po4a::TransTractor\fR\|(3pm), \fBpo4a\fR\|(7) .SH АУТОРИ .IX Header "АУТОРИ" .Vb 3 \& Дени Барбије \& Никола Франсоа \& Мартин Квинсон (mquinson#debian.org) .Ve .SH "ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА" .IX Header "ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА" Права умножавања © 2002\-2008 SPI, Inc. .PP Овај програм је слободан софтвер; можете да га редистрибуирате и/или мењате под условима GPL v2.0 или новије (погледајте фајл COPYING).