Я пытаюсь получить полный список предпочитаемых языков пользователя из приложения C ++ / Qt, настроенного на странице «Регион и язык» в настройках пользователя:
![Preferred languages](https://i.stack.imgur.com/HTftr.png)
Для этого я пытаюсь использовать функцию WinAPI GetUserPreferredUILanguages () в современной системе Windows 10 Pro.
Однакофункция всегда возвращает только первую запись (основной язык отображения Windows) и «en-US».Если английский язык настроен как основной язык, то возвращается только «en-US».Например, если я настроил (немецкий, французский, английский), [[de-de »,« en-US »] возвращается, французский опускается.Если я добавлю больше языков в список, они также будут опущены.Я также посмотрел на Управление языком интерфейса пользователя , но безрезультатно.Например, GetSystemPreferredUILanguages () возвращает только «en-US». GetUILanguageFallbackList () возвращает ["de-de", "de", "en-US", "en"].
Код, который я использую:
// calling GetUserPreferredUILanguages() twice, once to get number of
// languages and required buffer size, then to get the actual data
ULONG numberOfLanguages = 0;
DWORD bufferLength = 0;
const auto result1 = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME,
&numberOfLanguages,
nullptr,
&bufferLength);
// result1 is true, numberOfLanguages=2
QVector<wchar_t> languagesBuffer(static_cast<int>(bufferLength));
const auto result2 = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME,
&numberOfLanguages,
languagesBuffer.data(),
&bufferLength);
// result2 is true, languageBuffer contains "de-de", "en-US"
Это неправильная функция или я неправильно понимаю конфигурацию языка в Windows 10?Как я могу получить полный список предпочитаемых языков?Я вижу UWP API , который мог бы выполнять эту работу, но, если возможно, я бы хотел использовать C API, поскольку он легче интегрируется с базой кода C ++ под рукой.(неуправляемый C ++, то есть)