Ich verwende einen Satz von .po
-Dateien, die vom System für die Übersetzung von Unternehmen generiert wurden (mit Pootle, falls das relevant ist). Ich habe Probleme beim Konvertieren dieser Dateien in .mo
(das binäre Gegenstück zu .po
-Dateien) mit dem msgfmt
-Dienstprogramm (mit dem -C
-Operator, der das Format der Datei überprüft), erhalte ich den folgenden Fehler :
Ich habe ziemlich ausführlich gegooglet, um mehr Informationen darüber zu erhalten, was msgfmt
genau diesen Fehler verursacht.
Ich habe auch versucht, die ersten paar Zeilen der Datei zu entfernen (die nicht zum Katalog gehören, sondern nur Kommentare oder leere Übersetzungszeichenfolgen).
Ich bin geneigt zu denken, dass es sich um ein Dateicodierungsproblem handelt, aber ich habe mich mit dieser Art von Sache nicht viel beschäftigt, also bin ich mehr als bereit zuzugeben, dass das ein Benutzerfehler ist.
Weiß jemand, wie ich den Fehler mit diesen Dateien genauer diagnostizieren kann? Außerdem wird das gleiche Verhalten in allen lokalisierten Dateien und nicht nur in einer bestimmten Datei angezeigt.
Ich vermute auch, dass es sich um ein Codierungsproblem handelt. Da der Fehler bereits in den ersten paar Zeichen der Datei auftritt, ist der Schuldige wahrscheinlich eine Byte-Reihenfolge-Marke , die in utf- 8 ist als die Bytefolge 0xEF, 0xBB, 0xBF codiert. Der beste Weg, dies zu überprüfen, wäre, die Datei mit einem Hex-Editor anzusehen oder einen Editor zu verwenden, der Ihnen sagen kann, ob die Datei eine Byte-Reihenfolge-Markierung enthält.
Zum Beispiel in vim können Sie set bomb?
verwenden und es wird Ihnen entweder bomb
oder nobomb
sagen.
Bearbeiten: Hier ist ein Blog-Eintrag von jemandem, der genau die gleiche Fehlermeldung hat wie eine utf-8-kodierte Datei, die mit einer Byte-Reihenfolge beginnt.
Tags und Links localization gettext pootle