Qt助手多语言

Qt Assistant multilingual

本文关键字:语言 Qt      更新时间:2023-10-16

我们使用Qt Assistant作为新的帮助文件系统。但由于我们拥有国际客户群,我们希望以不同的语言启动Qt助手。

使用生成的 QHC 文件启动助手根本不是问题,如下面的代码片段所示。

QProcess a_process;
QStringList a_args;
a_args << "-collectionFile";
a_args << S_HELPFILE_PATH;
a_args << "-enableRemoteControl";
QFile a_assistantExe( S_ASSISTANT_PATH );
if ( a_assistantExe.exists() )
{
a_process.start( S_ASSISTANT_PATH, a_args );
if ( !a_process.waitForStarted() )
return;
}

但是我们如何才能用不同的语言启动Qt Assistant呢?即使在互联网上长时间搜索后,我也没有找到做到这一点的方法。

如果你检查Qt Assistant(main.cpp(的源代码,你会发现它将始终使用系统语言环境:

void setupTranslations()
{
TRACE_OBJ
const QString& locale = QLocale::system().name();
const QString &resourceDir
= QLibraryInfo::location(QLibraryInfo::TranslationsPath);
setupTranslation(QLatin1String("assistant_") + locale, resourceDir);
setupTranslation(QLatin1String("qt_") + locale, resourceDir);
setupTranslation(QLatin1String("qt_help_") + locale, resourceDir);
}

要覆盖系统区域设置,只需在启动进程之前设置lang环境变量:

if ( a_assistantExe.exists() )
{
QProcessEnvironment env;
env.insert("lang", "de"); // replace with your current locale
a_process.setProcessEnvironment(env);
a_process.start( S_ASSISTANT_PATH, a_args );
if ( !a_process.waitForStarted() )
return;
}

它不仅会改变Qt Assistant本身的语言,还会使用你的.qhc文件中相应的翻译版本(<file language="de"></file><text language="de"></text>、...(。