See the question and my original answer on StackOverflow

You can use the LoadString function directly on the associated dll.

For the current UI language:

wchar_t text[1024];
HMODULE h = LoadLibraryEx(L"shell32.dll", NULL, LOAD_LIBRARY_AS_IMAGE_RESOURCE); // the dll I know the associated .mui has the id
LoadString(h, 12850, text, ARRAYSIZE(text));
FreeLibrary(h);

For another UI language (this language resources must be installed otherwise it will fallback to current language resources)

wchar_t text[1024];
HMODULE h = LoadLibraryEx(L"shell32.dll", NULL, LOAD_LIBRARY_AS_IMAGE_RESOURCE);

LANGID id = GetThreadUILanguage(); // save current language

// switch to language using LCID
SetThreadUILanguage(1036); // French
LoadString(h, 12850, text, ARRAYSIZE(text)); // use the ID you need

SetThreadUILanguage(id); // restore previous language

FreeLibrary(h);