Hi,
This is a heads up that you should avoid using qPrintable() together with
qDebug/QDebug for localized strings. E.g.
qWarning("%s", qPrintable(tr("Localized error")));
is bound to break on some setups (e.g. Russian windows versions).
The issue is that qPrintable() does '.toLocal8Bit()', while QDebug/qDebug and
friends nowadays expect const char * arguments to be UTF-8 encoded. This
shouldn't be an issue if you stick to ASCII, but you should avoid using
translated strings in this setup.
I'm not sure we can really do anything but document this. Changing qPrintable
might break other legitimate use cases (e.g. writing to a file, printf()...).
Changing qDebug/QDebug would break our promise that we expect all source code /
literals to be UTF-8 encoded ...
As I said, most uses of qPrintable() should be fine, since we typically do not
translate debug messages. But we have a few cases inside Qt where we actually
write localized strings via qDebug (e.g. Qml error messages, console.log
output) ...
Other ideas how to fix this are of course welcome :)
Regards
Kai
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development