3

標準の保存ダイアログまたは開くダイアログのローカライズを設定しようとしましたが、ウィンドウ キャプション以外はすべて英語のままです。

Qt 4.7.4 と同じバージョンの KDE を使用しています。

次のアプリケーション例:

#include <QApplication>
#include <QFileDialog>
#include <QTranslator>
#include <QLibraryInfo>
#include <QDebug>

int main(int argc, char **argv)
{
    QApplication app(argc,argv);

    QTranslator qTranslator;
    QString transPath=QLibraryInfo::location(QLibraryInfo::TranslationsPath);
    qTranslator.load("qt_ru",transPath);
    app.installTranslator(&qTranslator);

    qDebug() << transPath;

    QFileDialog fileDialog(0, 0/*default caption*/,
        QDir::currentPath(), "All files (*.*)");
    fileDialog.exec();

    return 0;
}

出力"/usr/share/qt4/translations"(翻訳へのパス) と警告:

KGlobal::locale::Warning your global KLocale is being recreated with a valid main
component instead of a fake component, this usually means you tried to call i18n related
functions before your main component was created. You should not do that since it most
likely will not work

ドイツ語 (qt_de)、フランス語 (qt_fr)、ポーランド語など、サポートされている他の言語も試しましたが、結果は同じで、キャプションのみが影響を受けました。

しかし、KDE ​​と共にインストールされたアプリケーションで「保存」ダイアログを開くと、ダイアログ内のすべてのテキストがロシア語で表示され、警告はコンソールに出力されません。Kwrite、Firefox (デフォルトの KDE ダイアログを使用)、Konsole、および Kaffeine でダイアログを試しました。

上記のコードは翻訳の観点から正しいですか? アプリのローカリゼーションを設定する別の方法があるでしょうか? 他のアプリケーションのダイアログが翻訳されているのはなぜですか? /usr/share/qt4/translationsディレクトリで提供されているファイル以外の翻訳ファイルを使用していますか?

4

1 に答える 1

1

Priviet あなたはまだその問題を抱えていますか? 現時点での私の解決策は、次を追加することです。

QFileDialog fileDialog(0, 0/*default caption*/,
    QDir::currentPath(), "All files (*.*)", QFileDialog::DontUseNativeDialog);

ファイル ダイアログを呼び出します。

ただし、この方法ではダイアログは Qt ネイティブであり、KDE ​​を尊重しません。

しかし、システム言語でKDEダイアログを取得する方法の解決策を見つけるために掘り下げています。

于 2012-10-28T15:42:33.503 に答える