https://bugs.kde.org/show_bug.cgi?id=215837
Friedrich W. H. Kossebau <kosse...@kde.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |CONFIRMED CC| |kosse...@kde.org Ever confirmed|0 |1 --- Comment #1 from Friedrich W. H. Kossebau <kosse...@kde.org> --- Confirmed for Qt4/kdelibs4. Similarly still happening with Qt5/KF5/Plasma5, though now translations are loaded on QApplication instance creation, so minor improvement is that texts do not change anymore after using QFileDialog. Still, it is not perfect that the platform plugin decides on its own to load the Qt meta catalog for the current system locale and thus ruling over a possible decision of the app itself to use another catalog (or even none). As this not only affects the platform dependent UI as provided by the platform (where it could be reasoned it is kind of integrating with system language), but any other normal Qt UI of the app as well (e.g. strings in the context menu of QLineEdit, "Cut", "Copy" etc). I'd consider this a bug. Not tracked down to the call, but very possibly due to ki18n lib being pulled in by whatever platform plugin (lost overview) which provides the plasma/kf5 filedialog & Co.. The KI18n lib has a startup hook which load the Qt meta catalog with translations for the locale as defined by QLocale::system(). Meant as convenience for KDE application developers (who rely on that without knowing possibly ;) ), but surprising for 3rd-party Qt apps which might want own control over the translation catalogs used in the app. See how many Qt catalogs are opened just due to the platform plugin here: src.pro: TEMPLATE = app CONFIG += qt QT += widgets SOURCES += main.cpp main.cpp: #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); // Changed QObject::tr("Open") to QLineEdit::tr("Cu&t") to show the affect on normal Qt widgets QMessageBox::information(0, QLatin1String("Open"), QLineEdit::tr("Cu&t")); QFileDialog::getOpenFileName(); QMessageBox::information(0, QLatin1String("Open"), QLineEdit::tr("Cu&t")); return app.exec(); } kossebau@klux:~$ strace ~koder/Kode/qt/bug215837/src 2>&1 | grep '^open(' | grep -P '\.(mo|qm)' open("/usr/share/locale/de/LC_MESSAGES/sonnet5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kcoreaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kauth5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kglobalaccel5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kconfig5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kwidgetsaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kcompletion5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qt_en.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qt_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtbase_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtscript_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtquick1_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtmultimedia_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtxmlpatterns_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kcodecs5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kitemviews5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kdbusaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kwindowsystem5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/solid5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kbookmarks5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kjobwidgets5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/knotifications5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/knotifications5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kjobwidgets5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kbookmarks5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/solid5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kwindowsystem5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kdbusaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kitemviews5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kcodecs5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qt_en.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qt_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtbase_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtscript_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtquick1_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtmultimedia_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/qt5/translations/qtxmlpatterns_de.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kcompletion5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kwidgetsaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kconfig5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kglobalaccel5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kauth5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/kcoreaddons5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 open("/usr/share/locale/de/LC_MESSAGES/sonnet5_qt.qm", O_RDONLY|O_CLOEXEC) = 6 [[here call to QFileDialog at runtime]] open("/usr/share/locale-langpack/de_DE.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de_DE.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-bundle/de_DE.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-langpack/de_DE.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de_DE.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-bundle/de_DE.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-langpack/de_DE/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de_DE/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-bundle/de_DE/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-langpack/de.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-bundle/de.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-langpack/de.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-bundle/de.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale-langpack/de/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de/LC_MESSAGES/libc.mo", O_RDONLY) = 10 open("/usr/share/locale-langpack/de/LC_MESSAGES/kio5.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de/LC_MESSAGES/kio5.mo", O_RDONLY) = 15 open("/usr/share/locale-langpack/de/LC_MESSAGES/kconfigwidgets5.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de/LC_MESSAGES/kconfigwidgets5.mo", O_RDONLY) = 19 open("/usr/share/locale-langpack/de/LC_MESSAGES/kxmlgui5.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/de/LC_MESSAGES/kxmlgui5.mo", O_RDONLY) = 19 open("/home/kossebau/messages.mo", O_RDONLY|O_CLOEXEC) = 19 -- You are receiving this mail because: You are watching all bug changes.