| LOCALE::PO4A::SGML.3PM(1) | User Contributed Perl Documentation | LOCALE::PO4A::SGML.3PM(1) |
NAMN¶
Locale::Po4a::Sgml - konvertera SGML-dokument från/till PO-filer
BESKRIVNING¶
Målet med po4a-projektet (PO för allt) är att underlätta översättningar (och, ännu mer intressant, underhållet av översättningar) med hjälp av gettext-verktyg på områden där de inte förväntades användas, såsom dokumentation.
Locale::Po4a::Sgml är ett modul som hjälper till att översätta dokumentation i SGML-format till andra [mänskliga] språk.
Denna modul använder onsgmls(1) för att analysera SGML-filerna. Se till att den är installerad. Se också till att DTD för SGML-filerna är installerade i systemet.
FLAGGOR SOM ACCEPTERAS AV DENNA MODUL¶
- debug
- Mellanslagsavgränsad lista med nyckelord som anger vilken kategori av extra felsökningsmeddelanden som ska visas. Möjliga värden är: "entities", "generic", "onsgml", "refs" och "tag".
- verbose
- Ge mer information om vad som händer.
- translate
- Mellanslagsavgränsad lista över extra taggar (utöver de som tillhandahålls av DTD) vars innehåll ska bilda en extra msgid, dvs. som ska översättas.
- section
- Mellanslagsavgränsad lista över extra taggar (utöver de som tillhandahålls av DTD) som innehåller andra taggar, varav vissa tillhör kategori translate.
- indent
- Mellanslagsavgränsad lista över taggar som ökar indragningsnivån. Detta påverkar indragningen i det resulterande dokumentet.
- verbatim
- Layouten inom dessa taggar bör inte ändras. Stycket kommer inte att brytas om, och ingen extra indragning eller ny rad kommer att läggas till av kosmetiska skäl.
- empty
- Taggar som inte behöver stängas.
- ignore
- Taggar som ignoreras och betraktas som vanliga tecken av po4a. Det vill säga att de kan ingå i en msgid. Till exempel är <b> en bra kandidat för denna kategori, eftersom om man placerar den i avsnittet translate skulle det skapas msgids med endast dess innehåll, vilket är dåligt eftersom det vanligtvis inte är en hel mening.
- attributes
- En lista med attribut som behöver översättas, separerade med mellanslag. Du kan ange attributen med deras namn (till exempel "lang"), men du kan också lägga till en tagghierarki framför namnet för att ange att attributet endast ska översättas när det finns i den angivna taggen. Till exempel: "<bbb><aaa>lang" anger att attributet "lang" endast ska översättas om det finns i en "<aaa>"-tagg, som finns i en "<bbb>"-tagg. Taggnamnen är egentligen reguljära uttryck, så du kan också skriva saker som "<aaa|bbb>lang" för att endast översätta "lang" -attribut som finns i en "<aaa>"- eller en "<bbb>"-tagg.
- qualify
- En lista med attribut separerade med mellanslag för vilka översättningen måste kvalificeras med attributnamnet, dvs. texten som extraheras för översättningen kommer att inkludera både attributnamnet och dess värde. Till exempel för en tagg som "<aaa lang_en="foo">" kommer översättarna att få strängen "lang_en="foo"". Observera att detta automatiskt lägger till det angivna attributet i listan attributes också.
- force
- Fortsätt även om DTD är okänt eller om onsgmls(1) hittar fel i inmatningsfilen.
- include-all
- Som standard hoppas msgids som endast innehåller en entitet (som "&version;") över för att underlätta för översättarna. Om du aktiverar den här flaggan förhindras denna optimering. Det kan vara användbart om dokumentet innehåller en konstruktion som "<title>Á</title>", även om jag tvivlar på att sådant någonsin skulle inträffa...
- ignore-inclusion
- Mellanslagsavgränsad lista över enheter som inte kommer att infogas. Använd denna option med försiktighet: det kan leda till att onsgmls(1) (används internt) lägger till taggar och gör utdatadokumentet ogiltigt.
STATUS FÖR DENNA MODUL¶
Resultatet är perfekt. Det vill säga, de genererade dokumenten är exakt samma som originalen. Men det finns fortfarande några problem:
- Felmeddelandet från onsgmls(1) omdirigeras som standard till
/dev/null, vilket uppenbarligen är fel. Jag vet inte hur man
undviker det.
Problemet är att jag måste "skydda" de villkorliga inkluderingarna (dvs. "<! [ %foo [" och "]]>") från onsgmls(1). Annars äter onsgmls(1) upp dem, och jag vet inte hur jag ska återställa dem i det slutliga dokumentet. För att förhindra det skriver jag om dem till "{PO4A-beg-foo}" och "{PO4A-end}".
Problemet med detta är att C-<{PO4A-end}> en och liknande som jag lägger till är ogiltiga i dokumentet (inte i en E-<lt>-pE-<gt> -tagg eller liknande).
Om du vill visa onsgmls(1)-utdata, lägg bara till följande i din kommandorad (eller po4a-konfigurationsrad):
-o debug=onsgmls - Det fungerar endast med DebianDoc och DocBook DTD. Att lägga till
stöd för en ny DTD bör vara mycket enkelt. Mekanismen
är densamma för alla DTD, du behöver bara ange en
lista över befintliga taggar och några av deras egenskaper.
Jag håller med, det behövs mer dokumentation, men det är fortfarande i betaversion, och jag avskyr att dokumentera saker som kan/kommer att ändras.
- Varning, stödet för DTD:er är ganska experimentellt.
Jag har inte läst någon referensmanual för att hitta
definitionen av varje tagg. Jag har lagt till taggdefinitioner i modulen
tills den fungerar för vissa dokument som jag hittat på
nätet. Om ditt dokument använder fler taggar än mitt
kommer det inte att fungera. Men som jag sa ovan bör det vara
ganska enkelt att fixa det.
Jag testade DocBook endast mot SAG (System Administrator Guide), men detta dokument är ganska stort och bör använda de flesta av DocBooks specifika funktioner.
För DebianDoc testade jag några av manualerna från DDP, men ännu inte alla.
- Vid filinkludering kommer strängreferenser för meddelanden i
PO-filer (dvs. rader som "#:
en/titletoc.sgml:9460") att bli felaktiga.
Detta beror på att jag förbehandlar filen för att skydda den villkorliga inkluderingen (dvs. "<! [ %foo [" och "]]>") och vissa enheter (som "&version;") från onsgmls(1) eftersom jag vill att de ska vara ordagrant identiska med det genererade dokumentet. För att göra detta skapar jag en tillfällig kopia av inmatningsfilen och gör alla ändringar jag vill ha innan jag skickar den till onsgmls(1) för parsning.
För att det ska fungera ersätter jag enheterna som begär en filinkludering med innehållet i den angivna filen (så att jag också kan skydda det som behöver finnas i en underfil). Men hittills har ingenting gjorts för att korrigera referenserna (dvs. filnamn och radnummer) efteråt. Jag är inte säker på vad som är bäst att göra.
UPPHOVSPERSONER¶
Denna modul är en anpassad version av sgmlspl (SGML-efterbehandlare för ONSGMLS-parsern) som var:
Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>
Anpassningen för po4a gjordes av:
Denis Barbier <barbier@linuxfr.org> Martin Quinson (mquinson#debian.org)
UPPHOVSRÄTT OCH LICENS¶
Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>. Copyright © 2002-2005 SPI, Inc.
Detta program är fri programvara; du får distribuera och/eller modifiera det enligt villkoren i GPL v2.0 eller senare (se filen COPYING).
| 2026-03-23 | perl v5.42.0 |