Shortcuts internatiolalisieren

Alles rund um die Programmierung mit Qt
Antworten
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Shortcuts internatiolalisieren

Beitrag von Doc_symbiosis »

Hallo,

ich habe in einer Anwendung, z.B. folgende Codezeilen

Code: Alles auswählen

    openAct->setShortcut(QKeySequence::Open);
    decryptAct->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D));
Wenn ich nun die Anwendung auf deutsch ausführe, erscheint im Menü als Shortcut ein Ctrl+O, aber es sollte ja eigentlich Strg+O erscheinen. Wie bekomme ich es hin, dass die Tastenkürzel auf in deutsch entsprechend dargestellt werden?

Habe da bisher leider nicht so richtig was gefunden. Bin in der Doku wohl über QKeySequence::NativeText gestolpert, weiss aber nicht so recht, so ich das anbringen soll.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wie lädst du denn die deutsche Übersetzung?
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Beitrag von Doc_symbiosis »

Die Übersetzung wird durch folgenden Teil geladen (habe ich selbst nicht geschrieben):

Code: Alles auswählen

    QString lang = settings.value("int/lang", QLocale::system().name()).toString();
    if (lang.isEmpty()) lang = QLocale::system().name();

    //internationalize
    QTranslator translator;
    translator.load("ts/gpg4usb_" +  lang,
                    qApp->applicationDirPath());
    app.installTranslator(&translator);
Ich hatte erste in dem setshortcut sowas verwendet:

Code: Alles auswählen

    openAct->setShortcut(tr("Ctrl+O"));

Wenn man dies dann allerdings übersetzt in Strg+O, dann funktioniert der Shortcut gar nicht mehr.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Tjo, das hab ich mir doch glatt gedacht :P
Du lädst nur DEINE Übersetzung, in der aber die Shortcuts nicht übersetzt wurden. Es gibt von Qt selber die Übersetzungen, die liegen in QLibraryInfo::location(QLibraryInfo::TranslationsPath). Den Namen setzt du dann aus dem "qm_"+language+".qm" zusammen.
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Beitrag von Doc_symbiosis »

Hm, schonmal danke für den Hinweis. Ich habe nun noch eine load-Zeile eingefügt. Für den ersten Test mal mit einer festen Datei.

Code: Alles auswählen

    translator.load("/usr/share/qt4/translations/qt_de");             
    translator.load("ts/gpg4usb_" +  lang, qApp->applicationDirPath());
Die Datei wird auch erfolgreeich geladen, jedoch werden die Tastenkürzel immer noch nicht übersetzt, wie stelle ich das denn nun wohl an? Das QKeySequence::Open in ein tr zu setzen erscheint mir da wenig sinnvoll.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du musst natürlich zwei verschiedene Translator instanziieren! Das load() deines eigenen Übersetzungsfiles ersetzt die zuvor geladene Übersetzung...
Aus der Doku zu QTranslator::load()
The previous contents of this translator object are discarded.
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Beitrag von Doc_symbiosis »

Ah, oki habs überlesen. Danke für den Hinweis. Hab ich überlesen.

Nun funktionierts richtig.

Kann man diese qt_lang.qm Dateien wohl irgendwo einzeln runterladen?

Die Sache ist, dass ich diese für verschiedene Sprachen für Linux und Windows brauche.
Auf meinem System sind diese lange nicht für alle Sprachen vorhanden.
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Beitrag von Doc_symbiosis »

*PUSH* diese Frage interessiert mich immer noch brennend.

Die Sache ist, daß ich in meinem Programm verschieden Sprachen und das Ganze für Windows und Linux statisch baune möchte. Wo bekomme ich am Einfachsten die entsprechenden Sprachdateien her( vor allem, wenn sie nicht auf meinem System installiert sind)?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Die Sprachdateien von qt sind immer dort instaliert wo franf gesagt hat. Ist dort keine für die entsprechende Sprache so musst Du selbst übersetzen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Doc_symbiosis
Beiträge: 32
Registriert: 19. Juni 2008 23:10

Beitrag von Doc_symbiosis »

oki vielen Dank für die Klärung. Ich wundere mich nur, daß in dem angegebenene Verzeichnis nur zehn Sprachdateien liegen. Qt muss doch in mehr Sprachen verfügbar sein, würde ich jetzt mal denken...
Antworten