[solved] Namespace von Qt-Makro tr() für Translations

Alles rund um die Programmierung mit Qt
Antworten
AlGaN
Beiträge: 25
Registriert: 25. März 2006 12:45

[solved] Namespace von Qt-Makro tr() für Translations

Beitrag von AlGaN »

Hallo,

ich habe in meinem Projekt für die einzelnen Module endlich Namespaces eingeführt aufgrund von Namenskollisionen. Die Klassen eines Moduls folgen in etwa diesem Muster

Code: Alles auswählen


#include <QMainWindow>

namespace SubModul1
{
    class HelperClass1;
}

namespace SubModul2
{
    class HelperClass2;
}

namespace ViewerUI
{
    class MainWindow : public QMainWindow
    {
    public:
        MainWindow(int argc, char* argv[]);
        
        void setHelperClass(const SubModul1::HelperClass1* hc);
    [...]
    private:
        const SubModul1::HelperClass1* mHelperClass;
    };
}
MainWindow.cpp:

Code: Alles auswählen

#include "MainWindow.hpp"
#include "HelperClass1.hpp"

namespace ViewerrUI
{
    using SubModul1::HelperClass1;

    MainWindow::MainWindow(int argc, char* argv[])
        : QMainWindow(argc, argv)
    {
        [...]
        // install translator
        QTranslator* t = new QTranslator(this);
        t->read(":/Viewer_de" // load german translation
        installTranslator(t);
        [...]
    }

    void MainWindow::setHelperClass(const HelperClass1* hc)
    {
        mHelperClass = hc;
        QString text = tr("Helper Class added");
    }
    [...]
}
Jetzt habe ich das Problem, dass jedes Mal die englische Strings ausgegeben werden, die tr()-Makros also keine Übersetzung bewirken, obwohl ich ja im Konstruktor den Translator installiere. Ich vermute, dass das makro in einem anderen Namensraum ist als dem meinigen, aber ich weiß nicht in welchem? Gibt es einen globalen "Qt"-Namensraum?

Danke für alle Hinweise,
AlGaN

Edit: Gerade habe ich in der Qt-Doku gelesen, dass es sowas wie einen Translation Context gibt, was ich aber nicht verstehe. Welchen Kontext soll denn das tr()-Makro haben, ich dachte, das wird von jeder von QObject abgeleiteten Klasse vererbt?

Edit2: Ok, Problem gelöst, ein nochmaliges Ausführen von lupdate hat die unter neuem Translation Context stehenden Strings eingesammelt :)
Antworten