summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-05-31 15:54:55 +0000
committerKitware Robot <kwrobot@kitware.com>2022-05-31 11:55:08 -0400
commiteeb6dcad942e6c595180f16a7af69a9dc7a70b8e (patch)
treef67e36990ea130258232081e0f08665f0a26d8b5
parenta8bd06dfd47a56e09e660de5e58f26579105d2d4 (diff)
parentae13524e3bc116d38fb54770a40e89ae7274540f (diff)
downloadcmake-eeb6dcad942e6c595180f16a7af69a9dc7a70b8e.tar.gz
Merge topic 'cmake-gui-locale' into release-3.23
ae13524e3b cmake-gui: Restore support for internationalization with Qt5 on Windows Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7303
-rw-r--r--Source/QtDialog/CMakeSetup.cxx14
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/QtDialog/CMakeSetup.cxx b/Source/QtDialog/CMakeSetup.cxx
index 8ffa3e728d..c556049807 100644
--- a/Source/QtDialog/CMakeSetup.cxx
+++ b/Source/QtDialog/CMakeSetup.cxx
@@ -10,6 +10,15 @@
#include <QTranslator>
#include <QtPlugin>
+// FIXME(#23565): Qt6 has QTextCodec in Core5Compat, but using its
+// `setCodecForLocale` does not make cmake-gui support non-ASCII chars
+// on Windows. For now we only support them with Qt5. How do we support
+// them with Qt6, preferably without Core5Compat?
+#if defined(Q_OS_WIN) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+# include <QTextCodec>
+# define CMAKE_HAVE_QTEXTCODEC
+#endif
+
#include "cmsys/CommandLineArguments.hxx"
#include "cmsys/Encoding.hxx"
#include "cmsys/SystemTools.hxx"
@@ -124,6 +133,11 @@ int main(int argc, char** argv)
setlocale(LC_NUMERIC, "C");
+#ifdef CMAKE_HAVE_QTEXTCODEC
+ QTextCodec* utf8_codec = QTextCodec::codecForName("UTF-8");
+ QTextCodec::setCodecForLocale(utf8_codec);
+#endif
+
// tell the cmake library where cmake is
QDir cmExecDir(QApplication::applicationDirPath());
#if defined(Q_OS_MAC)