Problem mit Gettext, PoEdit

ComFreek

Mod | @comfreek
Moderator
Hallo an alle,

habe mal wider ein Problem. Ich habe vor eine Software in C++ mit wxWidgets zu entwickeln (das steht fest!). Doch ich will von Anfang an, dass das Programm mehrsprachig ist, denn später den ganzen Code ändern, ist so eine Sache.

wxWidgets unterstützt gettext. Im Buch zu wxWidgets steht, man könnte das Programm "PoEdit" zu Vereinfachung der Übersetzung benutzen.
Doch immer tritt ein (derselbe immer) Fehler in PoEdit auf, wenn ich versuche einen neuen Katalog zu erstellen. Im Anhang ist die Fehlermeldung.

Ich habe diese Schritte gemacht:
  • PoEdit gestartet
  • Menü->Datei->Neuer Katalog
  • Name, Übersetzerteam...eintragen
  • Beim Reiter Pfade, habe ich das Hauptverzeichnis des Projektes angegeben
  • [OK] geklickt
  • "default.po" im folgenden Ordner gespeichert: [ProjektPfad]\locale\de_DE\LC_MESSAGES\default.po
  • ==>FEHLERMELDUNG

Ich hoffe jemand kennt sich mit PoEdit aus und kann mir helfen. Ich bin auch für andere Möglichkeiten zur Internationalisierung offen.
Vielen Dank im Voraus!
 
Ich habe das gleiche Problem.
Ich bekomme es nicht hin, dass das Projekt automatisch durchsucht wird - dank dieser Fehlermeldung...
 
Zum Glück bin ich nicht der Einzige!
Ich habe noch in einem anderen Forum diese Frage gestellt.
Unter anderem hat der "eine" mir diesen Link gegeben (auch auf Englisch): Click!

Da steht, dass man zuerst mit xgettext eine *.pot-Datei erzeugen soll, doch nichtmal das kriege ich hin...
 
Hi.

Wenn du eine .pot (ein .po Template) erzeugt hast, dann müßtest du einen neuen Katalog über "neuen Katalog aus POT Datei" erzeugen können.

Wie ist denn die Fehlermeldung? Es gibt wohl keine Anhänge mehr?

Übrigens speichert man die po Dateien üblicherweise einfach nur in [ProjektPfad]/po - die Ordnerstruktur mit de-de/LC_MESSAGES etc. wird dann später generiert und dann zur Laufzeit verwendet.

Gruß
 
Erstmal Danke für deine Antwort deepthroat!
Doch wie erzeuge ich eine *.pot-Datei?
Ich bekomme keine Fehler, aber auch keine *.pot-Datei.
Folgendes habe ich probiert:
Code:
// Ändern des aktuellen Verzeichnisses
cd C:\...\TestProject 

xgettext -d TestProject -s --keyword=_ -p ./po -o TestProject.pot main.cpp fMain.cpp 

// Das funktioniert auch nicht

xgettext -d C:\...\TestProject\TestProject -s --keyword=_ -p ./po -o C:\...\TestProject\TestProject.pot main.cpp fMain.cpp
 
Hi.

Hast du denn in deinem Quelltext das Makro _ überhaupt verwendet?

/edit: es wäre evtl. auch nicht verkehrt wenn du einfach nochmal die Fehlermeldung postest.

Gruß
 
Zuletzt bearbeitet:
Hast du denn in deinem Quelltext das Makro _ überhaupt verwendet?
Das ist die Lösung! Jetzt klappt alles hervorragend!

Aber ich habe noch eine Frage zu der Ordnerstruktur: soll die so aussehen:?

  • C:\
    • TestProjekt\
      • main.cpp
      • fMain.cpp
      • po\
        • TestProjekt.pot
        • de_de.po
        • en_us.po

Und später, wenn ich mein Programm veröffentlichen will, wie muss ich dann die Ordnerstruktur genau anpassen?

EDIT: Danke-Button für deepthroat gedrückt ;)
 
Zuletzt bearbeitet:
Hi.
Aber ich habe noch eine Frage zu der Ordnerstruktur: soll die so aussehen:?

  • C:\
    • TestProjekt\
      • main.cpp
      • fMain.cpp
      • po\
        • TestProjekt.pot
        • de_de.po
        • en_us.po
Ja. Wobei du allerdings direkt eine Sprache in der Anwendung verwendest, meist ist das ja en_US, da brauchst du dafür natürlich keine .po Datei.

Laut ISO 3166 bestehen Ländercodes aus Großbuchstaben.
Und später, wenn ich mein Programm veröffentlichen will, wie muss ich dann die Ordnerstruktur genau anpassen?
Das willst du doch nicht per Hand machen, oder?! Verwende z.B. bakefile, CMake oder ähnliches. Schau dir doch einfach mal ein Projekt (z.B. Poedit an).

Die .po Dateien werden zu .mo Dateien kompiliert und dann üblicherweise unter /usr/share/locale/<LocaleName>/LC_MESSAGE/<Anwendung>.mo (bei Linux Systemen) bzw. neben die Anwendung in <AnwendungsOrdner>/share/locale/<LocaleName>/LC_MESSAGES/<Anwendung>.mo installiert.

Gruß
 
Wobei du allerdings direkt eine Sprache in der Anwendung verwendest, meist ist das ja en_US, da brauchst du dafür natürlich keine .po Datei.
Wie meinst du das?
Laut ISO 3166 bestehen Ländercodes aus Großbuchstaben.
Naja, dann ändere ich es.

Das willst du doch nicht per Hand machen, oder?! Verwende z.B. bakefile, CMake oder ähnliches.
Ich benutze als IDE Code::Blocks und als Compiler MinGW. Gibt es bei denen eine Funktion oder Einstellung dafür?
 
Zurück