tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
930
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    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!
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Ich weiß, dass das nicht erlaubt ist, aber weiß wirklich niemand irgend etwas?
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    daersc Tutorials.de Gastzugang
    Ich habe das gleiche Problem.
    Ich bekomme es nicht hin, dass das Projekt automatisch durchsucht wird - dank dieser Fehlermeldung...
     

  4. #4
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    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...
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    
    // Ä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
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  7. #7
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    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ß
    Geändert von deepthroat (29.07.10 um 22:26 Uhr)
    ComFreek bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  8. #8
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Zitat Zitat von deepthroat Beitrag anzeigen
    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
    Geändert von ComFreek (30.07.10 um 11:03 Uhr)
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    Hi.
    Zitat Zitat von ComFreek Beitrag anzeigen
    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.
    Zitat Zitat von ComFreek Beitrag anzeigen
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  10. #10
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Zitat Zitat von deepthroat Beitrag anzeigen
    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?
    Zitat Zitat von deepthroat Beitrag anzeigen
    Laut ISO 3166 bestehen Ländercodes aus Großbuchstaben.
    Naja, dann ändere ich es.

    Zitat Zitat von deepthroat Beitrag anzeigen
    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?
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  11. #11
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    Zitat Zitat von ComFreek Beitrag anzeigen
    Wie meinst du das?
    Im Quelltext verwendest du doch eine bestimmte Sprache. Normalerweise Englisch.

    Nicht-lokalisierter Quelltext:
    Code cpp:
    1
    2
    3
    
    int main() {
      printf("hello, world");
    }
    Mit gettext:
    Code cpp:
    1
    2
    3
    
    int main() {
      printf(_("hello, world"));
    }
    D.h. die Sprache im Code ist immer noch Englisch und wenn du keine Übersetzungstexte erstellst, bzw. die C Locale verwendest, dann werden die Texte aus dem Quelltext verwendet und es findet keine Übersetzung statt.

    Zitat Zitat von ComFreek Beitrag anzeigen
    Ich benutze als IDE Code::Blocks und als Compiler MinGW. Gibt es bei denen eine Funktion oder Einstellung dafür?
    Nein. Du könntest z.B. bakefile verwenden (welches ursprünglich für die Benutzung mit wxWidgets entwickelt wurde), das kann z.B. Makefiles für MinGW generieren. Diese kannst du dann z.B. mit Code::Blocks verwenden.

    Schau dir am besten mal ein wxWidget Projekt an, wie das da gemacht wird - kein Grund sich alles von Grund auf neu auszudenken.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  12. #12
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Danke für deine Antwort.


    1.) Ich dachte, man sollte Kürzel verwenden (z.B. "txt_welcome"). Dann funktioniert das eben nicht. Aber ich will auch nicht ganze Sätze schreiben.

    2.) Ja, es gibt sogar ein Beispiel. Da ist die Ordnerstruktur folgende:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    internat
    |
    --de
       |--internat.mo
       |--internat.po
    --fr
       |--internat.mo
       |--internat.po
    Aber im Prinzip ist es doch egal, oder? Solange die Dateien von wxWidgets gefunden werden.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  13. #13
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    7.983
    Zitat Zitat von ComFreek Beitrag anzeigen
    1.) Ich dachte, man sollte Kürzel verwenden (z.B. "txt_welcome").
    Das ist gerade der Vorteil von gettext, das man genau das nicht macht. Wer weiß denn schon was txt_welcome bedeutet wenn er auf den Code schaut?!

    Außerdem wäre das ziemlich fatal wenn die Übersetzungen nicht gefunden werden. Die Texte bleiben im Programm!
    Zitat Zitat von ComFreek Beitrag anzeigen
    Aber im Prinzip ist es doch egal, oder? Solange die Dateien von wxWidgets gefunden werden.
    Ja.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  14. #14
    Avatar von ComFreek
    ComFreek ComFreek ist offline [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.206
    Blog-Einträge
    3
    Zitat Zitat von deepthroat
    Das ist gerade der Vorteil von gettext, das man genau das nicht macht. Wer weiß denn schon was txt_welcome bedeutet wenn er auf den Code schaut?!
    Achso, ok, dann werde ich das so machen.

    Vielen Dank für die Hilfe


    [ERLEDIGT] (es gibt ja kein Button mehr dafür...)
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

Ähnliche Themen

  1. XSLT und gettext?
    Von MS47475 im Forum XML Technologien
    Antworten: 6
    Letzter Beitrag: 19.09.07, 08:38
  2. getText und setText
    Von chrisjahl im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 15
    Letzter Beitrag: 17.06.07, 23:42
  3. problem bei gettext
    Von xyba im Forum PHP
    Antworten: 2
    Letzter Beitrag: 27.01.06, 01:07
  4. gettext putenv()
    Von südpol im Forum PHP
    Antworten: 2
    Letzter Beitrag: 24.12.04, 11:33
  5. GNU gettext Problem
    Von at0m1c im Forum PHP
    Antworten: 0
    Letzter Beitrag: 16.08.04, 00:15

Stichworte