Sprachabhängige Resourcen auswählen
-
Hallo Freunde!
Ich habe in meinem Programm jede Resource doppelt, einmal in Deutsch und einmal in Englisch. Derzeit werden jedoch nur die deutschen Resourcen angezeigt.Wie kann ich es machen, dass nur die Englischen Resourcen angezeigt werden?
Beste Grüße, Lothar.
-
Um während der Laufzeit die Sprachen zu wechseln gibt es eigentlich nur eine saubere Lösung.
1. Beim Programmstart die Resourcen als Dlls laden .
In der h Datei:
private: HINSTANCE hGermanResources; HINSTANCE hEnglishResources; HINSTANCE hFrenchResources;
In der cpp Datei im InitInstance:
#ifdef _DEBUG hGermanResources = LoadLibraryEx("Languages/LanguageGermanD.dll", NULL, 0); hEnglishResources = LoadLibraryEx("Languages/LanguageEnglishD.dll", NULL, 0); hFrenchResources = LoadLibraryEx("Languages/LanguageFrenchD.dll", NULL, 0); #else hGermanResources = LoadLibraryEx("Languages/LanguageGerman.dll", NULL, 0); hEnglishResources = LoadLibraryEx("Languages/LanguageEnglish.dll", NULL, 0); hFrenchResources = LoadLibraryEx("Languages/LanguageFrench.dll", NULL, 0); #endif // Mit folgender Zeile startet dein Programm zb. immer zuerst in der deutschen Sprache. AfxSetResourceHandle(hGermanResources);
2. Dann am besten in dein Menü eine Auswahl der Sprachen machen. Beim Message Handler der Menüeinträge machst folgendes für jede Sprache:
AfxSetResourceHandle(hGermanResources); SetMenu((*m_pMainWnd), LoadMenu(CYourApp::hGermanResources,MAKEINTRESOURCE(IDR_MAINFRAME) )); m_myDocument->UpdateAllViews(NULL);
3. In der ExitInstance() deiner App:
FreeLibrary(hGermanResources); FreeLibrary(hEnglishResources); FreeLibrary(hFrenchResources);
Wichtig ist das alle Resource dlls die selben Elemente, Strings, IDs !! beinhalten und das bei jeden Element die Sprache richtig gesetzt ist.
Viel Erfolg
daSickboy
-
Hallo daSickboy!
Vielen Dank, für Deine Antwort.
Ich habe schon befürchtet, dass das benutzerabhängige Nutzen sprachabhängiger Resourcen am besten über DLLs zu realisieren ist. Wenn sprachabhängige Resourcen im Programm direkt vorhanden sind, werden nur die Resourcen vom Programm verwendet, die der Sprache des Betriebssystems entsprechen.
Wer sich für eine detailliertere Anleitung interessiert, dem sei
http://www.codeproject.com/cpp/mult_lang_support.asp
empfohlen.Bye, Lothar.