gpt4 book ai didi

qt - 如何本地化 Qt qmldir 插件?

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

我的应用程序有一个用 Qt QML 编写的 GUI,我们已使用 qsTr() 和 Qt .ts 文件成功将其国际化。现在我们通过 Qt 的 qmldir 添加第三方插件支持API。在插件的 .qml 文件中,仅当翻译已位于主机应用程序的 .ts 文件中时,qsTr() 才能正常工作。第三方 QML 作者如何将本地化字符串添加到他们的 qmldir 插件中?

最佳答案

我创建了一个 Translator 类来组织和加载翻译。我有一个保存语言名称和文件名的 QVariantMap,然后当我创建翻译器时我必须提供源目录,因为这是加载翻译的要求。我的类还负责将最后使用的语言存储在 QSettings 中。

现在,要回答您的问题,您始终可以按照与常规应用程序完全相同的方式进行翻译,您必须在项目文件中添加如下内容:

1 - 列出所有可能的翻译

TRANSLATIONS = \
translation_sp.ts \
translation_fr.ts

2 - 运行 lupdate 生成实际的翻译文件

lupdate project.pro

3 - 运行 lrelease

与语言学家一起翻译并创建实际的翻译。在此示例中,此步骤将生成 translation_sp.qmtranslation_fr.qm

4 - 使用您的插件部署翻译

一旦您有了 .qm 文件,将它们与您的插件一起部署,理想情况下您可以标准化命名,也许始终使用 plugin_XX.qm

5 - 在应用程序中加载插件翻译

为此,您必须知道翻译文件的路径和文件名,因此如果您的插件安装在 Qt 默认目录中并且您标准化了翻译文件名,这应该很简单

qTranslator.load("plugin_XX.qm", "PATH_TO_TRANSLATION_FILE")
app->installTranslator(qtTranslator);

我在类里面简化了这一点。这是headersource我的 Translator 类的文件,如果你想看一下。

使用方法如下:

Translator translator(app.data(), "PATH_TO_TRANSLATION");
translator.addTranslation("SP", "plugin_XX.qm");
engine.rootContext()->setContextProperty("translator", &translator);

您可以安装多个翻译器,因此它将适用于您的应用程序和插件。当我编写类(class)时,我并没有期待不同的来源,但您可以对其进行修改,以便每次添加翻译时,都会采用 2 个字母的语言代码、文件名和路径。

希望这有帮助!

关于qt - 如何本地化 Qt qmldir 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465158/

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