Переводы 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), который, кажется, делает свое дело.

Другие вопросы по тегам