有这样的代码:
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::tr("Open")相当于QApplication::translate("QApplication", "Open"),并且在此上下文中,未定义 Open 的翻译。QShortcut::tr("Open")如果您想要使用用于本地化标准控制菜单元素的翻译,请使用。或者使用您自己的国际化文件 - 然后您可以将翻译的片段放置在任何上下文中,主要是将它们添加到相同上下文中的翻译文件中。