QMessageBox的翻译在Qt5.3中不起作用

时间:2014-09-15 14:13:45

标签: qt qt5.3

我是Qt的粉丝并经常更新,Qt5.1-> 5.2-> 5.3。

然而,在“Qt5.3”中,“Ok”,“取消”,“保存”之类的标准按钮的跟踪不再起作用了。 它们没有翻译,只是简单的英语。

翻译代码确实更改每个版本的Qt。 像:

TRANSLATIONS = qt_fr.ts
QTranslator trans
trans.load("qt_fr");
a.installTranslator(&trans);

任何想法?

[更新] AFAIN,它可能是一个bug。如果U不必在新Qts中使用一些改进,那么回到Qt5.1是一个很好的解释。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

我遇到了同样的问题,并使用更新的翻译文件。我不确定这是否是预期的行为,但我的qt_de.qm的文件大小只有1kB。然而,现在有一个名为qtbase_de.qm的文件(154kB)似乎可以解决问题。

答案 2 :(得分:1)

这是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