我必须显示可供用户选择的语言列表。该列表将 (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() 没有返回正确的值?