首页 > 解决方案 > MacOS Mojave 上的 Qt 应用程序不尊重系统语言

问题描述

我有一个基于 Qt 的 Windows/Mac 桌面应用程序,已本地化为英语和德语。该应用程序被编写为使用系统语言来确定其启动语言,使用 Qt QLocale API:

QLocale sysLocale = QLocale::system();
QString translatorFileName = sysLocale.name(); // en_US, de_DE, etc

这在 MacOS High Sierra(10.13.2) 中按预期工作。在 Mojave(10.14.1) 上,无论系统语言如何,此调用现在始终为语言组件返回英语,即,如果我将系统语言和区域更改为德语/德国,我希望de_DE作为语言环境名称返回,但是Qt 返回en_DE. 我发现修改CFBundleDevelopmentRegion应用程序文件中键的值Info.plist在某些情况下会覆盖系统区域设置,但它在 High Sierra 和 Mojave 之间的行为也不同

我还在 Qt 错误报告论坛上打开了一个问题,其中包含更多详细信息,试图确定这个问题是源于 Qt 还是源于 Mojave 中的 API 更改。

标签: c++macosqtlocalizationmacos-mojave

解决方案


推荐阅读