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
    Space-separated list of tags which increase the indentation level. This will affect the indentation in the resulting document.

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

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

ignore
    Tags ignored and considered as plain char data by po4a. That is to say that they can be part of an msgid. For example, <b> is a good candidate for this category since putting it in the translate section would create a msgids with only its content, (and it's usually not a whole sentence), which is bad.

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

qualify
    A space-separated list of attributes for which the translation must be qualified by the attribute name, i.e. the text extracted for the translation will include both the attributes name and it's value. e.g. for a tag like "<aaa lang_en="foo">" translators will be presented with the string "lang_en="foo"". Note that this also automatically adds the given attribute into the attributes list too.

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 парсер) који је био:

 Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>

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

 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)

ПРАВА УМНОЖАВАЊА И ЛИЦЕНЦА
 Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>.
 Copyright © 2002-2005 SPI, Inc.

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