table of contents
| PO4A-GETTEXTIZE.1P(1) | User Contributed Perl Documentation | PO4A-GETTEXTIZE.1P(1) |
NAMN¶
po4a-gettextize - konvertera en originalfil (och dess översättning) till en PO-fil
SYNOPSIS¶
po4a-gettextize -f fmt -m master.doc -l XX.doc -p XX.po
(XX.po är utdata, alla andra är indata)
BESKRIVNING¶
po4a (PO för allt) underlättar underhållet av dokumentationsöversättningar med hjälp av de klassiska gettext-verktygen. Den viktigaste funktionen i po4a är att den separerar översättningen av innehållet från dokumentstrukturen. Se sidan po4a(7) för en enkel introduktion till detta projekt.
Skriptet po4a-gettextize hjälper dig att konvertera dina befintliga översättningar till ett po4a-baserat arbetsflöde. Detta behöver endast göras en gång för att rädda en befintlig översättning vid konvertering till po4a, inte regelbundet efter konverteringen av ditt projekt. Denna mödosamma process förklaras i detalj i avsnittet "Konvertera en manuell översättning till po4a" nedan.
Du måste tillhandahålla både en huvudfil (t.ex. källan på engelska) och en befintlig översatt fil (t.ex. ett tidigare översättningsförsök utan po4a). Om du tillhandahåller mer än en huvudfil eller översättningsfil kommer de att användas i sekvens, men det kan vara enklare att gettextisera varje sida eller kapitel separat och sedan använda msgmerge(1) för att slå samman alla producerade PO-filer. Som du önskar.
Om huvuddokumentet innehåller icke-ASCII-tecken kommer den nya genererade PO-filen att vara i UTF-8. Om huvuddokumentet är helt i ASCII kommer den genererade PO-filen att använda kodningen i det översatta indokumentet.
FLAGGOR¶
- -f, --format
- Format på den dokumentation du vill hantera. Använd flaggan B-<--help-format> för att se listan över tillgängliga format.
- -m, --master
- Fil som innehåller huvuddokumentet som ska översättas. Du kan använda den här flaggan flera gånger om du vill gettexta flera dokument.
- -M, --master-charset
- Teckenuppsättning för filen som innehåller dokumentet som ska översättas.
- -l, --localized
- Fil som innehåller det lokaliserade (översatta) dokumentet. Om du har angett flera huvudfiler kan du ange flera lokaliserade filer genom att använda den här flaggan flera gånger.
- -L, --localized-charset
- Teckenuppsättning för filen som innehåller det lokaliserade dokumentet.
- -p, --po
- Fil där meddelandekatalogen ska skrivas. Om ingen fil anges kommer meddelandekatalogen att skrivas till standardutmatningen.
- -o, --option
- Extra flaggor som ska skickas till formattillägget. Se dokumentationen för varje tillägg för mer information om giltiga flaggor och deras betydelse. Du kan till exempel skicka '-o tablecells' till AsciiDoc-parsern, medan textparsern accepterar '-o tabs=split'.
- -h, --help
- Visa ett kort hjälpmelding.
- --help-format
- Lista de dokumentationsformat som po4a förstår.
- -k --keep-temps
- Behåll de tillfälliga master- och lokaliserade POT-filerna som skapades före sammanslagningen. Detta kan vara användbart för att förstå varför dessa filer blir osynkroniserade, vilket leder till gettextiseringsproblem.
- -V, --version
- Visa versionen av skriptet och avsluta.
- -v, --verbose
- Öka programmets detaljeringsgrad.
- -d, --debug
- Skriv ut viss felsökningsinformation.
- --msgid-bugs-address email@address
- Ställ in rapportadressen för msgid-buggar. Som standard har de skapade POT-filerna inga Report-Msgid-Bugs-To-fält.
- --copyright-holder string
- Ange upphovsrättsinnehavaren i POT-rubriken. Standardvärdet är "Free Software Foundation, Inc."
- --package-name string
- Ange paketnamnet för POT-rubriken. Standardvärdet är "PACKAGE".
- --package-version string
- Ställ in paketversionen för POT-rubriken. Standardvärdet är "VERSION".
Konvertera en manuell översättning till po4a¶
po4a-gettextize synkroniserar masterfilen och de lokaliserade filerna för att extrahera deras innehåll till en PO-fil. Innehållet i masterfilen ger msgid medan innehållet i den lokaliserade filen ger msgstr. Denna process är något ömtålig: den N:te strängen i den översatta filen ska vara översättningen av den N:te strängen i originalet.
Gettextisering fungerar bäst om du lyckas hämta den exakta versionen av originaldokumentet som användes för översättningen. Även då kan du behöva justera både originalfilerna och de lokaliserade filerna för att anpassa deras struktur om den ändrats av den ursprungliga översättaren, så det rekommenderas att arbeta med kopior av filerna.
Internt rapporterar varje po4a-parser den syntaktiska typen för varje extraherad sträng. Det är så desynkronisering upptäcks under gettextiseringen. I exemplet nedan är det mycket osannolikt att den fjärde strängen i översättningen (av typen "kapitel") är översättningen av den fjärde strängen i originalet (av typen "stycke"). Det är mer troligt att ett nytt stycke har lagts till i originalet, eller att två originalstycken har slagits samman i översättningen.
Original Översättning
chapter kapitel
paragraph stycke
paragraph stycke
paragraph kapitel
chapter stycke
paragraph stycke
po4a-gettextize kommer att diagnostisera alla strukturella desynkroniseringar utförligt. När detta inträffar bör du manuellt redigera filerna för att lägga till falska stycken eller ta bort lite innehåll här och där tills strukturen i båda filerna faktiskt stämmer överens. Nedan följer några tips för att rädda så mycket som möjligt av den befintliga översättningen när du gör detta.
Om du har turen att ha en perfekt matchning i filstrukturerna direkt, tar det bara några sekunder att skapa en korrekt PO-fil. Annars kommer du snart att förstå varför den här processen har ett så fult namn :) Ändå är gettextisering ofta snabbare än att översätta allt igen. Jag gettextiserade den franska översättningen av hela Perl-dokumentationen på en dag trots synkroniseringsproblemen med many. Med tanke på textmängden (2 MB originaltext) skulle det ha tagit flera månader att starta om översättningen utan att först rädda de gamla översättningarna. Dessutom är detta slitgöra priset man måste betala för att få bekvämligheten med po4a. När konverteringen är klar kommer synkroniseringen mellan huvuddokument och översättningar alltid att ske helt automatiskt.
Efter en lyckad gettextisering bör de producerade dokumenten kontrolleras manuellt för att upptäcka eventuella oupptäckta skillnader och dolda fel, enligt beskrivningen nedan.
Tips och tricks för gettextiseringsprocessen
Gettextiseringen avbryts så snart en desynkronisering upptäcks. När detta inträffar måste du redigera filerna så mycket som behövs för att återställa filernas struktur. po4a-gettextize är ganska detaljerad när något går fel. Den rapporterar de strängar som inte stämmer överens, deras positioner i texten och typen av varje sträng. Dessutom dumpas den PO-fil som genererats hittills som gettextization.failed.po för vidare granskning.
Här är några tips som kan hjälpa dig i denna mödosamma process och se till att du kan återanvända så mycket som möjligt av den tidigare översättningen:
- Ta bort allt extra innehåll i översättningarna, till exempel avsnittet med tack till översättarna. De ska läggas till separat på po4a som tillägg (se po4a(7)).
- När du redigerar filerna för att anpassa deras strukturer, bör du helst redigera översättningen om möjligt. Om ändringarna i originalet är för omfattande kommer den gamla och den nya versionen inte att matchas under den första po4a-körningen efter gettextisering (se nedan). Alla översättningar som inte matchar kommer ändå att kasseras. Med detta sagt bör du ändå redigera originaldokumentet om det är för svårt att få gettextiseringen att fortsätta på annat sätt, även om det innebär att ett stycke av översättningen kasseras. Det viktiga är att få en första PO-fil att börja med.
- Tveka inte att ta bort allt originalinnehåll som inte skulle finnas i den översatta versionen. Detta innehåll kommer automatiskt att återinföras efteråt, när PO-filen synkroniseras med dokumentet.
- Du bör antagligen informera den ursprungliga författaren om alla strukturella förändringar i översättningen som verkar motiverade. Problem i originaldokumentet bör rapporteras till författaren. Att åtgärda dem i din översättning åtgärdar dem bara för en del av gemenskapen. Dessutom är det omöjligt att göra det när man använder po4a ;) Men du bör antagligen vänta till slutet av konverteringen till po4a innan du ändrar originalfilerna.
- Ibland stämmer innehållet i styckena överens, men
inte deras typer. Att åtgärda detta är ganska
formatberoende. I POD och man beror det ofta på att det ena
innehåller en rad som börjar med ett blanksteg medan det
andra inte gör det. I dessa format kan sådana stycken inte
brytas och blir därför en annan typ. Ta bara bort
blanksteget så är det fixat. Det kan också vara ett
skrivfel i taggnamnet i XML.
På samma sätt kan två stycken slås ihop i POD när skiljelinjen innehåller några mellanslag eller när det inte finns någon tom rad mellan raden =item och innehållet i objektet.
- Ibland kan meddelandet om desynkronisering verka konstigt eftersom översättningen är kopplad till fel originalstycke. Det är ett tecken på ett problem som inte upptäcktes tidigare i processen. Sök efter den faktiska desynkroniseringspunkten genom att inspektera filen gettextization.failed.po som skapades och åtgärda problemet där det verkligen finns.
- Andra problem kan uppstå på grund av duplicerade strängar i antingen originalet eller översättningen. Duplicerade strängar slås samman i PO-filer, med två referenser. Detta utgör ett problem för gettextiseringsalgoritmen, som är en enkel en-till-en-koppling mellan B-<msgid>erna i både masterfilen och de lokaliserade filerna. Man tror dock att de senaste versionerna av po4a hanterar duplicerade strängar på ett korrekt sätt, så du bör rapportera eventuella kvarstående problem som du stöter på.
Granskning av filer som skapats av po4a-gettextize¶
Alla filer som skapas av po4a-gettextize bör granskas manuellt, även om skriptet avslutas utan problem. Du bör bläddra igenom PO-filen och se till att msgid och msgstr faktiskt stämmer överens. Det är inte nödvändigt att se till att översättningen är helt korrekt ännu, eftersom alla poster ändå markeras som fuzzy-översättningar. Du behöver bara kontrollera om det finns uppenbara matchningsproblem, eftersom dåligt matchade översättningar kommer att dumpas i efterföljande steg medan du vill rädda dem.
Lyckligtvis kräver detta steg inte att man behärskar målspråken, eftersom man bara vill känna igen liknande element i varje B-<msgid> och dess motsvarande B-<msgstr>. Eftersom jag själv talar franska, engelska och lite tyska kan jag göra detta för alla europeiska språk, även om jag inte kan ett ord av de flesta av dessa språk. Ibland lyckas jag upptäcka matchande problem i icke-latinska språk genom att titta på stränglängd, frasstrukturer (stämmer antalet frågetecken?) och andra ledtrådar, men jag föredrar att någon annan granskar dessa språk.
Om du upptäcker en avvikelse, redigera originalfilen och översättningsfilen som om po4a-gettextize rapporterade ett fel, och försök igen. När du har en bra PO-fil för din tidigare översättning, säkerhetskopiera den tills po4a fungerar korrekt.
Kör B-<po4a> en för första gången¶
Det enklaste sättet att konfigurera po4a är att skriva en po4a.conf -konfigurationsfil och använda det integrerade po4a -programmet (po4a-updatepo och po4a-translate är föråldrade). Se avsnittet "CONFIGURATION FILE" i po4a(1) -dokumentationen för mer information.
När B-<po4a> körs för första gången kommer den aktuella versionen av huvuddokumenten att användas för att uppdatera PO-filerna som innehåller de gamla översättningarna som du räddat genom gettextisering. Detta kan ta ganska lång tid, eftersom många av B-<msgid>erna från gettextiseringen inte exakt matchar elementen i POT-filen som skapats från de senaste huvudfilerna. Detta tvingar gettext att söka efter den närmaste med hjälp av en kostsam strängnärhetsalgoritm. Till exempel tog den första körningen av den franska översättningen av Perl-dokumentationen (5,5 MB PO-fil) cirka 48 timmar (ja, två dagar), medan de efterföljande bara tog några sekunder.
Flytta dina översättningar till produktion¶
Efter denna första körning är PO-filerna redo att granskas av översättarna. Alla poster har markerats som fuzzy i PO-filen av B-<po4a-gettextization>, vilket innebär att de måste granskas noggrant innan de används. Översättarna bör kontrollera varje post för att verifiera att den återställda översättningen faktiskt stämmer överens med den aktuella originaltexten, uppdatera översättningen vid behov och ta bort fuzzy-markeringarna.
När tillräckligt många oklara markeringar har tagits bort börjar po4a generera översättningsfilerna på disken, och du är redo att flytta ditt översättningsflöde till produktion. Vissa projekt tycker att det är användbart att använda weblate för att samordna mellan översättare och underhållsansvariga, men det ligger utanför po4a:s räckvidd.
SE ÄVEN¶
po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).
UPPHOVSPERSONER¶
Denis Barbier <barbier@linuxfr.org> Nicolas François <nicolas.francois@centraliens.net> Martin Quinson (mquinson#debian.org)
UPPHOVSRÄTT OCH LICENS¶
Copyright 2002-2023 av 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 |