我正在尝试翻译一个 qt QML 应用程序,其中充满了
tr("string");
Run Code Online (Sandbox Code Playgroud)
在所有地方,如果我在应用程序启动之前设置翻译器,它会完美运行,但我在即时执行此操作时遇到麻烦。唯一的解决方案似乎是空字符串 hack,但我不想搜索每个“tr”并添加空字符串
到 Qt 5.9 为止,最简单的解决方案是向每个可翻译字符串添加一个空字符串:How to do Dynamic Translation in QML
从 Qt 5.10 开始,可以通过调用以下命令重新翻译所有字符串:QQmlEngine::retranslate
更多信息可以在QtQuick 国际化文档中找到:
QCoreApplication::installTranslator()您可以通过使用和 添加和删除翻译器来更改 Qt 翻译函数使用的语言QCoreApplication::removeTranslator()。之后,您可以调用QQmlEngine::retranslate()以触发所有使用翻译的绑定的刷新。因此,您的用户界面将动态切换到新选择的语言。或者,您还可以将
QEvent::LanguageChange事件转发到应用程序的 QQmlEngine 实例或将您自己的信号连接到QQmlEngine::retranslate().
请注意,在撰写本文时,仅 Qt 5.10 的测试版可用。
| 归档时间: |
|
| 查看次数: |
1659 次 |
| 最近记录: |