void SetLanguageIDs() { size_t langlen = strlen(language); if (langlen < 2 || langlen > 3) { memset(LanguageIDs, 0, sizeof(LanguageIDs)); SubsetLanguageIDs(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, 0); SubsetLanguageIDs(LOCALE_USER_DEFAULT, LOCALE_IDEFAULTLANGUAGE, 1); SubsetLanguageIDs(LOCALE_SYSTEM_DEFAULT, LOCALE_ILANGUAGE, 2); SubsetLanguageIDs(LOCALE_SYSTEM_DEFAULT, LOCALE_IDEFAULTLANGUAGE, 3); } else { DWORD lang = 0; ((BYTE *)&lang)[0] = (language)[0]; ((BYTE *)&lang)[1] = (language)[1]; ((BYTE *)&lang)[2] = (language)[2]; LanguageIDs[0] = lang; LanguageIDs[1] = lang; LanguageIDs[2] = lang; LanguageIDs[3] = lang; } }
void SetLanguageIDs () { unsigned int langid = language.asInt(); if (langid == 0 || langid > 3) { #if defined _WIN32 && !defined _XBOX memset (LanguageIDs, 0, sizeof(LanguageIDs)); SubsetLanguageIDs (LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, 0); SubsetLanguageIDs (LOCALE_USER_DEFAULT, LOCALE_IDEFAULTLANGUAGE, 1); SubsetLanguageIDs (LOCALE_SYSTEM_DEFAULT, LOCALE_ILANGUAGE, 2); SubsetLanguageIDs (LOCALE_SYSTEM_DEFAULT, LOCALE_IDEFAULTLANGUAGE, 3); #else langid = 1; // Default to US English on non-windows systems #endif } else { DWORD lang = 0; const char *langtag = langids[langid]; ((BYTE *)&lang)[0] = (langtag)[0]; ((BYTE *)&lang)[1] = (langtag)[1]; ((BYTE *)&lang)[2] = (langtag)[2]; LanguageIDs[0] = lang; LanguageIDs[1] = lang; LanguageIDs[2] = lang; LanguageIDs[3] = lang; } }