0

残念ながら、この質問は以前に尋ねられましたが、私はここで気が狂います。私の Qt アプリケーションでは、ユーザーは言語を動的に変更することができ、それは私自身のすべての翻訳に最適です。私の QFileDialog への呼び出しでは機能しません。それぞれのコード:

void myapp::change_language(std::string& lang_str){
    // my own translations works
    qApp->removeTranslator(&this->app_lang);
    this->app_lang.load(QString::fromStdString(lang_str));
    qApp->installTranslator(&this->app_lang);

    // system translations, works not for qfiledialog
    qApp->removeTranslator(&this->app_lang_qt);
    bool test = this->app_lang_qt.load("qt_fr.qm"); // returns true
    qApp->installTranslator(&this->app_lang_qt);
}

void myapp::changeEvent(QEvent* event){
    if(event->type() == QEvent::LanguageChange){
        this->ui.retranslateUi(this);
    }
    QMainWindow::changeEvent(event);
}

QTranslator app_lang;
QTranslator app_lang_qt;

フランス語は簡単に検出できるため、固定文字列 "qt_fr.qm" はテスト用です。

私が望むのは、QFileDialog と QMessageBox への静的呼び出しで言語を変更することですが、言語は QFileDialog ではなく QMessageBox でのみ変更されます。両方のクラスについて、私は静的メンバーを呼び出しているだけで、問題になることはありません。また、このトランスレータを main.cpp にインストールしようとしましたが、結果は同じでした。

4

1 に答える 1