我正在寻找在C++ / CX下在Windows Phone 8上获取设备区域设置的正确方法。

以下代码在Windows Phone 8模拟器上始终返回“en”。

int ccBuf = GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT,
                            LOCALE_SISO639LANGNAME,
                            buf, 9);

最佳答案

此函数将以两个字母格式“en”,“fr”等返回设备的语言。

#include <windows.h>
std::string platformGetDeviceLanguage()
{
    ULONG numLanguages = 0;
    DWORD cchLanguagesBuffer = 0;
    BOOL hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages, NULL, &cchLanguagesBuffer);

    if (hr)
    {
        WCHAR* pwszLanguagesBuffer = new WCHAR[cchLanguagesBuffer];
        std::string lang_code = "en";
        hr = GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, &numLanguages, pwszLanguagesBuffer, &cchLanguagesBuffer);
        if (hr)
        {
            lang_code[0] = pwszLanguagesBuffer[0];
            lang_code[1] = pwszLanguagesBuffer[1];
        }
        delete[] pwszLanguagesBuffer;
        return lang_code;
    }
    return "en";
}

关于c++ - Windows Phone 8上的当前语言环境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18196718/

10-11 23:40