Qt Button Sprache fix, unabhaengig von System LANG

Alles rund um die Programmierung mit Qt
Antworten
otternase
Beiträge: 62
Registriert: 25. Januar 2008 12:20

Qt Button Sprache fix, unabhaengig von System LANG

Beitrag von otternase »

Hallo

wie kann ich Qt anweisen, in meinem Programm die Sprache der automatisch generierten Buttons (solche Texte wie OK, Cancel, Help) und sonstiger Qt eigener Texte immer unabhängig von der Sprache des Systems (LANG Variabel) immer fix in einer Sprache auszugeben?
Konkret:
Ich möchte, dass mein Programm auch auf einer englischsprachigen Installation alle Elemente durchgängig deutsch anzeigt.

Danke
Markus
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

QLocale::setDefault() vielleicht?
otternase
Beiträge: 62
Registriert: 25. Januar 2008 12:20

Beitrag von otternase »

franzf hat geschrieben:QLocale::setDefault() vielleicht?
nein leider nicht, oder ich verwende es falsch???

in meiner main.cpp habe ich folgendes geschrieben:

Code: Alles auswählen

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QLocale::setDefault(QLocale(QLocale::German, QLocale::Germany));
    QLocale deutsch;
    MainWindow *mainWin=new MainWindow();
    mainWin->show();
qDebug() << "LANG" << deutsch.language();
    int returncode=app.exec();
    return returncode;
 }
es wird dann 42 ausgegeben, also QLocale::German, aber in den Dialogen steht trotzdem 'Cancel' statt 'Abbrechen'...

Language German ist übrigens auf dem System installiert (Ubuntu), aber sogar, wenn ich auf German als Defaultlanguage umschalte, werden die Standardbuttons in Englisch angezeigt??? Vielleicht ein Problem mit meiner Qt-Installation?

PS:
Beispiel für einen Dialog, wo es schief läuft:

Code: Alles auswählen

     int ret = QMessageBox::warning(this, tr("Verbinden mit Datenbankserver"),
                                QString("Es besteht bereits eine Verbindung mit einem Datenbankserver\n HostName: '%1'; UserName: '%2';\nVerbindung schliessen?").arg(db.hostName()).arg(db.userName()),
                                QMessageBox::No | QMessageBox::Yes);
Es steht dort dann "No" und "Yes", statt "Nein" und "Ja"...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Den deutschen Translator laden (.qt_de.qm) sollte helfen
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Re: Qt Button Sprache fix, unabhaengig von System LANG

Beitrag von RavenIV »

otternase hat geschrieben: Ich möchte, dass mein Programm auch auf einer englischsprachigen Installation alle Elemente durchgängig deutsch anzeigt.
Find ich keinen guten Stil.
Der Benutzer wird sich schon etwas gedacht haben, wenn er das System in Englisch installiert hat.

Beispiel:
Du gehst als Austauschstudent in die Türkei.
Deinen PC mit deutscher Installation nimmst Du mit.
Dann kommt eine Software, die hardcodiert auf Türkisch ist.
Würdest Du das wollen?
Linux, das längste Text-Adventure aller Zeiten
otternase
Beiträge: 62
Registriert: 25. Januar 2008 12:20

Beitrag von otternase »

Christian81 hat geschrieben:Den deutschen Translator laden (.qt_de.qm) sollte helfen
Das war der entscheidende Tipp, jetzt funktioniert es!!!!! Danke!

Bezüglich des Einwandes von RavenIV. Sicher hast Du gewissermassen Recht, aber hier geht es genau um den umgekehrten Fall: Anwender will das Programm auch auf einem fremden Rechner in seiner eigenen Sprache bedienen...
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

otternase hat geschrieben:... Anwender will das Programm auch auf einem fremden Rechner in seiner eigenen Sprache bedienen...
Dann mach es doch konfigurierbar.
Vielleicht will auch mal ein Engländer die Software auf einem deutschen System ausführen?
Linux, das längste Text-Adventure aller Zeiten
Antworten