PO4A-GETTEXTIZE(1p) | Po4a-hulpmiddelen | PO4A-GETTEXTIZE(1p) |
po4a-gettextize - een origineel bestand (en zijn vertalingen) omzetten naar een PO-bestand
po4a-gettextize -f fmt -m hoofddocument.doc -l XX.doc -p XX.po
(XX.po is de uitvoer, alle andere zijn invoer)
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 helpt u bij het omzetten van uw reeds bestaande vertalingen naar een op po4a gebaseerde werkstroom. Dit moet slechts één keer worden gedaan om een bestaande vertaling te behouden bij de omzetting naar po4a, en niet op regelmatige basis na de omzetting van uw project. Dit vervelende proces wordt in detail uitgelegd in de sectie 'Een handmatige vertaling omzetten naar po4a' hieronder.
U moet zowel een hoofdbestand (bijv. de bron in het Engels) als een bestaand vertaald bestand (bijv. een eerdere vertaalpoging zonder po4a) aanleveren. Als u meer dan één hoofd- of vertaalbestand aanlevert, zullen ze opeenvolgend worden gebruikt, maar het kan gemakkelijker zijn om elke pagina of elk hoofdstuk afzonderlijk te verwerken met gettextize en dan msgmerge te gebruiken om alle geproduceerde PO-bestanden samen te voegen. Het is zoals u verkiest.
Indien het hoofddocument niet-ASCII-tekens bevat, zal het nieuw aangemaakt PO-bestand in UTF-8 zijn. Indien het hoofddocument volledig in ASCII is, zal het gegenereerde PO-bestand de codering gebruiken van het vertaalde invoerdocument.
po4a-gettextize synchroniseert de hoofd- en gelokaliseerde bestanden om hun inhoud uit te pakken in een PO-bestand. De inhoud van het hoofdbestand geeft de msgid terwijl de inhoud van het gelokaliseerde bestand de msgstr geeft. Dit proces is enigszins kwetsbaar: de N-de tekenreeks van het vertaalde bestand wordt verondersteld de vertaling te zijn van de N-de tekenreeks in het origineel.
Gettextisatie werkt het best als u erin slaagt om de exacte versie van het originele document dat voor de vertaling is gebruikt, te achterhalen. Zelfs dan kan het zijn dat u zowel het hoofdbestand als de gelokaliseerde bestanden moet bewerken om hun structuur op elkaar af te stemmen als die door de oorspronkelijke vertaler werd gewijzigd. Dus is het raadzaam om op kopieën van bestanden te werken.
Intern rapporteert elke po4a-ontleder het syntactische type van elk geëxtraheerd tekstfragment. Dit is de wijze waarop desynchronisatie ontdekt wordt tijdens het gettextisatie-proces. In het onderstaande voorbeeld 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 om hier en daar nepparagrafen toe tevoegen of bepaalde inhoud te verwijderen, totdat de structuur van beide bestanden werkelijk overeenkomt. Hieronder worden enkele kneepjes aangereikt om het meeste van de bestaande vertaling te redden terwijl u dit doet.
Indien u het geluk heeft dat de bestandsstructuren vanzelf perfect overeenkomen, dan 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:) Toch blijft gettextisatie vaak sneller dan alles opnieuw vertalen. Ik heb de gettextisatie van de Franse vertaling van de hele Perl-documentatie in één dag gerealiseerd, ondanks de vele synchronisatieproblemen. Gezien de hoeveelheid tekst (2Mb aan originele tekst), zou het opnieuw starten van de vertaling zonder eerst de oude vertalingen te redden, meerdere maanden werk hebben gekost. Bovendien is dit werk dat u doet morren, de prijs 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.
Na een succesvolle gettextisatie moeten de geproduceerde documenten handmatig worden gecontroleerd op niet-gedetecteerde verschillen en stille fouten, zoals hieronder wordt uitgelegd.
Aanwijzingen en kneepjes voor het gettextize-proces
De gettextisatie stopt zodra een desynchronisatie wordt gedetecteerd. Wanneer dit gebeurt, moet u de bestanden zo vaak bewerken als nodig is om de structuur van de bestanden opnieuw op één lijn te krijgen. po4a-gettextize geeft behoorlijk veel informatie wanneer er zaken fout lopen. 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 knepen om u te helpen bij dit saai proces en om ervoor te zorgen dat u het meeste van de eerdere vertaling behoudt:
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.
Elk bestand dat door po4a-gettextize wordt geproduceerd, moet handmatig worden gecontroleerd, zelfs als het script met succes wordt afgesloten. U moet het PO-bestand overlopen en ervoor zorgen dat de msgid en msgstr daadwerkelijk overeenkomen. Het is niet nodig ervoor te zorgen dat de vertaling reeds helemaal correct is, aangezien alle items sowieso als vage vertalingen worden gemarkeerd. U hoeft alleen te controleren op duidelijke overeenstemmingsproblemen, omdat slecht overeenkomende vertalingen in de volgende stappen worden gedumpt terwijl u ze wilt redden.
Gelukkig hoeft u voor deze stap de doeltalen niet te beheersen, aangezien u alleen vergelijkbare elementen in elke msgstr en de bijbehorende msgstr wilt herkennen. Omdat ik zelf Frans, Engels en een beetje Duits spreek, kan ik dit in ieder geval voor alle Europese talen doen, zelfs als ik van de meeste van deze talen geen woord spreek. Ik slaag er soms in om overeenstemmingsproblemen in niet-Latijnse talen op te sporen door te kijken naar de lengte van de tekenreeks, naar zinsstructuren (komt het aantal vraagtekens overeen?) en naar andere aanwijzingen, maar ik heb liever dat iemand anders die talen nakijkt.
Als u wat overeenkomsten betreft, een fout ontdekt, bewerk dan het origineel en de vertalingsbestanden alsof po4a-gettextize een fout meldde, en probeer het opnieuw. Als u eenmaal een fatsoenlijk PO-bestand hebt voor uw vroegere vertaling, maak er dan een back-up van totdat u er in slaagt po4a correct te laten werken.
De eenvoudigste manier om po4a in te stellen is om een configuratiebestand po4a.conf te schrijven, en het geïntegreerde po4a programma te gebruiken (po4a-updatepo en po4a-translate zijn verouderd). Raadpleeg het onderdeel "CONFIGURATIEBESTAND" in de documentatie van po4a(1) voor meer details.
Wanneer po4a voor de eerste keer wordt uitgevoerd, wordt de huidige versie van de hoofddocumenten gebruikt om de PO-bestanden bij te werken die de oude vertalingen bevatten die u via gettextisatie hebt gered. Dit kan behoorlijk lang duren, omdat veel van de msgid's uit de gettextisatie niet exact overeenkomen met de elementen van het POT-bestand dat is opgebouwd uit de recente hoofdbestanden. Dit dwingt gettext om met behulp van een kostelijk tekenreeksverwantschapsalgoritme te zoeken naar wat er het dichtst bij aanleunt. Zo duurde de eerste doorloop van de Franse vertaling van de Perl-documentatie (PO-bestand van 5,5 MB) bijvoorbeeld ongeveer 48 uur (ja, twee dagen), terwijl de daaropvolgende slechts enkele seconden in beslag nemen.
Na deze eerste doorloop zijn de PO-bestanden klaar om door vertalers gecontroleerd te worden. Alle items in het PO-bestand werden door po4a-gettextization als vaag gemarkeerd, zodat ze vóór gebruik zorgvuldig moeten worden nagekeken. Vertalers moeten bij elke invoer nagaan of de geredde vertaling daadwerkelijk overeenstemt met de huidige originele tekst, ze moeten de vertaling indien nodig bijwerken en de vaag-markeringen verwijderen.
Zodra er voldoende vaag-markeringen zijn verwijderd, begint po4a met het genereren op schijf van de vertalingsbestanden en bent u klaar om uw vertaalwerkstroom in het productieproces in te schakelen. Sommige projecten vinden het nuttig om beroep te doen op weblate voor de coördinatie tussen vertalers en beheerders, maar dat valt buiten het bereik van po4a.
po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).
Denis Barbier <barbier@linuxfr.org> Nicolas François <nicolas.francois@centraliens.net> Martin Quinson (mquinson#debian.org)
Copyright 2002-2022 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).
2023-01-03 | Po4a-hulpmiddelen |