[gelöst] QFileDialog übersetzen
[gelöst] QFileDialog übersetzen
Hallo, ich habe folgendes Problem:
Ich möchte mein QFileDialog übersetzen:
Soweit auch kein Problem, da ich die Beschriftung im Dialog an sich selbst setzen kann.
Jetzt ist es aber so, dass wenn ich den QFileDialog zum speichern einer Datei benutze, die bereits existert, bekomme ich nen neuen Dialog auf, der mich fragt, ob ich die Datei ersetzen möchte. Und genau diesen Dialog, der da aufgeht, den möchte ich übersetzen/Text ändern. Gibt es dort eine Möglichkeit für?
Lieben Gruß!
Ich möchte mein QFileDialog übersetzen:
Soweit auch kein Problem, da ich die Beschriftung im Dialog an sich selbst setzen kann.
Jetzt ist es aber so, dass wenn ich den QFileDialog zum speichern einer Datei benutze, die bereits existert, bekomme ich nen neuen Dialog auf, der mich fragt, ob ich die Datei ersetzen möchte. Und genau diesen Dialog, der da aufgeht, den möchte ich übersetzen/Text ändern. Gibt es dort eine Möglichkeit für?
Lieben Gruß!
Zuletzt geändert von Tom_Tom am 20. Mai 2009 11:48, insgesamt 1-mal geändert.
Du sollst das ja auch nicht selber übersetzen! Die Übersetzungen existieren schon von Qt-Seite.
qt_de ist die, welche du einfach laden musst! Dann sollten alle qt-eigenen Strings (und dazu gehört der Löschen-Dialog) übersetzt werden.
// edit:
Hier mal das was ich schnell in der python-Console getestet hab. Funktioniert gar prächtelig!
Code: Alles auswählen
$ ls /usr/share/qt4/translations/ | grep qt_
qt_ar.qm
qt_de.qm
qt_es.qm
qt_fr.qm
qt_help_de.qm
qt_help_pl.qm
qt_help_zh_CN.qm
qt_help_zh_TW.qm
qt_iw.qm
qt_ja_JP.qm
qt_pl.qm
qt_pt.qm
qt_ru.qm
qt_sk.qm
qt_sv.qm
qt_uk.qm
qt_zh_CN.qm
qt_zh_TW.qm
// edit:
Hier mal das was ich schnell in der python-Console getestet hab. Funktioniert gar prächtelig!
Code: Alles auswählen
>>> from PyQt4.Qt import *
>>> import sys
>>> app = QApplication(sys.argv)
>>> dlg = QFileDialog()
>>> trans = QTranslator()
>>> trans.load("qt_de", QLibraryInfo.location(QLibraryInfo.TranslationsPath))
True
>>> app.installTranslator(trans)
>>> dlg.show()Ok. danke für die Hilfe. Es funktioniert an sich auch.
Aber jetzt kommt das nächste Problem.
Was mache ich, wenn ich noch eine eigene Übersetzungsdatei einbinden möchte?
Ich kann ja keine 2 Übersetzungsdateien laden... oder?
Aber jetzt kommt das nächste Problem.
Was mache ich, wenn ich noch eine eigene Übersetzungsdatei einbinden möchte?
Code: Alles auswählen
if(this->translator.load(QApplication::applicationDirPath() + "/language/de")) {
app->installTranslator(&translator);
this->ui.retranslateUi(this);
}
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Wozu gibt es Dokus? --> http://doc.trolltech.com/4.4/qtranslator.html
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
void QCoreApplication::installTranslator ( QTranslator * translationFile ) [static]
Adds the translation file translationFile to the list of translation files to be used for translations.
Multiple translation files can be installed. Translations are searched for in the last installed translation file on, back to the first installed translation file. The search stops as soon as a matching translation is found.
Installing or removing a QTranslator, or changing an installed QTranslator generates a LanguageChange event for the QCoreApplication instance. A QApplication instance will propagate the event to all toplevel windows, where a reimplementation of changeEvent can re-translate the user interface by passing user-visible strings via the tr() function to the respective property setters. User-interface classes generated by Qt Designer provide a retranslateUi() function that can be called.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Wie franzf gezeigt hat ist dies wohl nicht immer der FallTom_Tom hat geschrieben:@Christian81 <- deine Antwort ist unbrauchbar, da dort nichts zu meiner Fragestellung drin steht. Außerdem glaube ich, dass jeder Forum-User erst einmal die Doku liest und sich hier nur meldet, wenn er dort nicht fündig wurde und daher Hilfe benötigt.
Wenn ich schon einen Link auf die Doku poste hat dies meistens einen Sinn... das es in diesem Fall nicht genau auf die Stelle gezeigt hat wo die Info stand... naja - aus dem Kindergarten sind wir ja raus.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Dann hilft es nicht, musst dein Programm mal auf der Console starten, dann sollten Meldungen kommen, was alles falsch läuft.
Insbesondere lass dir ausgeben (per qDebug()) ob das Laden der Übersetzung erfolgreich war.
Des weiteren kannst du uns mal mehr Infos posten, wann die Übersetzungen geladen werden. Incl. betreffendem Code.
Insbesondere lass dir ausgeben (per qDebug()) ob das Laden der Übersetzung erfolgreich war.
Des weiteren kannst du uns mal mehr Infos posten, wann die Übersetzungen geladen werden. Incl. betreffendem Code.
Folgendermaßen sieht der Code aus.
Und er lädt mir ja auch meine Sprachdateien. Das funktioniert ja auch alles.
Allerdings kann ich nur eine Übersetzung durchführen. Also entweder ich verwende die von Qt, dass ich meine Dialog übersetzt habe
oder aber ich verwende meine eigene, die mir alles Andere übersetzt.
Wäre cool, wenn du da irgendwie eine Lösung wüsstest.
Code: Alles auswählen
void Hauptfenster::on_actionLanguageGerman_triggered() {
if(this->translator.load(QApplication::applicationDirPath() + "/language/de")) {
QTranslator x; //habe ich zum testen hinzugefügt
x.load(QApplication::applicationDirPath() + "/language/qt_de");
app->installTranslator(&translator);
app->installTranslator(&x);
this->ui.retranslateUi(this);
}
else {
QMessageBox * messageBox = new QMessageBox(QMessageBox::Critical,this->windowTitle(), "Language-File not found. Programm will be closed");
messageBox->exec();
}
}
Allerdings kann ich nur eine Übersetzung durchführen. Also entweder ich verwende die von Qt, dass ich meine Dialog übersetzt habe
oder aber ich verwende meine eigene, die mir alles Andere übersetzt.
Wäre cool, wenn du da irgendwie eine Lösung wüsstest.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hast du denn den qt_de in dein application-dir kopiert?!?
Und ganz entscheidend: Der QTranslator ist futsch, nach deiner Methode, denn er ist nicht dynamisch erzeugt!!!!!!!!
Also den QTranslator in der Methode mit new anlegen dann sollte es passen.
Und ganz entscheidend: Der QTranslator ist futsch, nach deiner Methode, denn er ist nicht dynamisch erzeugt!!!!!!!!
Also den QTranslator in der Methode mit new anlegen dann sollte es passen.
Zuletzt geändert von franzf am 20. Mai 2009 12:03, insgesamt 1-mal geändert.