From 91cb44d46ee0dd5b23973b09de048a745104caea Mon Sep 17 00:00:00 2001 From: Floris Bos Date: Fri, 26 Mar 2021 16:17:03 +0100 Subject: [PATCH] MacOSX: use other method to detect preferred language Qt by default consults AppleLanguages property. Use a CFLocaleCopyPreferredLanguages() construct instead. Only look at most preferred language, ignore others. Ref #160 --- main.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/main.cpp b/main.cpp index 3563e5a..cd91f66 100644 --- a/main.cpp +++ b/main.cpp @@ -22,6 +22,9 @@ #ifndef QT_NO_WIDGETS #include #endif +#ifdef Q_OS_DARWIN +#include +#endif static QTextStream cerr(stderr); @@ -174,6 +177,24 @@ int main(int argc, char *argv[]) if (customQm.isEmpty()) { +#ifdef Q_OS_DARWIN + QString langcode = "en_GB"; + CFArrayRef prefLangs = CFLocaleCopyPreferredLanguages(); + if (CFArrayGetCount(prefLangs)) + { + char buf[32] = {0}; + CFStringRef strRef = (CFStringRef) CFArrayGetValueAtIndex(prefLangs, 0); + CFStringGetCString(strRef, buf, sizeof(buf), kCFStringEncodingUTF8); + CFRelease(strRef); + langcode = buf; + langcode.replace('-', '_'); + qDebug() << "OSX most preferred language:" << langcode; + } + + CFRelease(prefLangs); + QLocale::setDefault(QLocale(langcode)); +#endif + if (translator.load(QLocale(), "rpi-imager", "_", QLatin1String(":/i18n"))) QCoreApplication::installTranslator(&translator); }