so das ein Sprachewechsel während der Laufzeit möglich sein soll.
Code: Alles auswählen
void mainWindow::createLanguageMenu()
{
QDir dir( qmPath );
QStringList fileNames = dir.entryList("cras_*.qm");
for(int i = 0; i < (int)fileNames.size(); i++) {
QTranslator translator;
translator.load(fileNames[i], qmPath);
speach = fileNames[i];
speach = speach.mid(speach.find('_') + 1);
speach.truncate(speach.find('.'));
int id = Language->insertItem(tr("&%1 %2").arg(i + 1).arg(speach),
this, SLOT(switchToLanguage(int)));
Language->setItemParameter(id, i);
if (speach == "English") {
Language->setItemChecked(id, true);
}
locales.push_back(speach);
}
}die Buttons immer nur die Sprache angezeigt, die die lokale Variable hat.
Der Messagetext wird aber einwandfrei übersetzt.
Code: Alles auswählen
//laden der Übersetzungsdateien
void mainWindow::switchToLanguage( int param )
{
//qApp->removeTranslator(qtTranslator);
appTranslator->load("cras_" + locales[param], qmPath);
qtTranslator->load("qt_" + locales[param], qmPath);
for(int i = 0; i < (int) Language->count(); ++i) {
Language->setItemChecked(Language->idAt(i), i == param);
}
languageChange();
//qApp->installTranslator(appTranslator); //Einbinden eigener Übersetzungsdateien
//qApp->installTranslator(qtTranslator);
}tr( "The document has changed.\n"
"Would you like to save it?"),
QMessageBox::Yes,
QMessageBox::No,
QMessageBox::Cancel);
Code: Alles auswählen