Seite 1 von 1
Shortcuts internatiolalisieren
Verfasst: 16. Mai 2010 14:10
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.
Verfasst: 16. Mai 2010 14:35
von franzf
Wie lädst du denn die deutsche Übersetzung?
Verfasst: 16. Mai 2010 15:04
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:
Wenn man dies dann allerdings übersetzt in Strg+O, dann funktioniert der Shortcut gar nicht mehr.
Verfasst: 16. Mai 2010 15:13
von franzf
Tjo, das hab ich mir doch glatt gedacht

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.
Verfasst: 16. Mai 2010 17:50
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.
Verfasst: 16. Mai 2010 18:04
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.
Verfasst: 16. Mai 2010 23:22
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.
Verfasst: 3. Oktober 2010 02:12
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)?
Verfasst: 3. Oktober 2010 10:03
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.
Verfasst: 13. Oktober 2010 13:29
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...