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 ће да
употреби
кодирање
преведеног
улазног
документа.
-
-f, --format
- Формат
документације
који се
обрађује.
Да бисте
видели
списак
доступних
формата
употребите
опцију
--help-format.
-
-m, --master
- Фајл
који
садржи
мастер
документ
који се
преводи.
Ову опције
можете да
употребите
више пута
ако желите
да gettextујете
више
докумената.
-
-M, --master-charset
- Скуп
карактера
фајла који
садржи
документ
који се
преводи.
-
-l, --localized
- Фајл
који
садржи
локализовани
(преведени)
документ.
Ако сте
навели
више
мастер
фајлова,
вероватно
ћете хтети
да
употребом
ове опције
наведете
више
локализованих
фајлова.
-
-L, --localized-charset
- Скуп
карактера
фајла који
садржи
локализовани
документ.
-
-p, --po
- Фајл у
који би
требало да
се упише
каталог
порука. Ако
није задат,
каталог
порука ће
да се
испише на
стандардни
излаз.
-
-o, --option
- Додатна
опција (или
више њих)
које се
прослеђују
додатку
формата.
Погледајте
документацију
сваког од
додатака
да сазнате
више
информација
о важећим
опцијама и
њиховом
значењу. На
пример, AsciiDoc
парсеру
бисте
могли да
проследите
'-o tablecells', док би
текст
парсер
прихватио
'-o tabs=split'.
-
-h, --help
- Приказује
кратку
поруку
помоћи.
- --help-format
- Списак
формата
документације
које
програм po4a
разуме.
-
-k --keep-temps
- Задржава
привремене
мастер и
локализоване
POT фајлове
изграђене
пре
спајања.
Ово може
бити
корисно да
се разуме
зашто ови
фајлови
постану
десинхронизовани,
што доводи
до
проблема у
gettextизацији
-
-V, --version
- Приказује
верзију
скрипте и
завршава
извршавање.
-
-v, --verbose
- Увећава
детаљност
извештавања
програма.
-
-d, --debug
- Исписује
неке
информације
битне за
отклањање
грешака.
-
--msgid-bugs-address
имејл@адреса
- Поставља
адресу за
пријаву msgid
багова.
Подразумевано,
креирани POT
немају Report-Msgid-Bugs-To
поља.
-
--copyright-holder
стринг
- Поставља
власника
права
умножавања
у POT
заглавље.
Подразумевана
вредност
је "Free Software Foundation, Inc."
-
--package-name
стринг
- Поставља
име пакета
у POT
заглавље.
Подразумевано
је "PACKAGE".
-
--package-version
стринг
- Поставља
верзију
пакета у POT
заглавље.
Подразумевано
је "VERSION".
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 би
требало
ручно
прегледати,
чак и када
је скрипта
успешно
завршила
извршавање.
Требало би
да
прелетите
преко 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).
Дени Барбије <[email protected]>
Никола Франсоа <[email protected]>
Мартин Квинсон (mquinson#debian.org)
Ауторска
права 2002-2022 SPI, inc.
Овај
програм је
слободан
софтвер;
можете да
га
редистрибуирате
и/или
мењате под
условима GPL
(погледајте
фајл COPYING).