Как перевести язык в Qt на лету

Я использую Translator и linguist для перевода языка в своем приложении в Qt symbain, но я хочу сделать это на лету (во время выполнения), я попробовал решение, данное сетью разработчиков, но оно не работает для меня

<code> #include "languagetranslator.h"
 #include "constants.h"
 #include <QSettings>
 #include <HelperClasses/Strings.h>
 #include <QTranslator>
#include <AppStatus/appstatus.h>
#include <QApplication>

QTranslator* LanguageTranslator::current = 0;

LanguageTranslator::LanguageTranslator(int& argc, char* argv[]) : QApplication(argc, argv)
{

}


LanguageTranslator::~LanguageTranslator()
{
}

void LanguageTranslator::loadTranslation()
{
    QString language;
    language = AppStatus::getCurrentLanguage();
    loadTranslation(language);
    qDebug("language from laodtranslation = %s",language.toLatin1().data());
    //qDebug(language.toLatin1());
}

void LanguageTranslator::loadTranslation(QString language)
{
    //QApplication app;
    QTranslator* translator = new QTranslator(instance());
    translator->load(language);
    installTranslator(&translator);

    //exec();

}
</code>

Это работает только тогда, когда я объявил это в main.cpp и перезапустил приложение, я также вызываю этот метод после выбора нового языка, есть ли что-то, что мне не хватает. Я перехожу по следующей ссылкеhttp://www.qtcentre.org/wiki/index.php?title=Dynamic_translation_in_Qt4_applications

Нужно ли вызывать void MainWindow :: changeEvent (событие QEvent *) при установке нового языка

это мой метод changeEvent (), который я объявил в mainWindow, здесь я вызываю setLanguage ();

<code>void MainWindow::changeEvent(QEvent *event)
{
    if(event->type() == QEvent::LanguageChange)
    {
        ui->retranslateUi(this);
       // retranslate();
        setLanguage();
    }
    QMainWindow::changeEvent(event);
}



void MainWindow::setLanguage()
{
    QString myLanguage;
    int iIndex =  AppStatus::getSettingsData().at(3);
    switch(iIndex)
    {
    case ENGLISH:
        myLanguage = "language_en";
        break;
    case SPANISH:
        myLanguage = "language_es";
        break;
    }
    AppStatus::saveCurrentLanguage(myLanguage);

LanguageTranslator::loadTranslation(myLanguage);
}
</code>

из setLangauge () я звоню languageTranslator () Есть ли что-то, что мне не хватает; Это мой основной класс

<code>int main(int argc, char *argv[])
{

    LanguageTranslator app(argc, argv);
    QString lang = AppStatus::getCurrentLanguage();
    app.installTranslator(&translator);
    MainWindow mainWindow;
    mainWindow.setOrientation(MainWindow::ScreenOrientationLockPortrait);

    //About mainWindow;

#if defined(Q_OS_SYMBIAN)
    mainWindow.showMaximized();
#else
    mainWindow.show();

#endif

   // mainWindow.showFullScreen();
    app.connect(&app,SIGNAL(lastWindowClosed()),&app,SLOT(quit()));
    return app.exec();
}
</code>

Ответы на вопрос(1)

Ваш ответ на вопрос