Kein Sprachenwechsel der QMessageBox Buttons
Verfasst: 23. August 2006 13:40
Habe das Problem das ich mein Sprachemenü dynamisch aufgebaut habe,
so das ein Sprachewechsel während der Laufzeit möglich sein soll.
Allerdings werden beim öffnen von einer QMessageBox
die Buttons immer nur die Sprache angezeigt, die die lokale Variable hat.
Der Messagetext wird aber einwandfrei übersetzt.
int ret = QMessageBox::warning( this, "CRAS",
tr( "The document has changed.\n"
"Would you like to save it?"),
QMessageBox::Yes,
QMessageBox::No,
QMessageBox::Cancel);
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