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.

Reply via email to