/********************************************************************* * GetCalendarInfoEx (KERNEL32.@) */ int WINAPI GetCalendarInfoEx(LPCWSTR locale, CALID calendar, LPCWSTR lpReserved, CALTYPE caltype, LPWSTR data, int len, DWORD *value) { LCID lcid = LocaleNameToLCID(locale, 0); FIXME("(%s, %d, %p, 0x%08x, %p, %d, %p): semi-stub\n", debugstr_w(locale), calendar, lpReserved, caltype, data, len, value); return GetCalendarInfoW(lcid, calendar, caltype, data, len, value); }
BOOL CALLBACK MyFuncLocaleEx(LPWSTR pStr, DWORD dwFlags, LPARAM lparam) { UNREFERENCED_PARAMETER(dwFlags); WCHAR** argv = (WCHAR**)lparam; WCHAR wcBuffer[BUFFER_SIZE]; int iResult; // Get its LCID LCID lcid = LocaleNameToLCID(pStr, NULL); if (lcid != 0) wprintf(L"LCID for %s is %x\n", pStr, lcid); else wprintf(L"Error %d getting LCID\n", GetLastError()); // Print out the locale name we found iResult = GetLocaleInfoEx(pStr, LOCALE_SENGLANGUAGE, wcBuffer, BUFFER_SIZE); // If it succeeds, print it out if (iResult > 0) wprintf(L"Locale %s (%s)\n", pStr, wcBuffer); else wprintf(L"Locale %s had error %d\n", pStr, GetLastError()); // CompareStringEx if this is the system locale, let us know iResult = GetSystemDefaultLocaleName(wcBuffer, BUFFER_SIZE); if (iResult > 0) { if (CompareStringEx(LOCALE_NAME_INVARIANT, LINGUISTIC_IGNORECASE, wcBuffer, -1, pStr, -1, NULL, NULL, 0) == CSTR_EQUAL) { wprintf(L"\nLocale %s is the system locale!\n", wcBuffer); system("Pause"); } } else { wprintf(L"Error %d getting system locale\n", GetLastError()); system("Pause"); } return (TRUE); }
BOOL CALLBACK MyFuncLocaleEx(LPWSTR pStr, DWORD dwFlags, LPARAM lparam) { WCHAR wcBuffer[BUFFER_SIZE]; int bufferSize; bufferSize = GetLocaleInfoEx(pStr, LOCALE_SENGLANGUAGE, wcBuffer, BUFFER_SIZE); if (bufferSize == 0) { wprintf(L"Locale %s had error %d\n", pStr, GetLastError()); return (TRUE); } LCID lcid = LocaleNameToLCID(pStr, nullptr); if (lcid == 0) { wprintf(L"Error %d getting LCID\n", GetLastError()); return (TRUE); } if (lcid > 0x8000) { wprintf(L"//"); } wprintf(L" { 0x%.4x, \"%s\" }, //%s\n", lcid, pStr, wcBuffer); return (TRUE); }
mssapi_captions::mssapi_captions( captions_cb callback, const std::string &lang) try : captions_handler(callback, AUDIO_FORMAT_16BIT, 16000) { HRESULT hr; std::wstring wlang; wlang.resize(lang.size()); for (size_t i = 0; i < lang.size(); i++) wlang[i] = (wchar_t)lang[i]; LCID lang_id = LocaleNameToLCID(wlang.c_str(), 0); wchar_t lang_str[32]; _snwprintf(lang_str, 31, L"language=%x", (int)lang_id); stop = CreateEvent(nullptr, false, false, nullptr); if (!stop.Valid()) throw "Failed to create event"; hr = SpFindBestToken(SPCAT_RECOGNIZERS, lang_str, nullptr, &token); if (FAILED(hr)) throw HRError("SpFindBestToken failed", hr); hr = CoCreateInstance(CLSID_SpInprocRecognizer, nullptr, CLSCTX_ALL, __uuidof(ISpRecognizer), (void**)&recognizer); if (FAILED(hr)) throw HRError("CoCreateInstance for recognizer failed", hr); hr = recognizer->SetRecognizer(token); if (FAILED(hr)) throw HRError("SetRecognizer failed", hr); hr = recognizer->SetRecoState(SPRST_INACTIVE); if (FAILED(hr)) throw HRError("SetRecoState(SPRST_INACTIVE) failed", hr); hr = recognizer->CreateRecoContext(&context); if (FAILED(hr)) throw HRError("CreateRecoContext failed", hr); ULONGLONG interest = SPFEI(SPEI_RECOGNITION) | SPFEI(SPEI_END_SR_STREAM); hr = context->SetInterest(interest, interest); if (FAILED(hr)) throw HRError("SetInterest failed", hr); hr = context->SetNotifyWin32Event(); if (FAILED(hr)) throw HRError("SetNotifyWin32Event", hr); notify = context->GetNotifyEventHandle(); if (notify == INVALID_HANDLE_VALUE) throw HRError("GetNotifyEventHandle failed", E_NOINTERFACE); size_t sample_rate = audio_output_get_sample_rate(obs_get_audio()); audio = new CaptionStream((DWORD)sample_rate, this); audio->Release(); hr = recognizer->SetInput(audio, false); if (FAILED(hr)) throw HRError("SetInput failed", hr); hr = context->CreateGrammar(1, &grammar); if (FAILED(hr)) throw HRError("CreateGrammar failed", hr); hr = grammar->LoadDictation(nullptr, SPLO_STATIC); if (FAILED(hr)) throw HRError("LoadDictation failed", hr); try { t = std::thread([this] () {main_thread();}); } catch (...) { throw "Failed to create thread"; } } catch (const char *err) { blog(LOG_WARNING, "%s: %s", __FUNCTION__, err); throw CAPTIONS_ERROR_GENERIC_FAIL; } catch (HRError err) { blog(LOG_WARNING, "%s: %s (%lX)", __FUNCTION__, err.str, err.hr); throw CAPTIONS_ERROR_GENERIC_FAIL; }
int get_languageid() { return LocaleNameToLCID(language.c_str(), 0); }
static LCID LCIDFromLocaleInternal(LCID userDefaultLCID, const String& userDefaultLanguageCode, String& locale) { if (equalIgnoringASCIICase(extractLanguageCode(locale), userDefaultLanguageCode)) return userDefaultLCID; return LocaleNameToLCID(locale.charactersWithNullTermination().data(), 0); }