1

我必须显示可供用户选择的语言列表。该列表将 (Auto) 作为第一个选项,它是操作系统语言,并将有其他语言作为附加组件。

如此处所示

这里英语是自动语言。

这里的问题是,如果操作系统语言是中文,我如何区分简体和繁体。我的代码是:

QLocale loc = QLocale::system();
QString defaultLocale = loc.name();       // e.g. "de_DE"
defaultLocale.truncate(defaultLocale.lastIndexOf('_')); // e.g. "de"
QStringList languageList;
languageList.append("auto (System language)");
if(defaultLocale != "de")
    languageList.append("German");
if(defaultLocale != "en")
    languageList.append("English");
if(defaultLocale != "fr")
    languageList.append("French");
if(defaultLocale != "it")
    languageList.append("Italian");
if(defaultLocale != "es")
    languageList.append("Spanish");
if(defaultLocale != "zh")
{
    languageList.append("Chinese Simple");
    languageList.append("Chinese Traditional");
}
if(defaultLocale == "zh") 
{
    if(loc.script() == QLocale::SimplifiedChineseScript)
        languageList.append("Chinese Traditional");
    else
        languageList.append("Chinese Simple");
}
if(defaultLocale != "ja")
    languageList.append("Japanese");

这里 loc.script() 总是返回 0 说明“任何脚本”选项。如果操作系统语言是中文,那么如何区分简体和繁体呢?为什么 script() 没有返回正确的值?

4

0 回答 0