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

如何翻译“下一步”、“取消”和“退出”按钮?(基于Qt安装程序框架),qt,localization,qt5,qt-installer,Qt,Localization,Qt5,Qt Installer,我想用英语或法语翻译我的安装程序向导(基于Qt安装程序框架)(取决于操作系统语言) 我在“installscript.qs”文件中添加了这些行: 我在“config.xml”文件中添加了以下内容: ... fr.qm 但一切正常(所有长文本都翻译)(法语),但“下一步”、“取消”、“退出”等按钮没有翻译(参见屏幕截图): PS:我不想使用C++代码。(仅限脚本或Xml)除了您自己的.qm文件外,还需要加载Qt翻译文件。该文件位于Qt安装文件夹的翻译子文件夹中(例如/usr/share/qt

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

我在“installscript.qs”文件中添加了这些行:

我在“config.xml”文件中添加了以下内容:


...
fr.qm
但一切正常(所有长文本都翻译)(法语),但“下一步”、“取消”、“退出”等按钮没有翻译(参见屏幕截图):


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

除了您自己的.qm文件外,还需要加载Qt翻译文件。该文件位于Qt安装文件夹的翻译子文件夹中(例如
/usr/share/qt5/translations/
)。对于某些语言,加载qt_xx(其中xx应替换为您的语言环境)似乎已经足够了,但对于德语,我必须加载“qtbase_xx”来翻译Next和Cancel按钮。例如,对于
fr
区域设置,它们被命名为
qt\u fr.qm
qtbase\u fr.qm


编辑:

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

请参阅安装程序框架/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
)不起作用

通过更正
Installer framework/src/sdk/translations中framworks源代码中提供的de.ts文件,我将Installer Frameworks翻译示例的
Quit
按钮翻译为德语

feramework附带的原始翻译缺少一个
&

因此,改变:

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

QInstaller::简介页面
...
退出
比登


QInstaller::简介页面
...
&;退出
比登
重新编译框架会在框架内生成一个已翻译的退出按钮(Beenden)

我没有试过,但是通过学习
/installer framework/src/libs/installer/packagemanagergui.cpp
也可以翻译下一步按钮


添加上下文可能有助于:

function Component()
{
  qsTranslate("QInstaller::IntroductionPage", "&Quit");
}

下一个和后面一个,但找不到写在哪里的代码> QSTRANSLATETE()/<代码> < /P>你使用法语还是英语OS?我用法语OS:Windows 10用FrimDO我需要通过C++代码加载QM文件?或者我不需要编码。是否可以在没有C++代码的情况下加载QM文件?我在原始答案中检查并添加了一些附加信息。下一个按钮的值是“下一个”或“下一个”的有用信息,你能把这个信息寄给Qt bugtracker吗?

<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>
function Component()
{
  qsTranslate("QInstaller::IntroductionPage", "&Quit");
}