Locale::Po4a::Man(3pm) | Po4a Алати | Locale::Po4a::Man(3pm) |
Locale::Po4a::Man - двосмерна конверзија страна упутства и PO фајлова
Циљ po4a (PO for anything – PO за било шта) пројекта је да поједностави превођење (и што је још интересантније, одржавање превода) употребом gettext алата на деловима на којима се не очекује њихова употреба, као што је документација.
Locale::Po4a::Man је модул који помаже превођење документације у nroff формату (језик страница упутства) на друге [људске] језике.
Овај модул се заиста својски труди да олакша живот преводиоцу. Текст који се представља преводиоцима није дословна копија текста који се налази у man страни. Наравно, грубљи делови nroff формата су скривени, тако да преводиоци не могу да се петљају са њима.
Неувучени пасуси се за преводиоца аутоматски поново обавијају. То може довести до ситуације да постоје неке минималне разлике у генерисаном излазу, пошто правила поновног обавијања која користи groff нису баш најјаснија. На пример, два размака након заграда понекад остају очувана.
У сваком случају, разлика ће бити једино у позицији екстра размака у обавијеном пасусу и ја мислим да је вредна.
Прва измена је у вези спецификација за промену фонта. У nroff, постоји неколико начина да се наведе да ли одређена реч треба да се испише малим словима, подебљано или курзивом. У тексту који се преводи, постоји само један начин, позајмљен из POD (Perl online documentation) формата:
Опаска: CW писмо није доступно за све groff уређаје. Његова употреба се не препоручује. Понуђено је да би вама било једноставно.
Програм po4a аутоматски пресловљава неке карактере како би се олакшало превођење или лекторисање превода. Ево листе пресловљавања:
Преводиоци могу да форсирају цртице на крају реда употребом roff глифа ’\[hy]’ у својим преводима.
Ако желе да спрече ова пресловљавања, преводиоци могу да уметну roff карактер нулте ширине (нпр. употребом `\&` или '\&' респективно).
Пошто се ови карактери користе за одвајање делова под изменом фонта, не можете да их користите дословно. Употребите уместо њих E<lt> и E<gt> (као у POD, још једном).
Ово су опције везане само за овај модул:
Она одабира стриктнију подршку mdoc формата наводећи програм po4a да не преводи ’NAME’ одељак. mdoc странице чији је ’NAME’ одељак преведен уопште неће генерисати заглавље или подножје.
Према groff_mdoc
страници,
одељци NAME, SYNOPSIS и
DESCRIPTION су
обавезни.
Нема
познатих
проблема
за
превођењем
одељака SYNOPSIS
или DESCRIPTION, мада
ове
одељке
можете да
наведете
и на
следећи
начин:
-o mdoc=NAME,SYNOPSIS,DESCRIPTION
Овај mdoc
проблем
такође
може да се
реши са
додатком,
као што је
овај:
PO4A-HEADER:mode=before;position=^.Dd
.TH DOCUMENT_TITLE 1 "Month day, year" OS "Section
Name"
The following options specify the behavior of a user-defined macro (with a .de request), or of a classical macro that is not supported by po4a. They take as argument a comma-separated list of macros. For example:
-o noarg=FO,OB,AR -o translate_joined=BA,ZQ,UX
Напомена: ако програм po4a не подржава макро, а ви сматрате да је то стандардни roff макро, требало би да га доставите развојном тиму програма po4a.
Напомена: не ради се никакав тест да се осигура подударање команде крај са својом командом почетак; било која команда уређивања зауставља no_wrap режим. Ако имате почетак (и одговарајући крај) макро који нема крај (и одговарајући почетак), можете да наведете неки постојећи крај (као fi) или почетак (као nf) као његов пар. Ови макрои (и њихови аргументи) неће бити превођени.
Овај модул је и даље веома ограничен, и увек ће бити, јер он није прави nroff интерпретер. Било би могуће да се направи прави nroff интерпретер, чиме би аутори могли да користе све постојеће макрое, или да чак у својим страницама дефинишу и нове, али нисмо хтели то да урадимо. Било би сувише тешко, и мислили смо да није неопходно. Сматрамо да ако аутори man страница желе да виде своја дела преведена, морали би мало да се прилагоде како би олакшали посао преводиоцима.
Дакле, man парсер имплементиран у програм po4a има нека позната ограничења која баш и не желимо да исправимо, и која ће проузроковати неке проблеме које ћете морати да избегнете ако желите да видите преводиоце како се старају о вашој документацији.
nroff је комплетан програмски језик, са дефиницијом макроа, кондиционалима и тако даље. Пошто овај парсер није комплетан nroff интерпретер, он неће успети да се изврши над странама које користе ове конструкције (на мојој машини има око 200 таквих страница).
Постоји још макроа које po4a::man не подржава. То је само због тога јер нисам успео да пронађем документацију за њих. Ево листе макроа који нису подржани, а користе на мојој машини. Имајте на уму да листа није потпуна пошто програм прекида са извршавањем чин наиђе на први макро који не подржава. Ако имате било какве информације у вези неких од ових макроа, радо ћу да додам подршку за њих. Јер због ових макроа, око 250 страница на мојој машини нису доступне модулу po4a::man.
.. ." .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
Аутор понекад зна да неки делови не треба да се преводе и програм po4a не би требало да их издваја. На пример, опција би могла да прихвата аргумент other, а other такође може да се појави као последња ставка листе. У првом случају, other не би требало да се преводи. А у другом случају, other би требало да се преведе.
Користећи неке специјалне groff конструкције, аутор у том случају може да постићи да po4a не издвоји неке стрингове:
.if !'po4a'hide' .B other
(за ово је неопходна опција -o groff_code=verbatim)
Ово може
да се
аутоматизује
дефинисањем
новог
макроа:
.de IR_untranslated
. IR \\$@
..
.IR_untranslated \-q ", " \-\-quiet
(за ово су неопходне опције -o groff_code=verbatim и -o untranslated=IR_untranslated; уз ову конструкцију, кондиционал .if !'po4a'hide' није стриктно неопходан јер програм po4a неће парсирати интерну дефиницију макроа)
или
коришћењем
алијаса:
.als IR_untranslated IR
.IR_untranslated \-q ", " \-\-quiet
За ово је неопходна опција -o untranslated=als,IR_untranslated.
Да укратко поновимо поенту овог одељка, нека буде једноставно, и немојте да се правите паметни када пишете своје man странице. У nroff је могуће урадити много ствари које овај парсер не подржава. На пример, не покушавајте да се петљате са \c како бисте прекинули процесирање текста (као што 40 страница на мојој машини ради). Или, будите сигурни да сте ставили аргументе макроа у исту линију у којој је и сам макро. Знам да је то исправно у nroff, али би сувише искомпликовало парсер ако би се применило.
Наравно, друга могућност је да користите неки други формат, погоднији за преводиоца (као што је POD који користи po4a::pod, или неки из XML породице као што је SGML), мада захваљујући po4a::man то више није неопходно. Дакле, ако је изворни формат ваше документације POD, или XML, паметније би било да преведете изворни формат, а не овај генерисани. po4a::man ће у већини случајева моћи да детектује генерисане странице и издаће упозорење. Чак ће и одбити да обради POD генерисане стране, јер po4a::pod савршено ради са њима, а и због тога што њихови одговарајући nroff еквиваленти дефинишу пуно нових макроа, нисам желео да напишем подршку за то. На мојој машини, 1432 од 4323 странице су генерисане из POD и po4a::man ће да их игнорише.
У већини случајева, po4a::man ће открити проблем и одбиће да обради страницу, издајући прилагођену поруку. У неким ретким случајевима, програм ће да се изврши без упозорења али излаз неће бити исправан. Такви случајеви се зову „багови” ;) Ако наиђете на такав случај, обавезно га пријавите, ако је могуће заједно са исправком…
Овај модул може да се користи за већину постојећих man страница.
Неки тестови се редовно врше на Linux машинама:
Locale::Po4a::Pod(3pm), Locale::Po4a::TransTractor(3pm), po4a(7)
Дени Барбије <barbier@linuxfr.org> Никола Франсоа <nicolas.francois@centraliens.net> Мартин Квинсон (mquinson#debian.org)
Права умножавања © 2002-2008 SPI, Inc.
Овај програм је слободан софтвер; можете да га редистрибуирате и/или мењате под условима GPL (погледајте фајл COPYING).
2023-01-03 | Po4a Алати |