Search code examples
stringqtinternationalization

Qt tr for internationalisation does not work in main function?


Qt's translation function tr does not work in the main function but works fine in a QWidget member function. Why is that?

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

    QApplication a(argc, argv);
    QDialog dialog; 
    QString temp = tr("dadasda");//error:tr was not declared in this scope
    dialog.show();
    return a.exec();
}

Solution

  • The translation function tr is a static method of QObject. Since QWidget is a subclass of QObject, tr is available in methods of QWidget, but in main() you have to use QObject::tr in order to use the function, as shown below.

    #include <QObject>
    int main(int argc, char *argv[])
    {   
        QApplication a(argc, argv);
        QDialog dialog; 
        QString temp = QObject::tr("dadasda");//works fine
        dialog.show();
        return a.exec();
    }