保存在QT /打开对话框定位(Save/open dialog localization in Qt

2019-09-22 22:59发布

我尝试设置为标准的保存或打开的对话框上的定位,但除了窗口标题,一切依旧英语。

我使用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这样,火狐(它使用默认的KDE对话框),Konsole的和Kaffeine。

是上面的代码但从翻译的正确点? 也许有另一种方式来设置本地化我的应用程序? 在其他应用程序的对话框为什么翻译? 他们是否使用其他翻译文件,不是在提供的文件/usr/share/qt4/translations目录?

Answer 1:

Priviet您是否仍然有问题? 为了这一刻我的解决办法是增加:

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

调用文件对话框。

然而,在这样的对话是Qt的本地和不尊重KDE。

但我挖找到解决方案如何获得在系统语言这一翻译KDE对话框。



文章来源: Save/open dialog localization in Qt