Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The tr function does not translate a word, while the translate function does

There is such code:

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

    QTranslator translator;
    const QString dir = "/usr/share/qt6/translations";

    if (translator.load("qt_ru", dir)) {
        QApplication::installTranslator(&translator);
        qDebug() << QApplication::translate("QShortcut", "Open");
        qDebug() << QApplication::tr("Open");
    }

    ...
}

Its output:

"Открыть"
"Open"

Why isn't the word "Open" translated in the second case?

like image 462
AvidCoder Avatar asked Dec 28 '25 21:12

AvidCoder


1 Answers

If

QApplication::translate("QShortcut", "Open");

works, but

QApplication::tr("Open");

does not, it means "Open" is in the "QShortcut" context. To get that context with tr(), write:

QShortcut::tr("Open");

Alternatively, edit translations to put the word in the QObject context, so both will find it.


Read more: https://doc.qt.io/qt-6/i18n-source-translation.html#mark-strings-for-translation

like image 123
hyde Avatar answered Dec 31 '25 11:12

hyde