Зачем мне нужен QTranslator для локализованных текстов кнопок в QMessageBox в Windows?

Я занимаюсь разработкой приложения Qt, которое работает на Linux и Windows. Я на немецком языке.

При сборке в Linux я получаю правильные переводы для стандартных кнопок, отображаемых e. г. QMessageBox::question с QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel набор кнопок («Ja», «Nein» и «Abbrechen» в моем случае).

Однако, если я создаю код в Windows, я получаю только тексты на английском языке (C) для этих кнопок («Да», «Нет» и «Отмена»).

После некоторых поисков я нашел глобально работающее решение, добавив

#include <QTranslator>
#include <QLibraryInfo>

а также

QTranslator qtTranslator;
if (qtTranslator.load(QLocale::system(), QString::fromUtf8("qt"), QString::fromUtf8("_"),
QLibraryInfo::location(QLibraryInfo::TranslationsPath))) {
app.installTranslator(&qtTranslator);
}

к моему main.cpp,

Используя это, я также получаю переведенные строки в Windows. В Linux же qtTranslator.load вызов завершается неудачно, и, таким образом, ничего не происходит с состоянием, которое у меня было раньше, поэтому я положил этот код внутри #ifdef Q_OS_WIN блок.

Это работает, но мне кажется немного хакерским. Кроме того, я не понимаю, почему я получаю переведенные строки в Linux по умолчанию, а не в Windows.

Является ли способ сделать это правильное решение? И если да, то зачем мне этот дополнительный код в Windows?

0

Решение

Попробуйте заменить свой код на это и протестировать.

static QTranslator qtTr;
qtTr.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
installTranslator(&qtTr);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]