PO4A-GETTEXTIZE.1P(1) User Contributed Perl Documentation PO4A-GETTEXTIZE.1P(1)

ИМЕ

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 ће да употреби кодирање преведеног улазног документа.

ОПЦИЈЕ

Формат документације који се обрађује. Да бисте видели списак доступних формата употребите опцију --help-format.
Фајл који садржи мастер документ који се преводи. Ову опције можете да употребите више пута ако желите да gettextујете више докумената.
Скуп карактера фајла који садржи документ који се преводи.
Фајл који садржи локализовани (преведени) документ. Ако сте навели више мастер фајлова, вероватно ћете хтети да употребом ове опције наведете више локализованих фајлова.
Скуп карактера фајла који садржи локализовани документ.
Фајл у који би требало да се упише каталог порука. Ако није задат, каталог порука ће да се испише на стандардни излаз.
Додатна опција (или више њих) које се прослеђују додатку формата. Погледајте документацију сваког од додатака да сазнате више информација о важећим опцијама и њиховом значењу. На пример, AsciiDoc парсеру бисте могли да проследите '-o tablecells', док би текст парсер прихватио '-o tabs=split'.
Приказује кратку поруку помоћи.
Списак формата документације које програм po4a разуме.
Задржава привремене мастер и локализоване POT фајлове изграђене пре спајања. Ово може бити корисно да се разуме зашто ови фајлови постану десинхронизовани, што доводи до проблема у gettextизацији
Приказује верзију скрипте и завршава извршавање.
Увећава детаљност извештавања програма.
Исписује неке информације битне за отклањање грешака.
Поставља адресу за пријаву msgid багова. Подразумевано, креирани POT немају Report-Msgid-Bugs-To поља.
Поставља власника права умножавања у POT заглавље. Подразумевана вредност је "Free Software Foundation, Inc."
Поставља име пакета у POT заглавље. Подразумевано је "PACKAGE".
Поставља верзију пакета у POT заглавље. Подразумевано је "VERSION".

Конвертовање ручног превода у po4a пројекат

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 како бисте могли даље да истражујете.

Ево неких трикова који могу да вам помогну у овом заморном процесу и који обезбеђују да спасите већи део преходног превода:

  • Уклоните сав додатни садржај превода, као што је одељак у коме се одаје признање преводиоцима. Они би требало да се у po4a уметну одвојено као додаци (погледајте po4a(7)).
  • Када уређујете фајлове како бисте им поравнали структуре, боље је да уређујте превод ако је то могуће. Заиста, ако измене оригинала нису суптилне, стара и нова верзија неће да се подударају приликом првог покретања програма po4a након gettextизације (погледајте испод). Неупарени превед ће свакако да се одбаци. Упркос томе, ипак ћете морати да уређујете оригинални документ ако је сувише компликовано да се омогући наставак gettextизације, чак и ако то значи да се један пасус превода одбацује. Важна ствар је да за почетак добијете први PO фајл.
  • Не оклевајте да уконите било какав оригинални садржај који не постоји у преведеној верзији. Тај садржај ће касније аутоматски да се врати, када се PO фајл буде синхронизовао са документом.
  • Вероватно ћете морати да обавестите оригиналног аутора о било каквим променама структуре у превпду које се чине оправданим. Проблеми у оригиналном документу би требало да се пријаве аутору. Ако се поправе у само у вашем преводу, само део заједнице ће знати за то. А и иначе је немогуће да се тако нешто уради када се користи po4a ;) Али највероватније ћете сачекати до краја конверзије у po4a пре него што измените оригиналне фајлове.
  • Понекад се садржаји пасуса подударају, али не и њихови типови. Исправљање овог проблема је углавном зависно од формата. Често се догађа у POD и man због чињенице да један од пасуса садржи линију која почиње празним простором док други не. У тим форматима, такви пасуси не могу да се обавију и стога постају други тип. Једноставно уклоните размак и биће како треба. Узрок такође може да буде и грешка у куцању имена ознаке у XML.

    Слично, два пасуса могу у POD фајлу да се споје у један када раздвајајућа линија садржи неке размаке, или када нема празне линије између =item линије и садржаја ставке.

  • Понекад се чини да је порука о десинхронизацији необична јер је превод придружен погрешном оригиналном пасусу. То је знак неоткривеног проблема раније у процесу. Потражите стварну тачку десинхронизације испитивањем генерисаног фајла gettextization.failed.po, и исправите проблем тамо где се он заиста и налази.
  • Дуплирани стрингови било у оригиналу или преводу могу да проузрокују и друге проблеме. Дуплирани стрингови се спајају у PO фајлове са две референце. То представља тешкоћу за алгоритам gettextизације, који користи просто један на један упаривање msgid стрингова у мастер и локализованим фајловима. Међутим, сматра се да се скорашње верзије po4a исправно носе са дуплираним стринговима, тако да би требало да пријавите евентуални преостали проблем на који наиђете.

Преглед фајлова које је генерисала скрипта po4a-gettextize

Сваки фајл који је генерисала скрипта po4a-gettextize би требало ручно прегледати, чак и када је скрипта успешно завршила извршавање. Требало би да прелетите преко PO фајла и проверите да се msgid и msgstr заиста подударају. Још увек није неопходно да је превод савршен, пошто су све ставке ионако означене као несигурни преводи. Потребно је само да уочите очигледне проблеме са упаривањем јер ће се у наредним корацима лоше упарени преводи одбацити, а ви желите да их сачувате.

Срећом, овај корак не захтева да владате циљним језицима јер само желите да препознате сличне елементе у сваком msgid и одговарајућем msgstr. Ја као говорник француског, енглеског и помало немачког, ово могу да урадим барем за све европске језике, чак и ако на већини њих не могу да изговорим ни реч. Понекад успем да откријем проблем у упаривању на језицима који нису на латиници тако што посматрам дужину стринга, структуру фразе (да ли се поклапа број знакова питања?) као и остале трагове, али више волим да неко други провери те језике.

Ако откријете неподударање, уредите фајлове оригинала и превода као да је скрипта po4a-gettextize пријавила грешку, па покушајте поново. Једном када за свој претходни превод добијете солидан PO фајл, направите његову резервну копију све док po4a не почне исправно да функционише.

Прво покретање програма 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)

ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА

Copyright 2002-2023 by SPI, inc.

This program is free software; you may redistribute it and/or modify it under the terms of GPL v2.0 or later (see the COPYING file).

2024-02-07 perl v5.38.1