如何翻译下一步,取消,退出按钮? (基于Qt安装程序框架)

时间:2017-07-03 14:44:51

标签: qt localization qt5 qt-installer

我想用英语或法语翻译我的安装程序向导(基于Qt安装程序框架)(取决于操作系统语言)。

我在" installscript.qs"中添加了这些行。档案:

Component.prototype.retranslateUi = function()
{
    component.languageChanged();
}

我在" config.xml"中添加了这些内容。档案:

<Installer>
    ...
    <Translations>
        <Translation>fr.qm</Translation>
    </Translations>
</Installer>

但一切都很好(所有长篇文章都已翻译)(法文版)但按钮如&#34; Next&#34;,&#34;取消&#34;,&#34;退出&#34;没有翻译(见截图):

enter image description here

ps:我不想使用C ++代码。 (仅限脚本或Xml)

2 个答案:

答案 0 :(得分:3)

除了您自己的.qm文件外,您还需要加载Qt翻译文件。该文件位于Qt安装文件夹的翻译子文件夹中(例如./usr/share/qt5/translations/)。对于某些语言,加载qt_xx(其中XX应该替换为您的语言环境)似乎已足够,但对于德语,我必须加载&#34; qtbase_XX&#34;翻译“下一步”和“取消”按钮。在fr语言环境的示例中,它们被命名为qt_fr.qmqtbase_fr.qm

修改

由于John Smith的评论,我检查了安装程序框架源代码,并且框架无法加载多个翻译文件:

请参阅installer-framework/src/libs/installer/component.cpp

/*!
     Loads the translations matching the name filters \a qms inside \a directory. Only translations
    with a base name matching the current locale's name are loaded. For more information, see
    \l{Translating Pages}.
*/
void Component::loadTranslations(const QDir &directory, const QStringList &qms)

所以我上面的原始答案(会导致翻译的QWizard::CancelButton)无效。

我通过更正Quit

中framworks源中提供的de.ts文件,将Installer Frameworks翻译示例的installer-framework/src/sdk/translations按钮翻译为德语

与feramework一起出现的原始翻译缺少&amp;

所以,改变:

<context>
    <name>QInstaller::IntroductionPage</name>
    ...
    <message>
        <source>Quit</source>
        <translation>Beenden</translation>
    </message>

<context>
    <name>QInstaller::IntroductionPage</name>
    ...
    <message>
        <source>&amp;Quit</source>
        <translation>Beenden</translation>
    </message>

并重新编译框架导致框架内的翻译退出按钮(Beenden)。

我没试过,但是学习/installer-framework/src/libs/installer/packagemanagergui.cpp也可以让你翻译下一个按钮。

enter image description here

答案 1 :(得分:1)

添加上下文可能会有所帮助:

db.close();

在“下一步”和“返回”之后它醒了,但是找不到在何处写入function Component() { qsTranslate("QInstaller::IntroductionPage", "&Quit"); }