Scroll to navigation

LOCALE::PO4A::PO.3PM(1) User Contributed Perl Documentation LOCALE::PO4A::PO.3PM(1)

NAMN

Locale::Po4a::Po - Modul för hantering av PO-filer

SYNOPSIS

    use Locale::Po4a::Po;
    my $pofile=Locale::Po4a::Po->new();
    # Read PO file
    $pofile->read('file.po');
    # Add an entry
    $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour',
                  'flags' => "wrap", 'reference'=>'file.c:46');
    # Extract a translation
    $pofile->gettext("Hello"); # returns 'bonjour'
    # Write back to a file
    $pofile->write('otherfile.po');

BESKRIVNING

Locale::Po4a::Po är ett modul som gör det möjligt att manipulera meddelandekataloger. Du kan ladda och skriva från/till en fil (vars filändelse ofta är po), du kan skapa nya poster direkt eller begära översättning av en sträng.

För en mer utförlig beskrivning av meddelandekataloger i PO-format och deras användning, se informationsdokumentationen för programmet gettext (nod "`PO-filer"').

Denna modul är en del av po4a-projektet, vars mål är att använda PO-filer (ursprungligen utformade för att underlätta översättning av programmeddelanden) för att översätta allt, inklusive dokumentation (man-sidor, infomanualer), paketbeskrivningar, debconf-mallar och allt annat som kan dra nytta av detta.

FLAGGOR SOM ACCEPTERAS AV DENNA MODUL

Ange referensformatet. Argumentet type kan vara never för att inte skapa någon referens, file för att endast ange filen utan radnummer, counter för att ersätta radnumret med en ökande räknare och full för att inkludera fullständiga referenser (standard: full).
Ange hur po-filen ska formateras. Detta ger valet mellan antingen filer som är snyggt formaterade men som kan leda till git-konflikter, eller filer som är lättare att hantera automatiskt, men svårare att läsa för människor.

Historiskt sett har gettext-paketet omformaterat po-filerna vid den 77:e kolumnen av kosmetiska skäl. Denna flagga anger po4a:s beteende. Om det är inställt på ett numeriskt värde kommer po4a att bryta po-filen efter denna kolumn och efter radbrytningar i innehållet. Om det är inställt på newlines kommer po4a endast att dela upp msgid och msgstr efter radbrytningar i innehållet. Om det är inställt på no kommer po4a inte att bryta po-filen alls. Referenskommmentarerna bryts alltid av de gettext-verktyg som vi använder internt.

Observera att denna flagga inte påverkar hur msgid och msgstr bryts, dvs. hur radbrytningar läggs till i innehållet i dessa strängar.

Ställ in rapportadressen för msgid-buggar. Som standard har de skapade POT-filerna inga Report-Msgid-Bugs-To-fält.
Ange upphovsrättsinnehavaren i POT-rubriken. Standardvärdet är "Free Software Foundation, Inc."
Ange paketnamnet för POT-rubriken. Standardvärdet är "PACKAGE".
Ställ in paketversionen för POT-rubriken. Standardvärdet är "VERSION".

Funktioner som rör hela meddelandekataloger

Skapar en ny meddelandekatalog. Om ett argument anges är det namnet på en PO-fil som vi ska ladda.
Läser en PO-fil (vars namn anges som argument). Befintliga poster i self tas inte bort, utan de nya läggs till i slutet av katalogen.
Skriver den aktuella katalogen till den angivna filen.
Som skriva, men om PO- eller POT-filen redan finns kommer objektet att skrivas till en temporär fil som jämförs med den befintliga filen för att kontrollera om uppdateringen behövs (detta undviker att ändra en POT bara för att uppdatera en radreferens eller fältet POT-Creation-Date).
Denna funktion extraherar en katalog från en befintlig katalog. Endast de poster som har en referens i den angivna filen kommer att placeras i den resulterande katalogen.

Denna funktion analyserar sitt argument, konverterar det till en Perl-funktionsdefinition, utvärderar denna definition och filtrerar de fält för vilka denna funktion returnerar true.

Ibland älskar jag Perl ;)

Funktioner för att använda en meddelandekatalog för översättningar

Begär översättning av strängen som anges som argument i den aktuella katalogen. Funktionen returnerar den ursprungliga (oöversatta) strängen om strängen inte hittades.

Efter strängen som ska översättas kan du skicka en hash med extra argument. Här är de giltiga posterna:

boolean som anger om vi kan anse att blanktecken i strängen inte är viktiga. Om ja, kanoniserar funktionen strängen innan den söker efter en översättning och sluter in resultatet.
den kolumn där vi ska bryta (standard: 76).
the context string value to be used as the msgctxt field <https://www.gnu.org/software/gettext/manual/html_node/Contexts.html> in gettext PO files. It is empty by default, meaning no context is assigned to the message. When a context is provided, it first searches for messages matching that context; if none are found, it falls back to searching for messages with an empty context. This fallback behavior ensures backward compatibility.
Returnerar statistik om träfffrekvensen för gettext sedan senaste gången stats_clear() anropades. Observera att det inte är samma statistik som den som skrivs ut av msgfmt --statistic. Här är det statistik om den senaste användningen av PO-filen, medan msgfmt rapporterar filens status. Exempel på användning:

    [viss användning av PO-filen för att översätta saker]
    ($percent,$hit,$queries) = $pofile->stats_get();
    print "Hittills har vi hittat översättningar för $percent\% ($hit av $queries) av strängar.\n";
    
Rensar statistiken om gettext-träffar.

Funktioner för att skapa en meddelandekatalog

Lägg till en ny post i slutet av den aktuella katalogen. Argumenten ska bilda en hashtabell. Giltiga nycklar är:
strängen på originalspråket.
översättningen.
en indikation på var denna sträng hittades. Exempel: file.c:46 (vilket betyder i 'file.c' på rad 46). Det kan vara en lista separerad med mellanslag om det finns flera förekomster.
en kommentar som har lagts till här manuellt (av översättarna). Formatet här är fritt.
en kommentar som automatiskt lades till av strängutdragningsprogrammet. Se flaggan --add-comments i programmet xgettext för mer information.
mellanslagsavgränsad lista över alla definierade flaggor för denna post.

Giltiga flaggor är: c-text, python-text, lisp-text, elisp-text, librep-text, smalltalk-text, java-text, awk-text, object-pascal-text, ycp-text, tcl-text, wrap, no-wrap och fuzzy.

Se gettext-dokumentationen för deras betydelse.

detta är främst ett internt argument: det används vid gettextisering av dokument. Tanken här är att analysera både originalet och översättningen till ett PO-objekt och slå ihop dem, med den enas msgid som msgid och den andras msgid som msgstr. För att säkerställa att allt blir korrekt tilldelas varje msgid i PO-objekt en typ baserat på deras struktur (som "chapt", "sect1", "p" och så vidare i DocBook). Om strängtyperna inte är desamma betyder det att de båda filerna inte har samma struktur, och processen rapporterar ett fel.

Denna information skrivs som automatisk kommentar i PO-filen, eftersom det ger översättarna lite sammanhang om de strängar som ska översättas.

booleskt värde som anger om blanktecken kan ändras vid kosmetiska omformateringar. Om värdet är sant kanoniseras strängen före användning.

Denna information skrivs till PO-filen med hjälp av flaggan wrap eller no-wrap.

ignoreras; nyckeln behålls för bakåtberäkningsbarhet.

Övriga funktioner

Returnerar antalet poster i katalogen (utan rubriken).
Returnerar antalet poster i dokumentet. Om en sträng förekommer flera gånger i dokumentet räknas den flera gånger.
Returnerar msgid för det angivna numret.
Returnerar msgid med den angivna positionen i dokumentet.
Returnerar typen av msgid med den angivna positionen i dokumentet. Detta är förmodligen endast användbart för gettextisering, och det lagras separat från {$msgid}{'type'} eftersom den senare platsen kan skrivas över av en annan typ när $msgid dupliceras i huvuddokumentet.
Returnerar teckenuppsättningen som anges i PO-rubriken. Om den inte har angetts returneras "UTF-8".
En liten verktygsfunktion som returnerar en sträng med lämpliga flaggor för C-<--no-wrap>/C-<--width> -gettext-verktygen som motsvarar det angivna B-<wrap-po> -värdet.
This method iterates over each message in the PO file and processes it. It takes a subroutine reference and executes it with two arguments: 1) the "msgid" and 2) a hash reference containing the message content, which includes fields such as "msgstr".
This method takes two parameters: the current "msgid" and the new "msgid". It removes the entry with the current "msgid" from the PO instance and reinserts it under the new "msgid" value.
This method takes a document position and returns the matching message as a list containing three elements: the "msgid", the "msgctxt", and the message content (which includes fields such as "msgstr").
This method takes a "msgid" and an optional "msgctxt", and returns the first matching message content, which includes fields such as "msgstr". If no "msgctxt" is provided, an empty string value is used. If no message entry is found with the given context, the method falls back to searching for a message without context.

UPPHOVSPERSONER

 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)
2026-03-23 perl v5.42.0