c++ - 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 更改。
解决方案
推荐阅读
- java - 具有通用数据类型的 Java 类
- javascript - Auth0 通配符登录回调
- ruby-on-rails - 在 Rails 中的救援块内捕获密钥
- amazon-web-services - 即使 buildspec.yml 中的命令失败,AWS Build Project 也会成功
- salesforce - 使用 Salesforce APEX 工作更漂亮
- spring - spring boot 未经授权允许所有请求
- javascript - 当内部 div 设置了最大高度时,保持 div 可见而不滚动
- shopify - 我想使用“支付”的 Shopify API,但我不理解“唯一令牌”的参数
- html - 我使用边框半径来圆我的图像元素,但它不是完全圆的
- c++ - 是否在 for 循环内优化了具有 const 条件的 if 语句 (c++)