我们正在使用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助手呢?即使经过长时间的互联网搜索,我也没有办法做到这一点。
答案 0 :(得分:3)
如果您检查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助手本身的语言,还会使用.qhc文件中的相应翻译版本(<file language="de"></file>
,<text language="de"></text>
,...)