Переводы QMessageBox не работают в Qt5.3
Я фанат Qt и часто его обновляю, Qt5.1->5.2->5.3.
Тем не менее, изменения стандартных кнопок, таких как "Ок", "Отмена", "Сохранить", больше не работают в Qt5.3. Они не переведены, а просто английский.
Код для переводов НЕ меняется в каждой версии Qt. лайк:
TRANSLATIONS = qt_fr.ts
QTranslator trans
trans.load("qt_fr");
a.installTranslator(&trans);
любая идея?
[Обновление] СНОВА, это может быть ошибкой. Возвращение к Qt5.1 - это решение, если вам не нужно использовать некоторые улучшения в новых Qts.
3 ответа
Начиная с Qt5.3 qt_*.qm
делится на несколько файлов (qt*_*.qm
) и теперь вы должны скопировать qtbase_*.qm
в каталог перевода и использовать вместе.
QString translationsPath(QLibraryInfo::location(QLibraryInfo::TranslationsPath));
QLocale locale = QLocale::system();
QTranslator qtTranslator;
if (qtTranslator.load(locale, "qt", "_", translationsPath))
a.installTranslator(&qtTranslator);
QTranslator qtBaseTranslator;
if (qtBaseTranslator.load(locale, "qtbase", "_", translationsPath))
a.installTranslator(&qtBaseTranslator);
Это источник qt_ru:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ru">
<dependencies>
<dependency catalog="qtbase_ru"/>
<dependency catalog="qtscript_ru"/>
<dependency catalog="qtquick1_ru"/>
<dependency catalog="qtmultimedia_ru"/>
<dependency catalog="qtxmlpatterns_ru"/>
</dependencies>
</TS>
Поэтому необходимо развернуть приложение со всеми этими файлами перевода. Если хотя бы один файл отсутствует, перевод qt_ru
не будет загружаться
У меня была та же проблема, и я получил ее для работы с обновленным файлом перевода. Я не уверен, является ли это предполагаемым поведением, но мой qt_de.qm
имеет размер файла всего 1 КБ. Однако есть файл с именем qtbase_de.qm
сейчас (154kB), который, кажется, делает свое дело.