gpt4 book ai didi

qt - QtQuick 中从上到下的本地化

转载 作者:行者123 更新时间:2023-12-02 03:02:22 25 4
gpt4 key购买 nike

经过几周的断断续续的研究,我仍然没有找到关于如何在 QtQuick 中执行翻译/本地化的全面指南(例如,使用 QML 语言,而不是 C++ 或 Python)。

一般来说,我问的是在 QtQuick 中尽可能多地正确本地化项目的步骤是什么,使用最少或最好不使用 C++。

更具体地说,我需要填补对 QtQuick 如何处理本地化的理解中的大量漏洞。

到目前为止,我已经:

  • 将 QT_TR_NOOP() 附加到我的所有可翻译字符串中,以便在运行时进行翻译

  • 使用 lupdate_only{SOURCES += LanguageStrings.qml} 将包含所有字符串的文件添加到我的 .pro 文件中

  • 使用 QtLinguist 生成翻译文件

但是,我打算实现一个动态更改语言的选项,并且我见过的关于翻译的唯一示例不完全是 C++,本质上是为每种语言创建了一个项目实例,而不是更改字符串在运行时。

那么,如何在运行时更改语言?有我可以设置的变量吗?它是从系统区域设置中提取的吗?我还没有看到对此的可靠答案。

有什么想法吗?

最佳答案

您可以使用最少的 C++ 来完成此操作(至少我认为这是最少的)。我过去曾使用安装应用程序的系统的区域设置来完成此操作(直接在 main() 中):

QGuiApplication app(argc, argv);

QTranslator translator;

if(translator.load(":/translations/myapp_" + QLocale::system().name())) {
app.installTranslator(&translator);
} else {
qDebug() << "Unable to load translation";
}

翻译需要位于资源系统中才能使上述内容发挥作用。您当然可以在运行时根据 QML 的用户输入(例如在应用程序的设置中)触发上述内容。以下是执行此操作的一些示例代码( https://wiki.qt.io/How_to_do_dynamic_translation_in_QML )。我不知道仅 QML 的方法可以做到这一点。

我尝试了其他也有效的方法。您可以将 UI 放在 Loader 元素中,并在翻译器更改后简单地使用该元素的 setSource 函数。我快速整理了一个小示例,其中还包括如何在需要时更改 Loader 外部 UI 元素的示例 ( https://github.com/Conntac/qtExamples )。

关于qt - QtQuick 中从上到下的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com