Scroll to navigation

PO4A-GETTEXTIZE(1p) Po4a-hulpmiddelen PO4A-GETTEXTIZE(1p)

NAAM

po4a-gettextize - een origineel bestand (en zijn vertalingen) omzetten naar een PO-bestand

OVERZICHT

po4a-gettextize -f fmt -m hoofddocument.doc [-l XX.doc] -p XX.po

(XX.po is de uitvoer, alle andere zijn invoer)

BESCHRIJVING

po4a (PO for anything - Po voor alles) vergemakkelijkt het onderhoud van de vertaling van documentatie met het klassieke gettext-gereedschap. Het belangrijkste kenmerk van po4a is, dat het de vertaling van inhoud loskoppelt van de structuur van het document. Raadpleeg pagina po4a(7) voor een welwillende introductie in dit project.

Het script po4a-gettextize is belast met het converteren van documentatiebestanden naar PO-bestanden. U heeft het enkel nodig om uw vertaalproject in te stellen met po4a, nadien nooit meer.

Als u begint van niets, zal po4a-gettextize de vertaalbare tekstfragmenten uit de documentatie extraheren en een POT-bestand schrijven. Indien u een eerder bestaand vertaald bestand opgeeft met de -l-vlag, dan zal po4a-gettextize proberen de vertalingen die het bevat, te gebruiken in het geproduceerde PO-bestand. Dit blijft een vervelend en manueel proces, zoals hieronder uitgelegd wordt in het onderdeel 'Een handmatige vertaling omzetten naar po4a'.

Indien het hoofddocument niet-ASCII-tekens bevat, zal het nieuw aangemaakt PO-bestand in UTF-8 zijn. Anders (indien het hoofddocument volledig in ASCII is), zal het gegenereerde PO-bestand de codering gebruiken van het vertaalde invoerdocument, of in UTF-8 indien geen vertaald document verstrekt wordt.

OPTIES

-f, --format
Indeling van de documentatie die u wilt afhandelen. Gebruik de optie --help-format om de lijst van beschikbare indelingen te zien.
-m, --master
Bestand dat het te vertalen hoofddocument bevat. U kunt deze optie meerdere malen gebruiken, indien u meerdere documenten wilt verwerken met gettextize.
-M, --master-charset
Tekenset van het bestand met het te vertalen document.
-l, --localized
Bestand met het gelokaliseerde (vertaalde) document. Indien u meerdere hoofdbestanden verstrekte, wilt u mogelijk meerdere gelokaliseerde bestanden aanleveren door deze optie meerdere keren te gebruiken.
-L, --localized-charset
Tekenset van het bestand met het gelokaliseerde document.
-p, --po
Bestand waarnaartoe de berichtencatalogus moet worden geschreven. Indien dit niet opgegeven wordt, zal de berichtencatalogus naar standaarduitvoer geschreven worden.
-o, --option
Extra optie(s) om door te geven aan de indelingsplug-in. Raadpleeg de documentatie bij elke plug-in voor meer informatie over de geldige opties en hun betekenis. U zou bijvoorbeeld '-o tablecells' kunnen doorgeven aan de ontleder voor AsciiDoc, terwijl de ontleder voor tekst '-o tabs=split' zou accepteren.
-h, --help
Een korte hulptekst tonen.
--help-format
De documentatie-indelingen vermelden die door po4a begrepen worden.
-V, --version
De versie van het script tonen en afsluiten.
-v, --verbose
De breedsprakigheid van het programma verhogen.
-d, --debug
Enige foutopsporingsinformatie weergeven.
--msgid-bugs-address email@adres
Het adres instellen voor het rapporteren van msgid-bugs. Standaard bevatten de gecreëerde POT-bestanden niet het veld Report-Msgid-Bugs-To.
--copyright-holder tekenreeks
Instellen van de copyrighthouder in de POT-header. De standaardwaarde is "Free Software Foundation, Inc."
--package-name tekenreeks
Instellen van de pakketnaam voor de POT-header. Standaard is dat "PACKAGE".
--package-version tekenreeks
Instellen van de pakketversie voor de POT-header. Standaard is dat "VERSION".

Een handmatige vertaling omzetten naar po4a

po4a-gettextize zal trachten de inhoud te extraheren uit elk verstrekt vertalingsbestand en het zal deze inhoud gebruiken als msgstr in het geproduceerde PO-bestand. Wees gewaarschuwd dat dit een erg kwetsbaar proces is: er wordt verondersteld dat het Nde tekstfragment uit het vertaalde bestand de vertaling is voor het Nde fragment uit het origineel. Dit werkt uiteraard enkel als beide bestanden exact dezelfde structuur hebben.

Intern rapporteert elke po4a-ontleder het syntactische type van elk geëxtraheerd tekstfragment. Dit is de wijze waarop desynchronisatie ontdekt wordt tijdens het gettextize-proces. Bijvoorbeeld, indien de bestanden de volgende structuur hebben, is het erg onwaarschijnlijk dat het 4de tekstfragment uit de vertaling (van het type 'chapter' (hoofdstuk)) de vertaling is van het 4de tekstfragment uit het origineel (van het type 'paragraph' (alinea)). Het is waarschijnlijker dat aan het origineel een nieuwe alinea toegevoegd werd of dat in de vertaling twee originele alinea's samengevoegd werden.

    Origineel         Vertaling

  hoofdstuk            hoofdstuk
    paragraaf          paragraaf
    paragraaf          paragraaf
    paragraaf        hoofdstuk
  hoofdstuk              paragraaf
    paragraaf          paragraaf

po4a-gettextize zal elke desynchronisatie in de structuur met uitgebreide informatie diagnosticeren. Indien dit gebeurt, moet u de bestanden handmatig bewerken (dit vereist wellicht dat u enige noties heeft van de doeltaal). U moet in een van de documenten (of in beide) nepparagrafen toevoegen of bepaalde inhoud verwijderen om de gerapporteerde ongelijkheden te repareren, totdat de structuur van beide documenten volledig overeenkomt. In het volgende onderdeel worden enkele kneepjes aangereikt.

Zelfs indien het document met succes verwerkt wordt, is het nog steeds mogelijk dat bepaalde ongelijkheden onopgemerkt bleven en er stilzwijgend fouten inslopen. Dat is de reden waarom elke vertaling die door po4a-gettextize automatisch gekoppeld werd, gemarkeerd wordt als fuzzy (onduidelijk), om handmatig menselijk nazicht uit te lokken. Men moet controleren of elke opgehaalde msgstr wel degelijk de vertaling is voor het eraan gekoppelde msgid, en niet van het tekstfragment ervoor of erna.

Zoals u kunt zien, gaat het erom om exact dezelfde structuur te hebben in het vertaalde document als in het originele document. Het beste is om het gettextize-proces uit te voeren op exact die versie van hoofddocument.doc welke gebruikt werd voor de vertaling, en pas nadien, na een succesvol gettextize-proces, het PO-bestand te updaten naar het meest recente hoofdbestand.

Indien u het geluk heeft dat de bestandsstructuren perfect overeenkomen, is het bouwen van een correct PO-bestand een kwestie van seconden. In het andere geval zult u vlug begrijpen waarom dit proces zulk een lelijke naam heeft:) Maar onthoud dat dit werk dat u laat brommen, de prijs is die u moet betalen om daarna het comfort van po4a te krijgen. Eens de omzetting achter de rug is, zal de synchronisatie tussen hoofddocumenten en vertalingen steeds volautomatisch verlopen.

Zelfs als zaken fout lopen, blijft het gettextize-proces sneller dan alles opnieuw vertalen. Ik was in staat om in één dag de bestaande Franse vertaling van de volledige Perl-documentatie om te zetten met gettextize, ook al was de structuur van veel documenten gedesynchroniseerd. Het betrof meer dan 2 megabytes originele tekst (2 miljoen lettertekens): de vertaling helemaal opnieuw maken zou verschillende maanden werk gevraagd hebben.

Aanwijzingen en kneepjes voor het gettextize-proces

Het gettextize-proces stopt van zodra er een desynchronisatie ontdekt wordt. In theorie zou het waarschijnlijk mogelijk moeten zijn om later in de documenten het gettextize-proces opnieuw te synchroniseren aan de hand van bijvoorbeeld het algoritme dat gehanteerd wordt door het hulpprogramma diff(1). Maar een handmatige interventie zou nog steeds noodzakelijk zijn om de elementen welke niet automatisch in overeenstemming gebracht konden worden, handmatig met elkaar in overeenstemming te brengen, en dit verklaart waarom automatische hersynchronisatie (nog?) niet geïmplementeerd werd.

Als dit zich voordoet, komt alles hierop neer dat de structuur van deze verdomde bestanden via handmatige bewerkingen gealigneerd moet worden. po4a-gettextize geeft behoorlijk veel informatie over wat er fout liep, als dit gebeurt. Het rapporteert de tekstfragmenten welke niet overeenstemmen, hun positie in de tekst en van elk van hen het type. Daarenboven wordt het tot dusver gegenereerde PO-bestand gedumpt als gettextization.failed.po voor verdere inspectie.

Hier volgen enkele andere knepen om u bij dit saai proces te helpen:

  • Verwijder alle extra inhoud van de vertalers, zoals het onderdeel dat erkenning geeft aan de vertalers. U kunt dit nadien terug toevoegen in po4a met addenda (zie po4a(7)).
  • Indien u de bestanden moet bewerken om hun structuur te aligneren, moet u er de voorkeur aan geven om zo mogelijk de vertaling te bewerken. Als de wijzigingen aan het origineel inderdaad te ingrijpend zijn, zal het niet lukken om bij de PO-update de oude en de nieuwe versie met elkaar in overeenstemming te brengen, en de bijbehorende vertaling zal hoe dan ook gedumpt worden. Maar aarzel niet om zo nodig ook het originele document te bewerken: het belangrijkste is een eerste PO-bestand te hebben waarmee gestart kan worden.
  • Aarzel niet om eventuele originele inhoud welke in de vertaalde versie niet voorkomt, te vernietigen. Deze inhoud zal nadien automatisch opnieuw ingevoegd worden, wanneer het PO-bestand gesynchroniseerd wordt met het document.
  • Waarschijnlijk zult u de originele auteur moeten informeren over eventuele structuurveranderingen in de vertaling, welke verantwoord lijken. Problemen in het originele document zouden gemeld moeten worden aan de auteur. Deze enkel in de vertaling repareren, repareert ze slechts voor een deel van de gemeenschap. Bovendien is het met po4a onmogelijk om iets dergelijks te doen;)
  • Soms komt de inhoud van de alinea's overeen, maar niet hun type. Dit repareren is eerder indelingsafhankelijk. In POD en man komt dit vaak door het feit dat een van beide een regel bevat die begint met een witruimte en het andere niet. In deze indelingen kan een alinea geen dergelijke regelafbreking hebben en wordt ze dus een ander type. Verwijder gewoon de witruimte om de zaak op te lossen. Bij XML kan het ook een typefout in een tag-naam betreffen.

    Evenzo worden in POD mogelijk twee paragrafen samengevoegd wanneer de scheidingsregel enige spaties bevat, of wanneer er geen lege regel is tussen de =item-regel en de inhoud van dat item.

  • Soms lijkt het desynchronisatiebericht vreemd, omdat de vertaling aan de verkeerde originele alinea is toegevoegd. Het is het teken dat eerder in het proces een probleem onopgemerkt bleef. Ga op zoek naar het echte desynchronisatiepunt door gettextization.failed.po na te kijken en los het probleem op waar het zich echt bevindt.
  • In een aantal ongelukkige situaties kunt u het gevoel krijgen dat po4a sommige delen van de tekst van het origineel of de vertaling opgegeten heeft. gettextization.failed.po geeft aan dat beide bestanden zoals verwacht overeenkwamen tot paragraaf N. Maar dan is een (niet succesvolle) poging gedaan om paragraaf N+1 van het originele bestand te vergelijken, niet met paragraaf N+1 van de vertaling, zoals zou moeten, maar wel met paragraaf N+2. Net alsof paragraaf N+1 welke u in het document ziet, gewoon uit het bestand verdween tijdens het proces.

    Deze ongelukkige situatie ontstaat wanneer dezelfde alinea herhaald wordt in het document. In dat geval wordt in het PO-bestand geen nieuw item gecreëerd, maar wordt in plaats daarvan aan het bestaande item een nieuwe referentie toegevoegd.

    De voorgaande situatie ontstaat dus wanneer twee gelijkaardige, maar verschillende paragrafen op exact dezelfde manier vertaald worden. Dit zorgt er blijkbaar voor dat een paragraaf uit de vertaling verwijderd wordt. Om het probleem op te lossen volstaat het om een van de vertalingen in het document lichtjes te veranderen. U kunt er ook voor kiezen om de tweede paragraaf uit het originele document te verwijderen.

    Omgekeerd, indien dezelfde alinea welke tweemaal in het originele document voorkomt, niet op beide plaatsen exact op dezelfde manier vertaald wordt, zult u het gevoel krijgen dat een alinea verdween uit het originele document. Kopieer gewoon de beste vertaling over de andere in het vertaalde document om het probleem op te lossen.

  • Een laatste opmerking: wees niet al te verrast indien de eerste synchronisatie van uw PO-bestand veel tijd in beslag neemt. Dit is omdat de meeste msgid's uit het PO-bestand, dat het resultaat is van het gettextize-proces, niet exact overeenkomen met een element uit het POT-bestand dat uit de recente hoofdbestanden gebouwd werd. Dit dwingt gettext ertoe om met een kostelijk tekstfragment-nabijheids-algoritme op zoek te gaan naar het dichtstbij aanleunende element.

    Bijvoorbeeld, de eerste po4a-updatepo van de Franse vertaling van de Perl-documentatie (PO-bestand van 5.5 MB), nam ongeveer 48 uur (twee dagen, inderdaad) in beslag, terwijl de daaropvolgende slechts een dozijn seconden duren.

ZIE OOK

po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).

AUTEURS

 Denis Barbier <barbier@linuxfr.org>
 Nicolas François <nicolas.francois@centraliens.net>
 Martin Quinson (mquinson#debian.org)

COPYRIGHT EN LICENTIE

Copyright 2002-2020 door SPI, inc.

Dit programma is vrije software; u kunt het verder verspreiden en/of aanpassen onder de bepalingen van de GPL (zie het bestand COPYING).

2020-08-05 Po4a-hulpmiddelen