Функция 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") если хотите использовать перевод используемый для локализации стандартных элементов меню управления.
Либо используйте свой собственный файл интернационализации - тогда можно размещать переводимые фрагменты в любых контекстах, главное внести их в файл перевода в этом же контексте.