即时翻译Qt QML应用程序

时间:2017-11-17 13:02:27

标签: c++ qt qml

我正在尝试翻译一个充满

的qt QML应用程序
tr("string");

到处都是,如果我在应用程序启动之前设置了翻译器,它可以正常工作,但我在运行时遇到了麻烦。唯一的解决方案似乎是empty string hack,但我不想搜索每个“tr”并添加空字符串

1 个答案:

答案 0 :(得分:2)

高达Qt 5.9 ,最简单的解决方案是在每个可翻译字符串中添加一个空字符串:How to do dynamic translation in QML

从Qt 5.10 ,可以通过调用QQmlEngine::retranslate

重新翻译所有字符串

更多信息可在QtQuick Internationalization文档中找到:

  

您可以更改Qt翻译功能使用的语言   添加和删​​除翻译   QCoreApplication::installTranslator()和   QCoreApplication::removeTranslator()。之后你可以打电话   QQmlEngine::retranslate()触发刷新所有绑定   使用翻译。因此,您的用户界面将切换,   动态地,以新选择的语言。

     

或者,您也可以转发QEvent::LanguageChange个活动   您的应用程序的QQmlEngine实例或将您自己的信号连接到QQmlEngine::retranslate()

请注意,在撰写本文时,only beta releases of Qt 5.10可用。