QTranslator和installTranslator

时间:2011-06-14 06:21:05

标签: qt qt4

我的项目qml文件中有qsTr()函数。 我还为这个qml创建了一个翻译文件。 在主程序中我创建了一个QDeclarativeView对象来运行qml文件, 还有一个QTranslator。 我将指向此Qtranslator的指针和指向QApplication的指针发送到另一个在更改语言时调用的函数。 在这个函数我写道:

    QLocale myLocale;
    QString locale = myLocale.name();
    m_translator->load(pagePrefix +'_'+ locale);//(QLibraryInfo::TranslationsPath));
    m_appManager->installTranslator(m_translator);

然后我再次加载qml文件。 但这并未改变翻译(并且语言环境已更改)。 我不知道问题在哪里....

1 个答案:

答案 0 :(得分:2)

在您的代码中验证翻译是否已成功加载。

bool loaded = false;
loaded = m_translator->load(pagePrefix +'_'+ locale);
if (!loaded)
    qWarning() << QString("can't load %1 translation").arg(locale);

有了这个,你可以看到你的文件是否正确lodad或根本没有。如果不验证.qm文件的路径。如果是,请确保您的.qm内部有正确的翻译。

并顺便确保您正在安装翻译

m_appManager->installTranslator(m_translator);

在您创建小部件之前(如果我没记错的话,您应该按此顺序执行)