2017-07-20 8 views
2

私たちは新しいヘルプファイルシステムとしてQtアシスタントを使用しています。しかし、私たちは国際的な顧客基盤を持っているので、Qtアシスタントをさまざまな言語で始めたいと思っています。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アシスタントを別の言語で起動できますか?インターネットでの長い検索の後でさえ、私はこれを行う方法を見つけませんでした。

答えて

3

あなたはそれが常にシステムロケールを使用することができますQtのアシスタント(main.cpp)のソースコードを調べる場合:あなたのプロセスを起動する前にシステムのロケールを上書きするだけでlang環境変数を設定し

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); 
} 

を:

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>、を使用します。、...)

+0

問題を解決しました。非常におかげでありがとう:) –

+0

助けてよかった!実際にはとても面白かったです。 – cbuchart