wxWidgets und Mehrsprachigkeit



  • Hallo,
    ich versuche im moment Testweise dem Standardprojekt unter KDevelop Mehrsprachigkeit bei zu bringen. Leider scheitert dies und ich weiß nicht warum.
    Ich hab der Applikationsklasse eine wxLocale Variable hinzugefügt

    private:
        wxLocale m_locale;
    

    anschließend rufe ich die Init Funktion der wxLocale Klasse in der OnInit Funktion der Applikationsklasse auf

    if (m_locale.Init(wxLANGUAGE_GERMAN, wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING)) {
        m_locale.AddCatalogLookupPathPrefix(wxT("/home/guenni/Projekte/wxLocaleTestApp/po/"));
        m_locale.AddCatalog(wxT("wxLocaleTestApp"));
    }
    

    .
    Die Sprachdatei für Deutsch liegt in dem Ordner

    /home/guenni/Projekte/wxLocaleTestApp/po/de/

    Leider bleibt die Applikation nach wie vor in Englisch und erscheint nicht mit deutschem Text.
    Hat jemand ne idee an was dies liegen könnte?



  • Oh je, ich hab mich vor kurzem auch durch die Internationalisierung kämpfen müssen.

    Also, versuch mal folgendes:
    Mach vor dem Init() ein delete auf die WxLocale.

    Dann ruf nach deiner Init() Methode GetString() von wxLocale auf, und schau nach, ob er die Wörter überhaupt im Katalog findet. Vorher Rückgabewert von AddCatalog prüfen.

    Dann ist es ganz wichtig, nach AddCatalog, die grafische Oberfläche neu aufzubauen!
    Du musst alle Labels und Menüs nochmal neu erzeugen. Dann schaut wxW selbst nach, ob bei einem Labelstring der mit_() gekennzeichnet ist, eine Übersetzung vorhanden ist!

    Schau mal in dem wxWidgets Buch: "Cross-Platform GUI Programming with wxWidgets" nach.(openBook) Dort ist's erklärt.

    Mfg



  • Firewall schrieb:

    Schau mal in dem wxWidgets Buch: "Cross-Platform GUI Programming with wxWidgets" nach.(openBook) Dort ist's erklärt.

    Drei mal darfst du raten wo ich das Beispiel her hab. Habs zwar nicht ganz übernommen, aber eigentlich sollte es funktionieren. Werd das Beispiel aber mal komplett übernehmen und schauen was dann passiert.



  • Hast du es mittlerweile hinbekommen?



  • Firewall schrieb:

    Hast du es mittlerweile hinbekommen?

    Nein, bin gestern nicht mehr zum testen gekommen. Sobald ich es aber versucht habe werd ich hier nochmals das ergebnis posten.


  • Mod

    Hm, würde dir auch empfehlen das Beispiel unter samples/locale dir anzusehen, das ist nochmal etwas anders in der Umsetzung.



  • phlox81 schrieb:

    Hm, würde dir auch empfehlen das Beispiel unter samples/locale dir anzusehen, das ist nochmal etwas anders in der Umsetzung.

    OK, werds mir anschauen. Kann aber noch bis WE dauern da ich momentan was dringenderes habe. Wie schon gesagt geb ich bescheid wenn ich es versucht habe. Denke das ich spätestens am WE dazu kommen.



  • phlox81 schrieb:

    Hm, würde dir auch empfehlen das Beispiel unter samples/locale dir anzusehen, das ist nochmal etwas anders in der Umsetzung.

    Das Beispiel ist sehr gut! Anhand dieses Beispiels hab ich es auch hinbekommen.



  • OK, ich hab das problem gefunden.
    Und zwar liegt das problem an der if Abfrage.

    if (m_locale.Init(wxLANGUAGE_GERMAN, wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING)) {
    

    Nach dem ich diese entfernt hatte ging es problem los.
    Normalerweise hätte mir die Init Funktion doch aber eine true nach erfolgreichem initialisieren zurückgeben sollen. Dies scheint aber nicht zu passieren.


Anmelden zum Antworten