[Qt] Choose the language

It’s a good thing to ask for the language at the first launch of the software because it allows the user to choose even if his language isn’t available (Qt example doesn’t do that).

#include <QTranslator>
#include <QSettings>
#include <QInputDialog>

void setLang(QApplication& app, const QString& idl){
        qWarning(QString("Lang is %1 (lang_%1)").arg(idl).toLatin1());

        QTranslator* translator = new QTranslator();
        translator->load("SepMin_" + idl,":/Translations/release");
        app.installTranslator(translator);
}

void manageLang(QApplication& app){
        QSettings settings("Bramas.fr", "AllSepMin");
        int lang = settings.value("lang", -1).toInt();
        if( lang == -1){
                QStringList languages;
                languages << "English" << "Francais";
                lang = languages.indexOf(QInputDialog::getItem(0, "Preference", "Choose your language ?", languages, 0, false));
                if(lang == -1){
                        lang = 0;
                }
                settings.setValue("lang", lang);
        }

        switch(lang){
                case 0:
                        setLang(app,"en");
                        break;
                case 1:
                        setLang(app,"fr");
                        break;
        }
}
int main(int argc, char *argv[])
{

    QApplication a(argc, argv);

    manageLang(a);

    MainWindow w;
    w.show();
    return a.exec();
}

Comments are closed.