我必须显示可供用户选择的语言列表。该列表将具有(自动)作为操作系统语言的第一个选项,并将具有其他语言作为附加组件。
这里的英语是自动语言。
问题在于,如果OS语言是中文,我如何区分简化和传统。我的代码是:
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()没有返回正确的值?