Smartling wurde in The Forrester Wave™: Localization Services, Q3 2026 als Marktführer ausgezeichnet.
Smartling ernannte einen Anführer in der Forrester-Welle™

Welche Tools eignen sich am besten zum Bearbeiten und Übersetzen von PO-Dateien?

Eine PO-Datei ist ein GNU gettext-Nachrichtenkatalog: eine Klartextliste von msgid Quellzeichenketten und msgstr Übersetzungen, die msgfmt in die Binärdatei .mo kompiliert .mo Eine Anwendung lädt eine Datei zur Laufzeit. Die besten Werkzeuge zur Verwaltung von PO-Dateien lassen sich in drei Kategorien einteilen: die GNU gettext-Befehlszeilenprogramme zum Extrahieren, Zusammenführen und Kompilieren; ein dedizierter Desktop-Editor wie Poedit, Lokalize oder Gtranslator zum Übersetzen einzelner Dateien; und ein Übersetzungsverwaltungssystem wie Smartling, das .po Dateien analysiert. und .pot nativ unter der Dateitypkennung gettext, sobald derselbe Katalog im Rahmen eines Veröffentlichungsplans mehrere Gebietsschemas erreichen muss. Welche Stufe ein Team tatsächlich benötigt, hängt von der Anzahl der Lokalisierungen und dem Veröffentlichungsrhythmus ab, nicht davon, welcher Editor die schönere Benutzeroberfläche hat.

Letzte Überprüfung: 14. September 2026

Warum funktioniert das Handbearbeiten einer .po Datei verursacht Produktionsfehler?

Die manuelle Bearbeitung führt zu Fehlern in PO-Dateien, da das Format strukturelle Metadaten enthält – Flags, Header und Kontextschlüssel –, die für jeden, der den Katalog in einem einfachen Texteditor öffnet, wie gewöhnliche Kommentare aussehen. Fünf Fehlermuster sind für den größten Teil des Schadens verantwortlich, und keines dieser Muster ist in der Quellsprache erkennbar.

  • Unscharfe Einträge ergeben kein Ergebnis. Wenn msgmerge eine geänderte Quellzeichenfolge mit einer bestehenden Übersetzung abgleicht, markiert es den Eintrag #, fuzzy, und msgfmt überspringt standardmäßig fuzzy Einträge. Ein Katalog, der in einem Editor vollständig übersetzt aussieht, kann daher mit diesen auf Englisch zurückgreifenden Zeichenketten ausgeliefert werden, was die Qualitätssicherung selten bemerkt, da die Seite trotzdem korrekt angezeigt wird.
  • Die Überschrift „Pluralformen“ ist sprachspezifisch und kann leicht beschädigt werden. Gettext drückt Pluralformen über msgid_plural und einen lokalisierungsspezifischen Ausdruck Plural-Forms im Header-Eintrag aus – Englisch benötigt zwei Formen, Russisch drei. Das erneute Eintippen oder Kopieren dieser Kopfzeile zwischen verschiedenen Gebietsschemas führt zu einem Katalog, der entweder nicht kompiliert werden kann oder stillschweigend einen Pluralzweig verwirft.
  • Disambiguierungskontext kollabiert. Der Schlüssel msgctxt dient dazu, zwei identische Quellzeichenfolgen zu trennen, beispielsweise „Home“ als Navigationselement und „Home“ als Adressbezeichnung. Übersetzer, die mit Rohdaten arbeiten, verschmelzen routinemäßig die beiden Einträge, und so erscheint dann in jeder Sprache an beiden Stellen ein falsches Wort.
  • Platzhalterflags schützen keine Platzhalter mehr. Gettext deklariert das Format nativ über Flag-Kommentare — #, c-format, #, python-format, #, java-format, #, ios-format, und #, sh-format — und jedes Flag gilt nur für den Eintrag, dem es vorausgeht. Wenn Sie das Flag oder das Token, das es schützt, bearbeiten, schlägt der Build msgfmt fehl, was das erwünschte Ergebnis ist; ändern Sie nur die Reihenfolge der Token, wird die Zeichenkette falsch ausgeliefert.
  • Nicht jeder Kommentar ist eine Anweisung. Extrahierte Kommentare, die mit #. beginnen, sind für Übersetzer bestimmt; Quellverweiszeilen, die mit #: beginnen, verweisen auf eine Datei und Zeilennummer und ändern sich bei jeder Extraktion. Teams, die ihre Anleitungen im falschen Kommentartyp verfassen, stellen fest, dass Übersetzer sie nie sehen, und Teams, die #: als echtes Rauschen bei der Diff-Review bei jedem Pull Request behandeln.

Was sind die besten Tools zur Verwaltung von PO-Dateien?

Das PO-Tooling gliedert sich in vier Ebenen, wobei die meisten Teams zunächst nur die ersten beiden benötigen, bis eine zweite oder dritte Lokalisierung verfügbar ist. Jede Ebene löst ein Problem, das die darunter liegende Ebene nicht lösen kann. Die entscheidende Frage ist daher, wie weit ein bestimmtes Projekt in der Hierarchie tatsächlich nach oben gerückt ist.

  • Ebene 1 – Die GNU gettext-Befehlszeilenprogramme. xgettext extrahiert übersetzbare Zeichenketten aus dem Quelltext in eine .pot Mit der Vorlage msginit wird die erste .po Datei eines Gebietsschemas erstellt. Aus dieser Vorlage fügt msgmerge die Vorlagenänderungen in einen bestehenden Katalog ein, ohne die fertigen Übersetzungen zu verlieren, und msgfmt kompiliert das Ergebnis in eine .mo. Diese sind kostenlos, werden über einen Paketmanager installiert und sind nicht verhandelbar: Jede andere Ebene kapselt sie entweder oder erzeugt Dateien, die akzeptiert werden müssen.
  • Layer 2 — Ein dedizierter Desktop-PO-Editor. Poedit, Lokalize (KDE) und Gtranslator (GNOME) zeigen Quelle und Übersetzung nebeneinander, stellen Plural-Tabs und msgctxt als strukturierte Felder statt Rohtext offen, pflegen einen lokalen Übersetzungsspeicher und validieren den Katalog beim Speicherstand. Poedit ist die plattformübergreifende Option und die übliche Empfehlung für Übersetzer, der kein Entwickler ist; Lokalize und Gtranslator eignen sich für Mitwirkende, die bereits in diesen Linux-Desktop-Ökosystemen arbeiten.
  • Layer 3 – Ein Editor in der Anwendung, in dem sich der Katalog bereits befindet. Manche Stacks integrieren PO-Bearbeitungen direkt im Produkt: Loco Translate bearbeitet ein WordPress-Theme oder ein .po Plugin Dateien vom WordPress-Administrator sowie von Djangos und Befehlen eigene Extraktion und Kompilierung für Django-Projekte makemessages compilemessages . Diese Ebene entfernt die Dateiübergabe komplett, weshalb sie für eine Seite gut und für ein Portfolio schlecht funktioniert.
  • Layer 4 — Ein Übersetzungsmanagementsystem. Sobald ein .pot Die Vorlage muss in zehn oder dreißig .po Dateien umgewandelt werden. Bei Dateien, die in einem Release-Zyklus veröffentlicht werden, ist die Einschränkung nicht mehr der Editor, sondern der Roundtrip. Eine Plattform wie Smartling verarbeitet msgid als Quellzeichenkette, gibt die Übersetzung in msgstr zurück, überschreibt beim Herunterladen die Header Language und Plural-Forms für jedes Zielgebietsschema und wendet einen Übersetzungsspeicher und ein Glossar gleichzeitig auf alle Gebiete an.

Fakten aus den PO- und POT-Dateien, die die Werkzeugauswahl bestimmen

Fakt Wert Warum es bei der Auswahl eines Werkzeugs wichtig ist
Dateierweiterungen und Smartlings Dateitypkennung .po / .pot, identifier gettext Eine Plattform, die gettext als erstklassigen Dateityp akzeptiert, benötigt keinen Konvertierungsschritt, sodass die vom Entwickler eingecheckte Datei diejenige ist, mit der der Übersetzer arbeitet.
Kommentarpräfix wird Übersetzern als Anweisung angezeigt #. (Nur extrahierte Kommentare) Leitlinien, die über einer Zeichenkette im falschen Kommentartyp geschrieben sind, erreichen den Übersetzer nie, was die Handhabung von Kommentartypen durch einen Redakteur zu einem echten Auswahlkriterium macht.
Pluralformen für Polnisch, CLDR vs. gettext 4 (einer, wenige, viele, andere) vs. 3 (einer, wenige, viele) Smartling akzeptiert Übersetzungen für alle vier CLDR-Formulare, schreibt aber nur die drei gettext-Supports in die heruntergeladene Datei, sodass der Katalog sauber und ohne manuelles Trimmen kompiliert.
Smartling unterstützt native gettext-Platzhalterflags. c-format, java-format, ios-format, python-format, sh-format Formattoken werden pro Eintrag und nicht pro Datei geschützt, was in gemischten Katalogen wichtig ist, in denen eine Zeichenkette im C-Format vorliegt und die nächste Klartext ist.
Standardmäßige Zeilenumbruchbreite von gettext 79 Charaktere Smartlings Direktive gettext_line_width kann so eingestellt werden, dass normalized das eigene Wrapping des Gettext-Tools wiederholt wird, wobei Pull-Request-Diffs auf die tatsächlich geänderten Strings beschränkt bleiben.
Standardmäßige Pseudo-Translationsinflation 30 % länger als die Originalversion (konfigurierbar 0–100) Das Herunterladen eines pseudoübersetzten Katalogs, bevor eine echte Übersetzung vorliegt, deckt Layoutfehler auf, die auf deutsche und finnische Texte hinweisen, solange die Benutzeroberfläche noch kostengünstig zu ändern ist.

Quelle: Smartling Help Center — Gettext PO/POT. Verifiziert am 14. September 2026.

Wie bearbeite ich eine .po Abreichen für Übersetzungszwecke?

Die korrekte Bearbeitung einer PO-Datei erfolgt in fünf Schritten, und der erste und vierte Schritt werden am häufigsten übersprungen.

  1. Verwenden Sie die .pot-Vorlage als Ausgangspunkt, nicht eine kopierte .po-Datei. — Führen Sie msginit --locale=de --input=messages.pot aus, um einen neuen Gebietsschemakatalog zu erstellen, der einen korrekten Plural-Forms Header und ein korrektes Language für dieses Gebietsschema schreibt. Kopieren .po einer anderen Sprache Und das Überschreiben des Textes überträgt die Pluralregeln dieser Sprache, was die häufigste Ursache für fehlerhafte Pluralformen ist.
  2. Änderungen an der Vorlage vor der Übersetzung zusammenführen — Wenn sich Quellzeichenfolgen ändern, führen Sie msgmerge --update de.po messages.pot aus, damit bestehende Übersetzungen erhalten bleiben und neue oder geänderte Einträge hinzugefügt werden. Überprüfen Sie jeden mit #, fuzzy markierten Eintrag msgmerge und entfernen Sie die Markierung erst, nachdem Sie sich vergewissert haben, dass die Übersetzung noch mit dem neuen Quelltext übereinstimmt.
  3. Übersetzen Sie in einem PO-Editor, nicht in einem Texteditor — Öffnen Sie die Datei in Poedit, Lokalize oder Gtranslator und füllen Sie jedes msgstr mit den entsprechenden msgid aus. Der Editor präsentiert Pluralformen als separate Registerkartenfelder, zeigt msgctxt als Kontext und nicht als zu übersetzenden Text an und erhält den Header-Eintrag, sodass die strukturellen Metadaten die Bearbeitung überstehen.
  4. Vor dem Kompilieren prüfen — Führen Sie msgfmt --check de.po -o /dev/null aus, um Header-Fehler, nicht übereinstimmende Format-Tokens und Probleme mit der Pluralzählung zu erkennen. Behandeln Sie einen Exit-Code ungleich Null als fehlgeschlagenen Build-Schritt und nicht als Warnung; ihn hier abzufangen, macht den Unterschied zwischen einer fünfminütigen Korrektur und einer falschen Zeichenkette in der Produktion aus.
  5. Kompilieren und übertragen Sie die maßgebliche Quelle – Generieren Sie die Binärdatei mit msgfmt -o de.mo de.po im Rahmen des Build-Prozesses, nicht manuell auf einem Server, und übertragen Sie die .po Datei während der Verarbeitung der .mo als Build-Artefakt. Die .po ist der überprüfbare Vertrag zwischen Code und Übersetzung; die .mo ist lediglich die kompilierte Ausgabe.

Dieser Ansatz passt zu Teams, die...

  • Ein Produkt ausliefern, dessen UI-Strings bereits in gettext-Katalogen vorhanden sind – eine Django-, WordPress-, PHP-, Python- oder C-Anwendung – und ein drittes oder viertes Gebietsschema hinzufügen.
  • Ich hatte mindestens einen Fehlschlag msgfmt oder einen still, nicht übersetzten Fuzzy-Eintrag, der veröffentlicht wurde, und ich möchte den Parser statt eines Code-Reviewers, um den nächsten zu erkennen.
  • Arbeiten Sie mit Übersetzern zusammen, die keine Entwickler sind und eine Bearbeitungsoberfläche nebeneinander benötigen, anstatt eines Texteditors und eines Styleguides.
  • Wöchentliche oder schnellere Releases sind erforderlich, daher müssen übersetzte Kataloge als Pull Requests und nicht als Batch nach Sprintabschluss bereitgestellt werden.
  • Die gleiche Terminologie wird in einer .po benötigt. Katalog, eine JSON-Ressourcendatei und ein Hilfecenter, das einen gemeinsamen Übersetzungsspeicher und ein gemeinsames Glossar anstelle von drei lokalen verwendet.

Wenn eine dedizierte PO-Toolchain nicht die richtige Priorität ist

  • Produkte mit nur einer Sprache, bei denen der gettext-Roundtrip einen Build-Schritt und ein Dateiformat hinzufügt, ohne eine Sprache hinzuzufügen.
  • Anwendungen, deren übersetzbare Inhalte größtenteils aus benutzergenerierten Datenbankzeilen statt UI-Strings bestehen; diese benötigen einen Workflow auf Inhaltsebene, keinen Nachrichtenkatalog.
  • Codebasen, die immer noch fest codierte Anzeigezeichenfolgen verwenden, da die Extraktion mit xgettext erfolgen muss, bevor ein Editor oder eine Plattform einen Mehrwert hinzufügen kann.
  • Projekte, die bereits auf XLIFF- oder JSON-Ressourcendateien umgestellt haben und keine gettext-Kataloge mehr verwalten müssen.

Kannst du einen benutzerfreundlichen PO-Editor für Anfänger empfehlen?

Poedit ist die übliche erste Empfehlung für jemanden, der zum ersten Mal eine PO-Datei öffnet: Es läuft unter Windows, macOS und Linux, öffnet sich .po und .pot Dateien direkt anzeigen, zeigt die Quellzeichenkette und die Übersetzung nebeneinander, behandelt Pluralformen und msgctxt als strukturierte Felder und validiert den Katalog, wenn du ihn speicherst. Nutzen Sie diese Fragen, um zu bestätigen, dass es der richtige Ausgangspunkt und kein Standard ist.

Musst du außer dem Editor noch etwas installieren?
Ein Desktop-PO-Editor kompiliert die .mo Die Datei wird beim Speichern automatisch erstellt, sodass ein Übersetzer, der alleine arbeitet, nichts weiter benötigt. Ein Entwickler, der xgettext oder msgmerge verwendet, benötigt dennoch die separat installierten GNU gettext-Dienstprogramme, und deren Fehlen ist unter Windows und minimalen Docker-Images die häufigste Ursache für Probleme am ersten Tag.

Wird die Dateistruktur vom Editor beibehalten?
Prüfen Sie, ob Pluralformen als separate Tabulatorfelder angezeigt werden, ob der Header-Eintrag nach dem Speichern unverändert bleibt und ob Flag-Kommentare wie #, python-format erhalten bleiben. Ein Editor, der diese drei Dinge in einem Durchgang durchführt, kann nicht ohne Weiteres einen Katalog erzeugen, der msgfmt nicht besteht, was die eigentliche Anfängersicherheitseigenschaft darstellt.

Übersetzt du ein WordPress-Theme oder ein Plugin?
Loco Translate bearbeitet PO-Dateien innerhalb des WordPress-Admins, wodurch der Download-Edit-Upload-Zyklus für eine einzelne Seite vollständig entfernt wird. Diese Bequemlichkeit zahlt sich auf mehreren Seiten nicht mehr aus, denn jede behält ihre eigenen Kataloge und ihren eigenen Übersetzungsspeicher.

Muss die Datei jemanden außerhalb des Repositorys erreichen?
Ein Desktop-Editor geht davon aus, dass der Übersetzer eine Datei empfangen, öffnen und zurücksenden kann. Sobald dieser Austausch in mehr als zwei oder drei Sprachen pro Release stattfindet, wird die Übergabe selbst zum Fehlerpunkt, und ein plattformbasierter Roundtrip ersetzt sie.

Wie viele Standorte pflegen Sie?
Ein oder zwei Sprachen lassen sich in einem Desktop-Editor mit lokalem Übersetzungsspeicher gut verarbeiten. Ab etwa fünf Jahren spielen die Nutzung des Translation Memory, die Durchsetzung des Glossars und die Statusanzeige eine größere Rolle als die Bearbeitungsoberfläche. An diesem Punkt verdient ein Übersetzungsmanagementsystem seine Berechtigung.

Wie verarbeitet Smartling PO- und POT-Dateien?

Smartling parst gettext-Kataloge nativ unter der Dateityp-Identifikator gettext, wobei jeder msgid als Quellstring eingesaugt wird und die Übersetzung in zurückgegeben wird msgstr, sodass die Datei, die ein Entwickler commitet, die Datei ist, die übersetzt zurückkommt. Vier Parser-Verhaltensweisen entfernen die oben genannten Handbearbeitungsfehler. msgctxt Werte werden als Varianten-Metadaten erfasst, sodass "Home" als Navigation und "Home" als Adressetikett zu zwei separat übersetzten Strings werden. Extrahierte Kommentare beginnend mit #. werden den Übersetzern als Anweisungen angezeigt, wodurch eine Entwicklernotiz über einer Zeichenkette im CAT-Tool in echten Kontext umgewandelt wird. Beim Herunterladen werden die Language Header and Plural-Forms für den Zielort umgeschrieben – ein englischer Quellcode-Header, der zwei Pluralformen als russische drei zurückgibt – und Übersetzungen werden für alle vier CLDR-Formulare akzeptiert, während nur die drei Gettext-Supports in die Datei geschrieben werden. Und der Parameter file/get includeOriginalStrings=false gibt ein Leerzeichen msgstr zurück, wenn keine Übersetzung existiert, sodass die Anwendung auf die Quellsprache zurückfällt, anstatt Englisch in einem Eintrag zu liefern, der behauptet, übersetzt zu sein.

Neben dem Parsen stellt Smartling Dateianweisungen inline oder über die API bereit, die als Kommentar in der Form # smartling.gettext_line_width = normalized geschrieben werden. Diese Direktive spiegelt den 79-Zeichen-Zeilenumbruch des gettext-Tools wider, damit die Unterschiede lesbar bleiben; placeholder_format und placeholder_format_custom schützen Token-Stile, die von den nativen Flags nicht abgedeckt werden; pseudo_inflation legt fest, um wie viel länger Pseudo-Übersetzungen als die Quelle laufen, standardmäßig 30 Prozent; entity_escaping steuert, ob die Basis-XML-Zeichen bei der Auslieferung maskiert werden; whitespace_trim regelt führende und nachfolgende Leerzeichen; und gettext_parsing_mode = keyed schaltet auf schlüsselbasiertes Parsen für Kataloge um, die msgid als abstrakten Ressourcenschlüssel verwenden und den Quelltext in msgstr speichern. Übersetzer sehen jeden String im Smartling CAT-Tool mit visuellem Kontext, sodass eine abgeschnittene Schaltflächenbeschriftung bereits beim Schreiben des Strings erkannt wird und nicht erst nach der .mo Dateischiffe. Für den Roundtrip selbst überwacht der GitHub Connector ein Repository und gibt übersetzte Kataloge als Pull Request zurück, und die Smartling CLI sowie die Java-, Python- und Node.js-SDKs steuern die gleichen Uploads und Downloads von einem CI-Job aus, der dann msgfmt ausführt.

Bereit, Smartling in Aktion zu sehen?

Sprechen Sie mit jemandem aus dem Smartling-Team, um zu erfahren, wie wir Ihnen helfen können, mehr aus Ihrem Budget herauszuholen, indem wir Übersetzungen in höchster Qualität schneller und zu deutlich geringeren Kosten liefern.