GetSystemPreferredUILanguages (kernel32)
Last changed: -217.32.203.178

.
Summary
Retrieves the system preferred UI languages.

C# Signature:

[DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool GetSystemPreferredUILanguages(
    uint dwFlags,
    out uint pulNumLanguages,
    StringBuilder pwszLanguagesBuffer,
    ref uint pcchLanguagesBuffer);

VB Signature:

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

A possibly better type for pwszLanguagesBuffer is Char[] because StringBuilder will end at the first \0 character; which the native API uses as the delimiter for the array elements it returns.

Sample Code:

static void DisplayUserPref()
{
    StringBuilder languagesBuffer = new StringBuilder();
    uint languagesCount, languagesBufferSize = 0;

    if (GetSystemPreferredUILanguages(
        MUI_LANGUAGE_NAME,
        out languagesCount,
        null,
        ref languagesBufferSize))
    {
        languagesBuffer.EnsureCapacity((int)languagesBufferSize);
        if (GetSystemPreferredUILanguages(
            MUI_LANGUAGE_NAME,
            out languagesCount,
            languagesBuffer,
            ref languagesBufferSize))
        {
            string[] languages = languagesBuffer.ToString().Split(new char[] { '\0' });
            Console.WriteLine("GetSystemPreferredUILanguages returns " + languages.Length + " languages:");
            foreach (string language in languages)
                Console.WriteLine("   " + language);
        }
        else
            Console.WriteLine("2nd call to GetSystemPreferredUILanguages returns Win32 error code #" + Marshal.GetLastWin32Error());
    }
    else
        Console.WriteLine("1st call to GetSystemPreferredUILanguages returns Win32 error code #" + Marshal.GetLastWin32Error());
}

const uint MUI_LANGUAGE_ID = 0x4;    // Use traditional language ID convention
const uint MUI_LANGUAGE_NAME = 0x8;    // Use ISO language (culture) name convention

Documentation