即时翻译Qt QML应用程序

Translate Qt QML application on the fly

本文关键字:QML 应用程序 Qt 翻译      更新时间:2023-10-16

我正在尝试翻译一个填充

tr("string");

处都是,如果我在应用程序启动之前设置翻译器,它可以完美运行,但我在飞行中遇到了麻烦。唯一的解决方案似乎是空字符串黑客,但我不想搜索每个"tr"并添加空字符串

在Qt 5.9之前,最简单的解决方案是为每个可翻译的字符串添加一个空字符串: 如何在QML中进行动态翻译

从Qt 5.10开始,可以通过调用以下命令重新翻译所有字符串: QQmlEngine::retranslate

更多信息可以在QtQuick国际化文档中找到:

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

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

请注意,在撰写本文时,只有Qt 5.10的测试版可用。