2

C++/CX で Windows Phone 8 のデバイス ロケールを取得する正しい方法を探しています。

次のコードは、Windows Phone 8 エミュレーターでは常に"en"を返します。

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

1 に答える 1

0

この関数は、デバイスの言語を「en」、「fr」などの 2 文字形式で返します。

#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";
}
于 2014-08-20T12:26:20.650 に答える