LOCALE::PO4A::SGML.3PM(1)

ИМЕ
Locale::Po4a::Sgml - двосмерна конверзија SGML докумената и PO фајлова

ОПИС
Циљ po4a (PO for anything – PO за било шта) пројекта је да поједностави превођење (и што је још интересантније, одржавање превода) употребом gettext алата на деловима на којима се не очекује њихова употреба, као што је документација.

Locale::Po4a::Sgml је модул који помаже превођење документације у SGML формату на друге [људске] језике.

Овај модул користи onsgmls(1) за парсирање SGML фајлова. Неопходно је да га имате инсталираног. Такође обезбедите да је на систему инсталиран DTD за SGML фајлове.

ОПЦИЈЕ КОЈЕ ПРИХВАТА ОВАЈ МОДУЛ

debug
    Листа кључних речи раздвојена размацима које назначавају категорију додатних дибаг порука које треба да се прикажу. Могуће вредности су: "entities", "generic", "onsgml", "refs" и "tag".

verbose
    Даје више информација о ономе што се догађа.

translate
    Листа додатних ознака (уз оне које наводи DTD) раздвојених размацима, чији садржај би требало да чини додатне msgid, тј. које би требало да се преведу.

section
    Листа додатних ознака (уз оне које наводи DTD) раздвојених размацима, која садржи остале ознаке, од којих су неки у категорији translate.

indent
    Листа ознака раздвојених размацима које увећавају ниво увлачења. Ово ће да утиче на увлачење у излазном документу.

verbatim
    Распоред текста унутар ових ознака не би требало да се мења. Пасус неће да се обавије, и неће из козметичких разлога да се додају екстра простор увлачења или прелом линије.

empty
    Ознаке које не морају да се затворе.

ignore
    Ознаке које се игноришу и које програм po4a сматра за просте карактер податке. Другим речима, они могу да буду део msgid. На пример, <b> је одличан кандидат за ову категорију јер ако се постави у translate одељак, креирали би се msgid стрингови само са његовим садржајем (а који обично нису целе реченице), што је лоше.

attributes
    Листа атрибута раздвојених размацима који требају да се преведу. Атрибуте можете да наведете њиховим именом (на пример, "lang"), али такође можете испред атрибута да наведете хијерархију ознака, како бисте назначили да тај атрибут треба да се преведе само онда када се налази унутар одређене ознаке. На пример: "<bbb><aaa>lang" наводи да ће lang атрибут да се преведе само у случају да се налази у "<aaa>" ознаци, која се налази у "<bbb>" ознаци. Имена ознака су у ствари регуларни изрази, тако да можете написати нешто као што је "<aaa|bbb>lang" да преведете само "lang" атрибуте који се налазе у "<aaa>"или "<bbb>" ознаци.

qualify
    Листа атрибута раздвојених размацима за које превод мора да се квалификује именом атрибута, тј. текст који се издваја за превођење ће садржати и име атрибута и његову вредност, нпр. за ознаку као што је "<aaa lang_en="foo">" преводиоци ће добити стринг "lang_en="foo"". Имајте на уму да ово подешавање такође аутоматски додаје дате атрибуте и у attributes листу.

force
    Наставља даље чак и у случају да је DTD непознат, или да onsgmls пронађе грешке у улазном фајлу.

include-all
    Подразумевано, msgid стрингови који садрже само један ентитет (као "&version;") се прескачу како би са преводиоцу олакшао посао. Активирање ове опције спречава ту оптимизацију. Може да буде корисно у случају да документ садржи конструкцију као што је "<title>&Aacute;</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 Дејвид Мегинсон <dmeggins@aix1.uottawa.ca>

Прилагођавање за po4a је урадио:

 Дени Барбије <barbier@linuxfr.org>
 Мартин Квинсон (mquinson#debian.org)

ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА
 Права умножавања © 1995 Дејвид Мегинсон <dmeggins@aix1.uottawa.ca>.
 Права умножавања © 2002-2005 SPI, Inc.

Овај програм је слободан софтвер; можете да га редистрибуирате и/или мењате под условима GPL v2.0 или новије (погледајте фајл COPYING).