我的项目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文件。 但这并未改变翻译(并且语言环境已更改)。 我不知道问题在哪里....
答案 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);
在您创建小部件之前(如果我没记错的话,您应该按此顺序执行)