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

3

我是Qt的粉丝,经常更新它。从Qt5.1到Qt5.2再到Qt5.3。

然而,在Qt5.3中,标准按钮如“确定”、“取消”和“保存”等翻译不再起作用了。

它们没有被翻译,只显示英文。

翻译的代码在每个Qt版本中都没有改变,例如:

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

有什么想法吗?

[更新] 据我所知,这可能是一个错误。如果您不必使用新Qt中的某些改进,则返回到Qt5.1是一种解决方案。


1
如果你的程序在Qt 5.2下运行正常,但是完全相同的程序在Qt 5.3下无法正常工作,那么很可能是Qt的一个bug,你最好的选择是向Digia报告此问题。请确保包含一个小的可编译示例程序以演示问题。 - Jeremy Friesner
嗯,这很奇怪,我也遇到了同样的问题,你用的是什么操作系统? - Julien Lopez
@JeremyFriesner 谢谢,你说得对。我回到了Qt5.1。 - Fay100
@JulienLopez win7/8/xp,这是一个错误(或者一些我还没有找到的原因)。如果可能的话,建议您回到Qt5.1。 - Fay100
3个回答

4

从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);

2

我曾经遇到同样的问题,后来通过更新翻译文件解决了。不确定这是否是预期行为,但我的qt_de.qm文件大小仅为1KB。现在有一个名为qtbase_de.qm的文件(154KB),似乎可以解决问题。


2
这是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将无法加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接