我尝试为标准保存或打开对话框设置本地化,但除了窗口标题之外的所有内容仍为英文。
我使用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
目录中提供的文件?
答案 0 :(得分:1)
Priviet 你还有这个问题吗? 目前我的解决方案是添加:
QFileDialog fileDialog(0, 0/*default caption*/,
QDir::currentPath(), "All files (*.*)", QFileDialog::DontUseNativeDialog);
调用文件对话框。
但是这样对话框是Qt-native而不尊重KDE。
但我正在挖掘寻找解决方案如何在系统语言intead中获取KDE对话框。