You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt QLocale获取语言对应书写脚本的问题排查与解决建议

Qt QLocale获取语言对应书写脚本的问题

编辑补充:根据评论反馈,该问题仅存在于旧版Qt中,至少从Qt 5.12.8版本开始可正常运行。

我希望使用Qt的QLocale类获取指定语言通常使用的书写脚本,为此编写了以下代码:

QSet<QLocale::Script> scriptsOfLanguage(QLocale::Language language) {
    QSet<QLocale::Script> scripts;
    for (const auto &locale : QLocale::matchingLocales(language, QLocale::AnyScript, QLocale::AnyCountry)) {
        scripts.insert(locale.script());
    }
    scripts.remove(QLocale::AnyScript);
    return scripts;
}

但该代码仅对使用至少两种不同脚本的语言生效:

  • scriptsOfLanguage(QLocale::Chinese)可正确返回QSet(QLocale::SimplifiedHanScript, QLocale::TraditionalHanScript)
  • 然而scriptsOfLanguage(QLocale::French)返回QSet(),而非预期的QSet(QLocale::LatinScript)
  • 同理,scriptsOfLanguage(QLocale::Arabic)也返回QSet(),而非预期的QSet(QLocale::ArabicScript)

因此该代码无法对多数语言生效,请问我遗漏了什么?除了将脚本与语言关联列表硬编码到大型switch语句中外,还有什么解决办法?

内容的提问来源于stack exchange,提问作者emkey08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:40:14