ユーザーが選択できる言語のリストを表示する必要があります。リストには、オペレーティング システムの言語である最初のオプションとして (自動) があり、アドオンとしてその他の言語があります。
ここでは、英語が自動言語です。
ここでの問題は、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() が適切な値を返さないのはなぜですか?