有这样的代码:
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”这个词?
如果
QApplication::translate("QShortcut", "Open");
有效,但是
QApplication::tr("Open");
不是,这意味着“打开”位于“QShortcut”上下文中。要使用
tr()
获取上下文,请写:
QShortcut:tr("Open");
了解更多:https://doc.qt.io/qt-6/i18n-source-translation.html#mark-strings-for-translation