[英]Translate Qt QML application on the fly
我正在尝试翻译一个充满的Qt QML应用程序
tr("string");
在整个地方,如果我在应用启动之前设置了转换器,它就可以完美运行,但是我在进行过程中遇到了麻烦。 唯一的解决方案似乎是空字符串hack,但我不想搜索每个“ tr”并添加空字符串
在Qt 5.9之前 ,最简单的解决方案是在每个可翻译字符串中添加一个空字符串: 如何在QML中进行动态翻译
从Qt 5.10开始 ,可以通过调用以下QQmlEngine::retranslate
重新转换所有字符串: QQmlEngine::retranslate
可以在QtQuick国际化文档中找到更多信息:
您可以通过使用
QCoreApplication::installTranslator()
和QCoreApplication::removeTranslator()
添加和删除转换器来更改Qt转换功能使用的语言。 之后,您可以调用QQmlEngine::retranslate()
来触发所有使用翻译的绑定的刷新。 结果,您的用户界面将动态切换到新选择的语言。或者,您也可以将
QEvent::LanguageChange
事件转发到应用程序的QQmlEngine实例,或者将自己的信号连接到QQmlEngine::retranslate()
。
请注意,在撰写本文时, 仅Qt 5.10的beta版本可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.