msgmerge kommt nicht mit UTF-8 klar?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Hallo alle zusammen!

Ich bin gerade dabei ein wenig mit gettext und entsprechenden Tools zu spielen.

Dabei bekomme ich nun ein paar Fehlermeldungen beim ausführen von `msgmerge`, um die *.po Dateien zu aktualisieren.

Code: Alles auswählen

processing language en
processing language de
errors happened while running msgmerge
/home/EnTeQuAk/development/webshox-svn/globby/trunk/globby/cli/locale/de/LC_MESSAGES/globby.po:49:12: ungültige Multibyte-Sequenz
(die fehlermeldung trifft öfters in der Datei auf)

So. An der besagten Stelle in der Datei steht ein `ß`:

Code: Alles auswählen

"Eingabe außer \"j\" abbricht)"
In den anderen Stellen, die er anmeckert stehen dann `ö` und `ü` usw.

Im Header der Datei steht folgendes:

Code: Alles auswählen

msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-07-07 12:22+0200\n"
"PO-Revision-Date: 2007-07-07 11:55+0100\n"
"Last-Translator: Christopher Grebs <chrissiG@gmx.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
Und die Datei wurde eigentlich auch mit gVim aus utf-8 abgespeichert.

Warum bekomme ich dann diese Fehlermeldung?

Weißt jemand rat?

MfG EnTeQuAk
lunar

EnTeQuAk hat geschrieben:Und die Datei wurde eigentlich auch mit gVim aus utf-8 abgespeichert.
Das solltest du vielleicht mal mittels file überprüfen...
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Ohh verdammt, der Tipp war gut ;)

Die Datei wurde ursprünglich von `xgettext` in utf-8 gespeichert. Und dann muss anscheinend `msguniq` die codierung nach iso-8859-1 geändert haben.

Dadurch hat dann irgentwie `msgmerge` probleme... komisch ;) Jedenfalls habe ich jetzt noch in meine build-scripte ne Passage eingebastelt, die die Dateien 100%ig nach UTF-8 konvertiert. :)

Danke für den Tipp!

MfG EnTeQuAk
lunar

EnTeQuAk hat geschrieben:Die Datei wurde ursprünglich von `xgettext` in utf-8 gespeichert. Und dann muss anscheinend `msguniq` die codierung nach iso-8859-1 geändert haben.
Wozu brauchst du denn msguniq? Wenn du xgettext alle Quelldateien auf einmal übergibst, gibt es keine doppelten Einträge im Template Katalog.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

lunar hat geschrieben:
EnTeQuAk hat geschrieben:Die Datei wurde ursprünglich von `xgettext` in utf-8 gespeichert. Und dann muss anscheinend `msguniq` die codierung nach iso-8859-1 geändert haben.
Wozu brauchst du denn msguniq? Wenn du xgettext alle Quelldateien auf einmal übergibst, gibt es keine doppelten Einträge im Template Katalog.
Das ist es ja. Zur Zeit ist es nicht ganz möglich, xgettext alle Quelldateien auf einmal zu übergeben, da es einfach Dateien gibt, die dieses bestimmte Script, welches das CLI übersetzt (bzw. die entsprechenden dateien generiert) nicht sehen darf, da die zur GUI gehören ;)

Mal schaun ;)


Wie is denn das eigentlich: Gibts die Tools auch für Windows? (gettext, msguniq, xgettext etc.)

MfG EnTeQuAk
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

EnTeQuAk hat geschrieben:Wie is denn das eigentlich: Gibts die Tools auch für Windows? (gettext, msguniq, xgettext etc.)
Hallo EnTeQuAk!

Vielleicht findest du hier eine Anregung oder einen interessanten Link: http://gelb.bcom.at/trac/misc/wiki/Tuto ... -bersetzer

mfg
Gerold
:-)

PS: Mit PoEdit kannst du übersetzte Strings in einer Datenbank halten. Damit lassen sich neue Projekte schon fast automatisch übersetzen.
Zuletzt geändert von gerold am Samstag 7. Juli 2007, 14:28, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
lunar

EnTeQuAk hat geschrieben:Zur Zeit ist es nicht ganz möglich, xgettext alle Quelldateien auf einmal zu übergeben, da es einfach Dateien gibt, die dieses bestimmte Script, welches das CLI übersetzt (bzw. die entsprechenden dateien generiert) nicht sehen darf, da die zur GUI gehören ;)
Verstehe ich nicht. Du kannst doch einfach alle CLI Dateien geschlossen an xgettext übergeben, oder? Wenn du später msguniq verwendest, um aus GUI und CLI einen Katalog zu erzeugen, kannst du auch gleich einen einheitlichen Template Katalog erzeugen.

Wie is denn das eigentlich: Gibts die Tools auch für Windows? (gettext, msguniq, xgettext etc.)
Zumindest müsste es laut Dokumentation pygettext.py und msgfmt.py in CPython geben. Ich habe die allerdings noch nie verwendet, ich schreibe Linux-only Anwendungen ;)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

lunar hat geschrieben:Zumindest müsste es laut Dokumentation pygettext.py und msgfmt.py in CPython geben. Ich habe die allerdings noch nie verwendet, ich schreibe Linux-only Anwendungen ;)
Hallo lunar!

Aus dem Docstring von pygettext.py:
There's one problem though; xgettext is the program that scans source code
looking for message strings, but it groks only C (or C++). Python
introduces a few wrinkles, such as dual quoting characters, triple quoted
strings, and raw strings. xgettext understands none of this.

Enter pygettext, which uses Python's standard tokenize module to scan
Python source code, generating .pot files identical to what GNU xgettext[2]
generates for C and C++ code. From there, the standard GNU tools can be
used.
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

lunar hat geschrieben:
Verstehe ich nicht. Du kannst doch einfach alle CLI Dateien geschlossen an xgettext übergeben, oder? Wenn du später msguniq verwendest, um aus GUI und CLI einen Katalog zu erzeugen, kannst du auch gleich einen einheitlichen Template Katalog erzeugen.
Nein. GUI und CLI werden getrennt von einander übersetzt. Und es gibt nicht nur einen Ordner 'cli', den man alleine angeben könnte.
Es gibt noch einen allgemeinen libary Ordner und eine startdatei, welche ebenfalls übersetzt werden sollen.

Jedoch ergibt sich für mich ja keine Einschränkungen durch die Nutzung von msguniq, von daher kanns erstmal so bleiben.

@gerold:

Danke, der Link war interessant. Für Übersetzer habe ich schon vorgesorgt.
Die brauchen nur noch im 'locale' Ordner den Ordner der Sprache (z.B. 'de') erstellen und ein beherztes `make il8n-cli` im root-ordner eingeben. Damit wird alles automatisch erstmals erstellt.

Im Sprachordner gibts dann 'de', vom Benutzer erstellt, darin 'LC_MESSAGES' und 'globby.po', automatisch erstellt.
die .po Datei ist dann seine Aufgabe (wie er das letzendlich macht, ist sein problem. poEdit ist da jedenfalls sehr schick ;) )

Wenn er fertig ist, noch einmal `make il8n-cli` und fertig ist die Übersetzung. Ich denke, das sollte für jeden machbar sein. Viel zum eingeben is ja nicht.
(es gibt auch ein Script, welches das ausführt, für die Benutzer, die nur nen Doppelklick machen möchten)

Allerdings stimmt das, was im __doc__ String drinne steht nicht ganz. xgettext hat einen Python modus, über `-L Python`. Ich denke, damit wird es dann doch mit den oben genannten Problemen klar kommen, oder?
lunar hat geschrieben: Zumindest müsste es laut Dokumentation pygettext.py und msgfmt.py in CPython geben. Ich habe die allerdings noch nie verwendet, ich schreibe Linux-only Anwendungen
Man machst du dir das leicht *grinz*


Danke nochmal an euch!

MfG EnTeQuAk
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Zumindest müsste es laut Dokumentation pygettext.py und msgfmt.py in CPython geben. Ich habe die allerdings noch nie verwendet, ich schreibe Linux-only Anwendungen ;)
Gibts auch, funktionieren auch => Alles klar, kann man so nutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten