Если хочется, чтобы выбор языка происходил на основании именно "настроек в панели управлния", т.е. locale, то можно сделать так:
BOOL CMyApp::InitInstance()
{
InitCommonControls();
HINSTANCE hRes = NULL;
LANGID li = GetUserDefaultLangID();
switch(PRIMARYLANGID (li)){
case LANG_RUSSIAN:
hRes= LoadLibrary(L"Resource_Russian.dll");
break;
case LANG_SPANISH:
hRes= LoadLibrary(L"Resource_Spanish.dll");
break;
case LANG_ITALIAN:
hRes= LoadLibrary(L"Resource_Italian.dll");
break;
case LANG_GERMAN:
hRes= LoadLibrary(L"Resource_German.dll");
break;
case LANG_FRENCH:
hRes= LoadLibrary(L"Resource_French.dll");
break;
};
if(hRes)
AfxSetResourceHandle(hRes);
CWinApp::InitInstance();
...
Соотвественно в dll-ках лежат копии ресурсов, с нужным language.
У меня в самом exe-шнике лежит английская версия, которая грузится по умолчанию, либо если не получилось загрузить нужную библиотеку.