PO4A-GETTEXTIZE(1p) | Po4a Алати | PO4A-GETTEXTIZE(1p) |
po4a-gettextize - конверзија оригиналног фајла (и његових превода) у PO фајл
po4a-gettextize -f fmt -m master.doc -l XX.doc -p XX.po
(XX.po је излаз, све остало су улази)
po4a (PO for anything [PO за било шта]) олакшава одржавање превода докумената употребом класичних gettext алата. Главна особина po4a је да раскида везу између садржаја превода и структуре његовог документа. Молимо да погледате страницу po4a(7) у којој је изложен прости увод у овај пројекат.
Скрипта po4a-gettextize вам помаже да конвертујете већ постојеће преводе у процес рада заснован на po4a. Потребно је да се ово уради једном током конверзије у po4a како би се искористио постојећи превод, а не редовно након конверзије пројекта. Овај заморан процес је детаљно објашњен у одељку 'Конвертовање ручног превода у po4a пројекат'.
Морате да наведете и мастер фајл (нпр. изворни фајл на енглеском језику) и постојећи преведени фајл (нпр. ранији покушај превода без употребе po4a). Ако наведете више од једног мастер или преведеног фајла, они ће се употребити сукцесивно, али може да буде једноставније да gettextизујете сваку страницу или поглавље посебно, па да онда употребите msgmerge да спојите све добијене PO фајлове. Како год желите.
Ако мастер документ садржи не-ASCII карактере, ново генерисани PO фајл ће бити кодиран у UTF-8. У случају када је мастер документ потпуно написан ASCII карактерима, генерисани PO ће да употреби кодирање преведеног улазног документа.
po4a-gettextize синхронизује мастер и локализоване фајлове да би се њихов садржај издвојио у PO фајл. Из садржаја мастер фајла се креира msgid, док се из садржаја локализованог фајла креира msgstr. Овај процес је донекле осетљив: Нти стринг преведеног фајла би требало да буде превод Нтог стринга у оригиналу.
Gettextизација најбоље функционише ако успете да дођете до потпуно исте верзије оригиналног документа која је коришћена за прављење превода. Чак и онда, ако је оригинални преводилац променио структуру превода, може бити неопходно да преправљате и мастер и локализоване фајлове тако да се њихове структуре поравнају. Стога се саветује да радите са копијама оригиналних фајлова.
Интерно, сваки po4a парсер пријављује синтактични тип сваког издвојеног стринга. На тај начин се откривају десинхронизације током gettextизације. У примеру датом испод, мало је вероватно да је 4ти стринг у преводу (типа 'chapter') превод 4тог стринга у оригиналу (типа 'paragraph'). Вероватније је да је оригиналу додат нови пасус, или да су у преводу два пасуса из оригинала спојена у један.
Оригинал Превод chapter chapter paragraph paragraph paragraph paragraph paragraph chapter chapter paragraph paragraph paragraph
po4a-gettextize ће детаљно да дијагностицира било какву десинхронизацију структуре. Када се то догоди, требало би ручно да уредите фајлове и да додате лажне пасусе или да ту и тамо уклоните неки садржај, све док се структуре оба документа саршено не поклопе. Испод су наведени неки од трикова којима се спашава већина постојећег превода док се ово ради.
Ако имате довољно среће да вам се структуре фајлова савршено поклапају без било какве интервенције, изградња исправног PO фајла траје неколико секунди. У супротном, врло брзо ћете схватити зашто овај процес има тако ружно име :) Чак и онда, gettextизација је често бржа од поновног превођења свега. Ја сам gettextизовао комплетну Perl документацију у једном дану упркос великом броју проблема са синхронизацијом. Узевши у обзир количину текста (2МБ оригиналног текста), поновно превођење без спашавања постојећег превода би захтевало неколико месеци рада. Уз то, овај гломазан посао је цена која мора да се плати како би се дошло до комфора који пружа програм po4a. Једном када се обави конверзија, синхронизација између мастер докумената и превода ће увек бити потпуно аутоматска.
Након успешне gettextизације, произведене документе би требало ручно прегледати да би се уочили диспаритети и тихе грешке, као што је објашњено испод.
Савети и трикови за процес gettextизације
gettextизација се прекида чим се детектује десинхронизација. po4a-gettextize је прилично детаљан када ствари не иду како треба. Он пријављује стрингове који се не подударају, њихове позиције у тексту, и тип сваког од њих. Уз то, PO фајл који је до тада генерисан се избацује као gettextization.failed.po како бисте могли даље да истражујете.
Ево неких трикова који могу да вам помогну у овом заморном процесу и који обезбеђују да спасите већи део преходног превода:
Слично, два пасуса могу у POD фајлу да се споје у један када раздвајајућа линија садржи неке размаке, или када нема празне линије између =item линије и садржаја ставке.
Сваки фајл који је генерисала скрипта po4a-gettextize би требало ручно прегледати, чак и када је скрипта успешно завршила извршавање. Требало би да прелетите преко PO фајла и проверите да се msgid и msgstr заиста подударају. Још увек није неопходно да је превод савршен, пошто су све ставке ионако означене као несигурни преводи. Потребно је само да уочите очигледне проблеме са упаривањем јер ће се у наредним корацима лоше упарени преводи одбацити, а ви желите да их сачувате.
Срећом, овај корак не захтева да владате циљним језицима јер само желите да препознате сличне елементе у сваком msgid и одговарајућем msgstr. Ја као говорник француског, енглеског и помало немачког, ово могу да урадим барем за све европске језике, чак и ако на већини њих не могу да изговорим ни реч. Понекад успем да откријем проблем у упаривању на језицима који нису на латиници тако што посматрам дужину стринга, структуру фразе (да ли се поклапа број знакова питања?) као и остале трагове, али више волим да неко други провери те језике.
Ако откријете неподударање, уредите фајлове оригинала и превода као да је скрипта po4a-gettextize пријавила грешку, па покушајте поново. Једном када за свој претходни превод добијете солидан PO фајл, направите његову резервну копију све док po4a не почне исправно да функционише.
Најједноставнији начин да се подеси po4a систем је да напишете po4a.conf конфигурациони фајл и да користите интегрисани po4a програм (po4a-updatepo и po4a-translate су застарели). За више детаља, молимо вас да погледате одељак „КОНФИГУРАЦИОНИ ФАЈЛ” у po4a(1) документацији.
Када се po4a покрене по први пут, за ажурирање PO фајлова који садрже старе преводе спашене кроз gettextизацију ће се употребити текућа верзија мастер докумената. Ово може да потраје доста дуго јер се многи msgid стрингови из gettextизације не подударају у потпуности са елементима POT фајла изграђеног из скорашњих мастер фајлова. Због тога програм gettext мора да тражи најближи стринг употребом скупог алгоритма удаљености стрингова. На пример, прво извршавање над француским преводом Perl документације (PO фајл величине 5.5 MB) је трајало око 48 сати (тако је, два цела дана), док накнадна трају само неколико секунди.
Након првог извршавања, преводиоци могу да провере PO фајлове. po4a-gettextization је све ставке у PO фајлу означио као несигурне (fuzzy), чиме се обезбеђује темељна провера пре употребе. Преводиоци би требало да погледају сваку ставку и потврде да се спашени превод заиста подудара са текућим оригиналним текстом, по потреби ажурирају превод, и уклоне маркере несигурног превода.
Онда када се уклони довољно маркера несигурног превода, po4a ће почети да генерише фајлове превода на диск и спремни сте да свој процес превода преместите у продукцију. Неки пројекти сматрају корисним да се ослоне на веблејт за координацију преводилаца и одржаваоца, али то је ван опсега система po4a'.
po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).
Дени Барбије <barbier@linuxfr.org> Никола Франсоа <nicolas.francois@centraliens.net> Мартин Квинсон (mquinson#debian.org)
Ауторска права 2002-2022 SPI, inc.
Овај програм је слободан софтвер; можете да га редистрибуирате и/или мењате под условима GPL (погледајте фајл COPYING).
2023-01-03 | Po4a Алати |