我正在尝试翻译一个充满
的qt QML应用程序tr("string");
到处都是,如果我在应用程序启动之前设置了翻译器,它可以正常工作,但我在运行时遇到了麻烦。唯一的解决方案似乎是empty string hack,但我不想搜索每个“tr”并添加空字符串
答案 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可用。