Wat is het PO-bestandsformaat?
.po-bestanden zijn GNU gettext Portable Object-bestanden - het door mensen bewerkbare bronformaat voor softwarevertalingen. Het formaat wordt gebruikt in een breed scala aan projecten: GNU/Linux-hulpprogramma's, PHP-applicaties, Python-pakketten, WordPress-thema's en -plugins, en vele andere open-source applicaties.
Een .po-bestand is platte UTF-8-tekst georganiseerd als gepa als gepaarde items: msgid (de originele tekenreeks in de brontaal) en msgstr (het vertaalde equivalent). Commentaarregels voorafgegaan door # bevatten vertalersnotities, geëxtraheerde broncode-opmerkingen, bestandsverwijzingen en „fuzzy”-vlaggen. Items met meervoudsvormen gebruiken msgid_plural en geïndexeerde msgstr[n] varianten die worden aangestuurd door een Plural-Forms-expressie in de bestandskop.
De vertaalworkflow volgt drie bestandstypen: ontwikkelaars extraheren vertaalbare tekenreeksen naar een .pot-sjabloon, vertalers kopiëren dit per taalgebied en vullen de msgstr-waarden in, en vervolgens compileert msgfmt elke .po naar een binair .mo-bestand dat de applicatie tijdens runtime laadt. De .mo is alleen machineleesbaar - u bewerkt altijd de .po, nooit de gecompileerde uitvoer.
.po-bestanden kunnen worden bewerkt in een gewone tekstverwerker, maar speciale tools zoals Poedit bieden foutcontrole, suggesties voor „fuzzy”-overeenkomsten en hulpmiddelen voor meervoudsvormen. Webplatforms zoals Weblate ondersteunen gezamenlijk vertalen. Het formaat is stabiel en achterwaarts compatibel sinds GNU gettext in 1995 werd geïntroduceerd.
Beveiliging & veiligheid
RISICO: LOWEen .po bevat alleen vertaaltekst en commentaar - er is geen uitvoerbare code, dus het bestand zelf is onschadelijk. De enige praktische waarschuwing: een kwaadaardig vertaalbestand in een thema/plugin zou misleidende interface-tekst kunnen injecteren (bijv. gewijzigde links of instructies), dus gebruik alleen taalbestanden van de officiële thema/plugin of vertaalbron, geen willekeurige „vertaling”-downloads.
Formaatdetails
in een notendop- Disk image / partition image (rare) - The DB legacy name 'Disk image file' reflects a rare/incorrect labeling; .po is not a standard disk-image extension.
Programma's die PO-bestanden openen
Technische details
diepe specificaties| Formaat-type | Platte tekst, regelgeoriënteerd (GNU gettext PO-syntaxis) |
| Codering | UTF-8 (tekenset gedeclareerd in het Content-Type veld van de header); oudere catalogi kunnen ISO-8859-x coderingen gebruiken |
| MIME-type | text/x-gettext-translation |
| Itemstructuur | msgid / msgstr paren; optionele msgctxt voor contextuele verduidelijking van identieke bronteksten |
| Header-item | Het eerste item heeft een lege msgid; het msgstr-blok bevat Project-Id-Version, Content-Type, Plural-Forms en andere catalogus-metadata |
| Meervoudsvormen | msgid_plural met geïndexeerde msgstr[0], msgstr[1], ... varianten; de Plural-Forms expressie in de header bepaalt welke vorm geldt voor een bepaald aantal |
| Commentaartypen | # (vertalerscommentaar), #. (geëxtraheerd broncommentaar), #: (bronbestandsverwijzing), #, (vlaggen zoals fuzzy of c-format) |
| Fuzzy-vlag | #, fuzzy markeert een vertaling die controle behoeft nadat de brontekst is gewijzigd; msgfmt sluit fuzzy-items uit van de gecompileerde .mo-uitvoer |
| Gecompileerde uitvoer | Geconverteerd naar binair .mo (Machine Object) door msgfmt; de .mo is wat de draaiende applicatie laadt via gettext() |
| Sjabloonbestand | .pot (Portable Object Template) - het onvertaalde skelet; alle taal-specifieke .po-bestanden worden hiervan afgeleid via msginit of msgmerge |
| Typische bestandsgrootte | 5 KB - 5 MB; schaalt met het aantal vertaalbare tekenreeksen in het project |
| Toolchain | xgettext (tekenreeksen extraheren uit bron), msginit (nieuwe .po maken), msgmerge (bestaande .po bijwerken), msgfmt (compileren naar .mo) |
| Platform | Elk - Linux, macOS, Windows, BSD; overal waar GNU gettext of een compatibele libintl-implementatie beschikbaar is |
| Ecosysteem | Gebruikt door WordPress, Drupal, GNOME, KDE, Python gettext, PHP gettext en vele andere frameworks voor internationalisering (i18n) |
| Uitgebracht | 1995 (GNU gettext) |
| Laatste versie | PO file syntax is stable; defined in the current GNU gettext manual |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.gnu.org |
PO conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over PO-bestanden.