[solved] Namespace von Qt-Makro tr() für Translations
Verfasst: 20. Januar 2010 16:50
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
MainWindow.cpp:
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
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;
};
}
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");
}
[...]
}
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