Was ist das PO-Dateiformat?
.po-Dateien sind GNU gettext Portable Object-Dateien - das vom Menschen bearbeitbare Quellformat für Software-Übersetzungen. Das Format wird in einer Vielzahl von Projekten verwendet: GNU/Linux-Utilities, PHP-Anwendungen, Python-Paketen, WordPress-Themes und -Plugins sowie vielen anderen Open-Source-Anwendungen.
Eine .po-Datei ist reiner UTF-8-Text, der in paarweisen Einträgen organisiert ist: msgid (die ursprüngliche Zeichenfolge der Quellsprache) und msgstr (das übersetzte Äquivalent). Kommentarzeilen mit dem Präfix # enthalten Übersetzerhinweise, extrahierte Quellcode-Kommentare, Dateireferenzen und „Fuzzy“-Markierungen. Einträge mit Pluralformen verwenden msgid_plural und indizierte msgstr[n]-Varianten, die durch einen Plural-Forms-Ausdruck im Dateikopf gesteuert werden.
Der Übersetzungs-Workflow folgt drei Dateitypen: Entwickler extrahieren übersetzbare Strings in eine .pot-Vorlage, Übersetzer kopieren diese pro Gebietsschema und füllen die msgstr-Werte aus, und anschließend kompiliert msgfmt jede .po in eine binäre .mo-Datei, die die Anwendung zur Laufzeit lädt. Die .mo ist nur maschinenlesbar - Sie bearbeiten immer die .po, niemals die kompilierte Ausgabe.
.po-Dateien können in einem einfachen Texteditor bearbeitet werden, aber spezialisierte Tools wie Poedit bieten Fehlerprüfungen, Vorschläge für Teilübereinstimmungen (Fuzzy-Matches) und Hilfen für Pluralformen. Web-Plattformen wie Weblate unterstützen die kollaborative Übersetzung. Das Format ist stabil und abwärtskompatibel, seit GNU gettext im Jahr 1995 eingeführt wurde.
Sicherheit
RISIKO: LOWEine .po-Datei enthält nur Übersetzungstexte und Kommentare - es gibt keinen ausführbaren Code, daher ist die Datei selbst harmlos. Die einzige praktische Vorsicht: Eine bösartige Übersetzungsdatei in einem Theme/Plugin könnte irreführende Oberflächentexte einschleusen (z. B. geänderte Links oder Anweisungen). Verwenden Sie Sprachdateien daher nur aus offiziellen Theme/Plugin- oder Übersetzungsquellen, keine zufälligen «Übersetzungs»-Downloads.
Formatdetails
kurz gefasst- Disk-Image / Partition-Image (selten) - Der veraltete DB-Name «Disk image file» spiegelt eine seltene/falsche Kennzeichnung wider; .po ist keine Standard-Erweiterung für Disk-Images.
Programme zum Öffnen von PO-Dateien
Technische Details
technische Spezifikation| Formattyp | Klartext, zeilenorientiert (GNU gettext PO-Syntax) |
| Kodierung | UTF-8 (Zeichensatz im Header-Feld Content-Type deklariert); ältere Kataloge können ISO-8859-x-Kodierungen verwenden |
| MIME-Typ | text/x-gettext-translation |
| Eintragsstruktur | msgid / msgstr Paare; optional msgctxt zur kontextuellen Unterscheidung identischer Quell-Strings |
| Header-Eintrag | Der erste Eintrag hat eine leere msgid; sein msgstr-Block enthält Project-Id-Version, Content-Type, Plural-Forms und andere Katalog-Metadaten |
| Pluralformen | msgid_plural mit indizierten msgstr[0], msgstr[1], ... Varianten; der Plural-Forms-Header-Ausdruck steuert, welche Form für eine bestimmte Anzahl gilt |
| Kommentartypen | # (Übersetzerkommentar), #. (extrahierter Quellkommentar), #: (Quelldateireferenz), #, (Flags wie fuzzy oder c-format) |
| Fuzzy-Flag | #, fuzzy markiert eine Übersetzung, die nach einer Änderung des Quell-Strings überprüft werden muss; msgfmt schließt fuzzy-Einträge von der kompilierten .mo-Ausgabe aus |
| Kompilierte Ausgabe | Konvertiert in binäre .mo (Machine Object) durch msgfmt; die .mo wird von der laufenden Anwendung über gettext() geladen |
| Vorlagendatei | .pot (Portable Object Template) - das unübersetzte Skelett; alle Sprach-.po-Dateien werden daraus via msginit oder msgmerge abgeleitet |
| Typische Dateigröße | 5 KB - 5 MB; skaliert mit der Anzahl der übersetzbaren Strings im Projekt |
| Tool-Chain | xgettext (Strings aus Quelle extrahieren), msginit (neue .po erstellen), msgmerge (bestehende .po aktualisieren), msgfmt (zu .mo kompilieren) |
| Plattform | Beliebig - Linux, macOS, Windows, BSD; überall dort, wo GNU gettext oder eine kompatible libintl-Implementierung verfügbar ist |
| Ökosystem | Wird von WordPress, Drupal, GNOME, KDE, Python gettext, PHP gettext und vielen anderen Frameworks für die Internationalisierung (i18n) verwendet |
| Veröffentlicht | 1995 (GNU gettext) |
| Neueste Version | PO file syntax is stable; defined in the current GNU gettext manual |
| Offener Standard | Ja · lizenzgebührenfrei |
| Spezifikation | www.gnu.org |
PO-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu PO-Dateien.