Salut,
Il y a des manières beaucoup plus efficaces de faire des programmes multilangues.
Par exemple, dans ton projet principal tu crées une dll de ressource dans un projet vide. Tu dois avoir autant de dll que de langues.
Si tu as installé les MSDN va sur help://MS.VSCC/MS.MSDNVS.1036/vccore/html/_core_Create_a_Resource.2d.Only_DLL.htm
Ensuite tu copies le fichier .rc de ton programme principal dans celui de ton projet dll.
Tu traduis le fichier .rc de la dll dans la langue que tu veux.
Dans ton code au niveau de l'initialisation de ton programme (InitInstance() par exemple) tu copies le code suivant.
//Chargement de la Dll de langue
HINSTANCE dll;
if(m_Lang == "FR")
dll = LoadLibrary("ResDllFr.dll");
else if (m_Lang == "EN")
dll = LoadLibrary("ResDllEn.dll");
if(dll)
AfxSetResourceHandle(dll);
Lors de la fermture de ton programme tu décharges ta dll avec le code suivant:
HMODULE hDLL = AfxGetResourceHandle();
if (hDLL != AfxGetInstanceHandle())
{
AfxSetResourceHandle(AfxGetInstanceHandle());
FreeLibrary(hDLL);
}
La dll te sera utile pour traduire toutes tes ressources. Par contre si tu as du texte dans ton application (MessageBox, Champ texte dynamique...) indépendant de tes ressources tu devras mettre en place un objet langue à part ne servant qu'à stocker des variables contenant le texte.
Le choix de la langue lui peut se faire via une clé contenue dans un fichier .ini. En fonction de cette clé (FR, EN...), au démarrage de ton application (voir code ci-dessus) tu charges la dll adéquate et tu instancies tes variables texte de ton objet langue.
Le changement de langue ne peut s'effectuer qu'en redémarrant ton application...tu n'as plus qu'à mettre en place une routine te permettant de le faire.
Voilà pour les méthodes....si tu as des questions d'ordre technique n'ésite pas.
.

Liv