2017-09-04 17 views
0

言語ごとに異なる.qmファイル(異なる.qmファイルにプロジェクトの結果が異なる)を使用してQCoreApplication::installTranslatorを使用して言語を変更したいとします。アプリからすべてのQTranslatorを削除するにはどうすればよいですか?

複数の.qmファイルを使用して結構です。

QCoreApplication::installTranslator(QTranslator *translationFile)
複数の翻訳ファイルをインストールすることができます。翻訳は がインストールされた逆の順番で検索されるため、最後にインストールされた翻訳ファイルのうち、最も多くのものが であり、最初に 翻訳ファイルが検索されます。

しかし、私が古い翻訳者removeをまだ翻訳していないと、それらは翻訳の候補になります。あまり最近インストールされた翻訳者ではありますが。

希望のファイルをロードする前に、以前にロードしたファイルをクリアするにはどうすればよいですか?

私が見る唯一の方法は、私がインストールしたポインタを維持し、変更したいときにそれらを1つずつ削除することですが、もっと簡単なことがありますか?

+0

あなたがよりよく理解するために、コメントコードを表示することができます。 – eyllanesc

+0

古い翻訳者のリストを維持してください。あるいは、それを維持するためにいくつかの共通の親(それはいくつかのダミーの 'QObject'とすることができます)を使います。そのような場合は、それぞれの翻訳を削除することができます。私はそれが問題でなければならないとは思わない。 –

+0

@MarekRそれはそうではありませんが、あなたがインストールした翻訳者をすでに知っているので、QAppがそれをやっていると便利です。翻訳者のリストをクリアして、翻訳者を1つずつ削除する必要はありません。 – ymoreau

答えて

0

私がインストールされているトランスレータのリストを維持:

// Install the translators 
for (auto fileName : qAsConst(fileList)) { 
    auto translator = QSharedPointer<QTranslator>::create(); 
    translator->load(fileName); 

    m_currentTranslators << translator; 
    QCoreApplication::installTranslator(translator.data()); 
} 

そして、それらをすべて削除するには:

for (auto translator : qAsConst(m_currentTranslators)) { 
    QCoreApplication::removeTranslator(translator.data()); 
} 
m_currentTranslators.clear(); 
関連する問題