Функция tr не переводит слово, хотя функция translate переводит

Есть такой код:

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");
    }

    ...
}

Его вывод:

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

Почему во втором случае слово "Open" не перевелось?


Ответы (1 шт):

Автор решения: Chorkov

QApplication::tr("Open") эквивалентно QApplication::translate("QApplication", "Open"), а в этом контексте перевод для Open не определен.

Используйте QShortcut::tr("Open") если хотите использовать перевод используемый для локализации стандартных элементов меню управления.

Либо используйте свой собственный файл интернационализации - тогда можно размещать переводимые фрагменты в любых контекстах, главное внести их в файл перевода в этом же контексте.

→ Ссылка