【问题标题】:Translations of QMessageBox not work in Qt5.3QMessageBox 的翻译在 Qt5.3 中不起作用
【发布时间】:2014-09-15 14:13:44
【问题描述】:

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

然而,像“Ok”“Cancel”“Save”这样的标准按钮的翻译在 Qt5.3 中不再起作用。 它们没有翻译,只是简单的英语。

翻译代码在每个 Qt 版本中不会改变。 喜欢:

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

有什么想法吗?

[更新] AFAIN,这可能是一个错误。如果你不必在新 Qts 中使用一些改进,那么回到 Qt5.1 是一个解决方案。

【问题讨论】:

  • 如果您的程序在 Qt 5.2 下可以正常工作,而完全相同的程序在 Qt 5.3 下不能正常工作,则可能是 Qt 错误,您最好的选择是将其报告给 Digia。请务必包含一个演示问题的小型可编译示例程序。
  • 嗯,奇怪,我也有同样的问题,你用的是什么操作系统?
  • @JeremyFriesner 谢谢,你说得对。我回到 Qt5.1。
  • @JulienLopez win7/8/xp,这是一个错误(或者我还没有弄清楚的某种原因)。如果可能的话,建议你回到 Qt5.1。

标签: qt qt5.3


【解决方案1】:

从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) 的文件似乎可以解决问题。

    【讨论】:

      【解决方案3】:

      这是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 将不会加载。

      【讨论】:

        猜你喜欢
        • 2011-11-09
        • 2018-09-25
        • 1970-01-01
        • 2013-10-09
        • 2015-06-23
        • 2014-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多