Übersetzung, eigenes QObject [gelöst]

Alles rund um die Programmierung mit Qt
Antworten
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Übersetzung, eigenes QObject [gelöst]

Beitrag von Strahlex »

Hallo,
meine Anwendung hat ein QMainWindow, von diesem und von einigen Dialogen muss ich auf eine von QObject abgeleitete Klasse (in einer anderen Quelldatei) zugreifen, genauer gesagt rufe ich eine statische Funktion auf, in dieser wird eine StringList mit einigen tr's erzeugt.
Das Problem ist, das Übersetzten funktioniert leider nicht. Was mache ich falsch?
Zuletzt geändert von Strahlex am 23. April 2009 23:47, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

arg wenig code, oder?
wenn das ein statische methode ist, kann es doch sein, dass die von dem QObject, von dem die klasse erbt, recht weig mitkriegt, oder?

ersetz in der methode dann doch einfach mal das tr() durch QObject::tr().
geht das dann?

ansonsten bleibt uns nur raten... ;)
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Funktioniert leider nicht nicht.
Hier ist ein bisschen CODE:

Code: Alles auswählen

QStringList globals::languageList()
{
    QStringList languages;
    languages       << tr("Arabic")     + ";sa;ar"
                    << tr("Chinese")    + ";cn;zh;"
                    << tr("Croatian")  + ";hr;hr;"
                    ...
                    << tr("Vietnamese") + ";vn;vi";
    return languages;
}

Code: Alles auswählen

class globals : public QObject
{
    public:
    globals();
    static QStringList languageList();
};
Das ganze binde ich dann ins MainWindow ein und rufe es per

Code: Alles auswählen

globals:::languageList()
auf.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Übersetzt und den Translator geladen hast Du aber schon??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Natürlich, habe einen dynamischen Sprachwechsel eingebaut, vielleicht hats damit etwas zu tun. Die zur Laufzeit erstellten Widgets muss ich ja mit der retranslateUI() übersetzen.
Aber eigentlich sollte es ja funktionieren, die Stringlist wird ja bei jeden Aufruf der Funktion neu erstellt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dann bitte ein kleines Beispielproggie. tr() übersetzt immer zur Aufrufzeit (kein Caching oder ähnliches) - d.h. wenn der Translator richtig geladen wurde und die Texte auch übersetzt wurden kommt auch das richtige raus.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Hab die Lösung gefunden:
Man muss dieses Qt Makro einbinden: Q_DECLARE_TR_FUNCTIONS()
Antworten