Provided by: po4a_0.67-2_all
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. = item -k --keep-temps Keep the temporary master and localized POT files built before merging. This can be useful to understand why these files get desynchronized, leading to gettextization problems -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 some case, po4a adds a space at the end of either the original or the translated strings. This is because every string must be deduplicated during the gettextize process. Imagine that a string appearing several times unmodified in the original, but is translated in differing way, or that different paragraphs are translated in the exact same way. Without deduplication, such case would break the gettexization algorithm, as it is a simple one to one pairing between the msgids of both the master and the localized files. Since one of the PO files would miss an entry (that would be reported as duplicate, with two references), the pairing would fail. Since po4a uses the entry type ("title" or "plain paragraph", etc) to detect whether the parsing streams got desynchronized, similar issues could occur if two identical entries (same content but differing type) of the master file are translated in the exact same way in the localized file. po4a would detect a fake desyncronization in such case. In most cases, the extra space added by po4a to deduplicate the strings has no impact on the formatting. Strings are fuzzied anyway, and msgmerge will probably match the strings accordingly afterward. • 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 Francois <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).