Locale::Po4a::Sgml -
двосмерна
конверзија
SGML
докумената
и PO фајлова
Циљ po4a (PO for anything – PO за
било шта)
пројекта
је да
поједностави
превођење
(и што је још
интересантније,
одржавање
превода)
употребом
gettext алата на
деловима
на којима
се не
очекује
њихова
употреба,
као што је
документација.
Locale::Po4a::Sgml је модул
који
помаже
превођење
документације
у SGML формату
на друге
[људске]
језике.
Овај модул
користи
onsgmls(1)
за
парсирање SGML
фајлова.
Неопходно
је да га
имате
инсталираног.
Такође
обезбедите
да је на
систему
инсталиран
DTD за SGML
фајлове.
- debug
- Листа
кључних
речи
раздвојена
размацима
који
назначавају
за који део
желите да
исправљате
грешке.
Могуће
вредности
су: tag, generic, entities и refs.
- verbose
- Даје
више
информација
о ономе што
се догађа.
- translate
- Листа
додатних
ознака (уз
оне које
наводи DTD)
раздвојених
размацима,
чији
садржај би
требало да
чини
додатне msgid.
- section
- Листа
додатних
ознака (уз
оне које
наводи DTD)
раздвојених
размацима,
која
садржи
остале
ознаке, од
којих су
неки у
категорији
translate.
- indent
- Листа
ознака
раздвојених
размацима
које
увећавају
ниво
увлачења.
- verbatim
- Распоред
текста
унутар
ових
ознака не
би требало
да се мења.
Пасус неће
да се
обавије, и
неће из
козметичких
разлога да
се додају
екстра
простор
увлачења
или прелом
линије.
- empty
- Ознаке
које не
морају да
се
затворе.
- ignore
- Ознаке
које се
игноришу и
које
програм po4a
сматра за
просте
карактер
податке.
Другим
речима, они
могу да
буду део msgid.
На пример,
<b> је
одличан
кандидат
за ову
категорију
јер ако се
постави у
одељак за
превођење,
креирали
би се msgid
стрингови
који нису
целе
реченице,
што је
лоше.
- attributes
- Листа
атрибута
раздвојених
размацима
који
требају да
се преведу.
Атрибуте
можете да
наведете
њиховим
именом (на
пример, „lang”),
али такође
можете
испред
атрибута
да
наведете
хијерархију
ознака,
како бисте
назначили
да тај
атрибут
треба да се
преведе
само онда
када се
налази
унутар
одређене
ознаке. На
пример:
<bbb><aaa>lang
наводи да
ће lang
атрибут да
се преведе
само у
случају да
се налази у
<aaa> ознаци,
која се
налази у <bbb>
ознаци.
Имена
ознака су у
ствари
регуларни
изрази,
тако да
можете
написати
нешто као
што је <aaa|bbbb>lang
што задаје
да се
преводе
само lang
атрибути
који се
налазе у <aaa>
или <bbb>
ознаци.
- qualify
- Листа
атрибута
раздвојених
размацима
за које
превод
мора да се
квалификује
именом
атрибута.
Имајте на
уму да ово
подешавање
такође
аутоматски
додаје
дате
атрибуте и
у 'attributes' листу.
- force
- Наставља
даље чак и
у случају
да је DTD
непознат,
или да onsgmls
пронађе
грешке у
улазном
фајлу.
- include-all
- Подразумевано,
msgid
стрингови
који
садрже
само један
ентитет
(као '&version;') се
прескачу
како би са
преводиоцу
олакшао
посао.
Активирање
ове опције
спречава
ту
оптимизацију.
Може да
буде
корисно у
случају да
документ
садржи
конструкцију
као што је
„<title>Á</title>”,
мада ја
чисто
сумњам да
сличне
ствари
могу икада
да се
догоде...
- ignore-inclusion
- Листа
ентитета
раздвојених
размацима
који неће
да се
поставе у
једну
линију. Ову
опцију
користите
уз опрез:
због ње би onsgmls
(који се
интерно
користи)
могао да
дода
ознаке и
учини
излазни
документ
неважећим.
Резултат
је савршен.
Тј.
генерисани
документи
су потпуно
исти. Али
ипак
постоји
још неких
проблема:
- •
- Излаз за
грешке
програма onsgmls
се
подразумевано
преусмерава
на /dev/null, што је
очигледно
лоше. Не
знам како
да се то
спречи.
Проблем је
што морам
да
„заштитим”
условне
инклузије
(нпр. "<! [ %foo [" and
"]]>" ствар)
од
програма onsgmls.
Иначе би их
програм onsgmls
појео, а ја
не знам
како да их
повратим
назад у
финални
документ.
Како би ово
спречио, ја
их
препишем у
"{PO4A-beg-foo}" и "{PO4A-end}".
Проблем са
овим је што
су "{PO4A-end}" и
слично што
додајем
неважећи у
документу
(нису
унутар <p>
ознаке и
слично).
Ако желите
да видите
излаз
програма onsgmls,
једноставно
додајте
следеће у
своју
командну
линију (или
у po4a
конфигурациону
линију):
-o debug=onsgmls
- •
- Функционише
једино са
DebianDoc и DocBook DTD.
Додавање
подршке за
нови DTD би
требало да
буде веома
једноставно.
Механизам
је исти за
сваки DTD,
потребно
је само да
задате
листу
постојећих
ознака и
неке од
њихових
карактеристика.
Слажем се,
за ово је
потребна
детаљнија
документација,
али се и
даље
сматра да
је бета, а
ја мрзим да
документујем
ствари
које би
могле, или
ће, да се
измене.
- •
- Упозорење,
подршка за
DTD-ове је
прилично
експериментална.
Нисам
читао било
какво
референтно
упутство
да
пронађем
дефиницију
сваке
ознаке.
Модулу сам
додавао
дефиниције
ознака све
док није
прорадио
за неке
документе
које сам
пронашао
на
интернету.
Ако ваш
документ
користи
више
ознака
него мој,
онда модул
неће моћи
да
функционише.
Али као што
сам већ
рекао,
исправљање
тог
проблема
би требало
да је
прилично
једноставно.
DocBook сам
тестирао
само са SAG (System
Administrator Guide), али
овај
документ
је
прилично
велики, и
требало би
да користи
већину
специфичности
DocBook формата.
За DebianDoc,
тестирао
сам нека
упутства
са DDP, али још
не сва.
- •
- У
случају
укључивања
фајлова,
стринг
референце
у PO
фајловима
(нпр.
линије као
што је "#:
en/titletoc.sgml:9460") ће
бити
погрешне.
То је зато
што
препроцесирам
фајл како
би
заштитио
условну
инклузију
(нпр. "<! [ %foo [" и
"]]>" ствари)
и неке
ентитете
(као &version;) од
програма onsgmls,
јер желим
неизмењене
да их
пребацим у
генерисани
документ.
Да би то
постигао,
правим
привремену
копију
улазног
фајла и
вршим све
измене
које желим
над овом
копијом
пре
прослеђивања
фајла
програму onsgmls
на
парсирање.
Да би
радило
како треба,
ентитете
који траже
инклузију
фајла
мењам
садржајем
траженог
фајла (тако
да такође
штитим и
оно што
треба да
буде у
подфајлу).
Али до сада
се ништа
није
урадило
како би се
након тога
исправиле
референце
(нпр. име
фајла и
број
линије).
Нисам
сигуран
шта је
најбоље да
се уради.
Овај модул
је
прилагођена
верзија sgmlspl (SGML
постпроцесор
за ONSGMLS парсер)
који је био:
Права умножавања © 1995 Дејвид Мегинсон <[email protected]>
Прилагођавање
за po4a је
урадио:
Дени Барбије <[email protected]>
Мартин Квинсон (mquinson#debian.org)
Права умножавања © 1995 Дејвид Мегинсон <[email protected]>.
Права умножавања © 2002-2005 SPI, Inc.
Овај
програм је
слободан
софтвер;
можете да
га
редистрибуирате
и/или
мењате под
условима GPL
(погледајте
фајл COPYING).