|
|||
|
Localization Tool for VB, Delphi, .NET, C#, VB.NET, XML, Online Help, HTML ... > Technical Support (You need to be registered at the forum to write) > Usage - Three simple steps to localize > VC++ 6.0 MFC application - One EXE, one DLL for all languages.
|
| Moderated by: Renate.Reinartz, Markus.Kreisel, Jaakko.Salmenius, Ilkka.Salmenius |
|
|||||||||||||
| VC++ 6.0 MFC application - One EXE, one DLL for all languages. - Usage - Three simple steps to localize - Technical Support (You need to be registered at the forum to write) - Localization Tool for VB, Delphi, .NET, C#, VB.NET, XML, Online Help, HTML ... | ||||||||||||||
| Author | Post | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||
|
danliu Member
|
I am evaluating Sisulizer for my company on one of our VC++6/MFC applications. For example, my EXE is named Original.exe, and I would like to support two languages besides English - German and Japanese. I chose Sisulizer output file type #3 - "Resource DLLs", and Sisulizer created me 2 new DLLs (OriginalDEU.dll and OriginalJPN.dll). I was able to load them at runtime with no problems. However, my manager prefers to have only one DLL instead of two. Does Sisulizer support this? I tried Sisulizer output file option #4 - "Embedded resource DLLs", but I got three files under emb folder: originalDEU.dll, originalDEU.exe, and originalJPN.dll. If the option can work for me, how am I going to use these files? Am I supposed to have only one EXE file in this case? Thank you all for your reply.
|
|||||||||||||
| ||||||||||||||
| ||||||||||||||
|
Markus.Kreisel Administrator
|
Hi, please take a look at the option multilingual file (http://www.sisulizer.com/online-help/MfcResourceDllFiles.htm). If you use this Sisulizer creates one file with more than one language in it. Please also take a look at the samples coming with Sisulizer for C++. Best Markus
____________________ http://www.sisulizer.com - Three simple steps to localize |
|||||||||||||
| ||||||||||||||
|
||||||||||||||
|
danliu Member
|
Hi Markus, Thank you very much for your reply. Yes, you're right. I want to use Sisulizer to create one file with 3 languages in it, and also want to have the ability to load different languages at runtime based on the user's selections other than OS settings. Could you please let me know how to do it? I tried the samples for C++, and used Sisulizer to build it with option #4 - "Embedded resource DLLs", but again, I got ConverterJPN.dll, ConverterDEU.dll, ConverterFIN.exe, and ConverterFIN.dll in emb folder. I assume ConverterFIN.exe is the one that contains all resource DLLs, how can I extract them using C++ code? The Sisulizer help says "Sisulizer does not contain resource DLL extraction function for MFC. You have to write you own code to extract DLLs from resource to local files. " Could you please give me some clues or examples on how to extract DLLs from this ConverterFIN.exe? I appreciate your help. Dan
|
|||||||||||||
| ||||||||||||||
| ||||||||||||||
|
Markus.Kreisel Administrator
|
Hi Dan, I'm not a developer myself. I asked the developers to help with this. The problem to me seems to be the logic in the MFC. I googled a lot of posts regarding that. The only solutions I found deal with one EXE and one DLL for each language. The developers then load the DLL with the language they want and then use AfxSetResourceHandle to use the resource in it. I have not found a "AfxSetResourceHandleX" where you can choose between languages if they are stored in a DLL with multilingual resouces. The pity with multilanguage resources is, that the OS wants to choose the right language for you. That for now. I hope our developers have some better solution for you. Best Markus
____________________ http://www.sisulizer.com - Three simple steps to localize |
|||||||||||||
| ||||||||||||||
|
||||||||||||||
|
Markus.Kreisel Administrator
|
Hi Dan, I spoke the developers and it seems there is no easy solution for this at the moment. The combination of runtime langauge switch plus all languages in one DLL seems not be possible with MFC - at least I have not found some hint on the http://www. If multiple DLLs would be fine for you, the routine to load the needed one is like this: BOOL CMyApp::InitInstance() { //Default Application Wizard code. HINSTANCE hRes = NULL; hRes= LoadLibrary("ResourceD.dll"); if(hRes) AfxSetResourceHandle(hRes); //Rest of wizard code return CWinApp::InitInstance(); }[code]Depending on the language you choosed you have to load the matching DLL with LoadLibrary. Hope this helps. Best Markus
____________________ http://www.sisulizer.com - Three simple steps to localize |
|||||||||||||
| ||||||||||||||
| ||||||||||||||
|
danliu Member
|
Hi Markus, Thank you for your prompt reply. Like I said, I had no problems loading multiple DLLs at runtime with similar code you just provided. I guess the real question is, if I know how to extract resource from one DLL that contains multiple languages, can Sisulizer create such DLL for me? For example, my MFC EXE is test.exe, can Sisulizer create only one DLL, say test.dll, which contains 3 different languages? Best regards, Dan Last edited on Wed Apr 16th, 2008 06:34 pm by danliu |
|||||||||||||
| ||||||||||||||
|
||||||||||||||
|
Markus.Kreisel Administrator
|
Hi Dan, yes, that is possible with the multilanguage option (#2). You should make the DLL your main source and Sisulizer creates you a DLL with multiple languages. With Sisulizer V2008 there will be also support for multilingual RC files. Best Markus
____________________ http://www.sisulizer.com - Three simple steps to localize |
|||||||||||||
| ||||||||||||||
| ||||||||||||||
|
danliu Member
|
Thanks Markus! My understanding is that in option #2, if my EXE is test.exe, it will create a new EXE with the same name under a new "all" folder, and this new EXE will contain not only resources with all lanugages, but the source code as well. My manager wants to have the original EXE unchanged, and a new DLL with all languages, is that possible for Sisulizer? Regards, Dan
|
|||||||||||||
| ||||||||||||||
|
||||||||||||||
|
Markus.Kreisel Administrator
|
Yes, but the source then can not be "test.exe". Your source then has to be "test.dll" with one language. Sisulizer then can create you a new DLL with multiple resources = multiple languages. So you first have to move your resourcs from your EXE to a single language DLL. Then you can use Sisulizer to make a multilingual DLL with option #2. You still have to solve the problem how to load the right language table. MFC wants to have single DLLs for each languages. Sisulizer offers you the localization possibilities MFC has to offer. Your EXE or DLL can have multiple languages with MFC but the OS wants to switch themself which is the right one. The embedded option just means that multiple DLLs are inside your EXE and are written out at startup. Best Markus
____________________ http://www.sisulizer.com - Three simple steps to localize |
|||||||||||||
| ||||||||||||||
| ||||||||||||||
|
danliu Member
|
Hi Markus, Great! I tried what you said and got exactly what my manager wanted - one EXE and one DLL for all languages. Thank you for your help! Dan
|
|||||||||||||
| ||||||||||||||
|
||||||||||||||
|
Markus.Kreisel Administrator
|
Thanks for the positive feedback! I'm very glad that I could help you in the end. Sorry that I could point you faster to the point, but as I said, I'm not a developer myself ;-) Best Markus
____________________ http://www.sisulizer.com - Three simple steps to localize |
|||||||||||||
| ||||||||||||||
| Current time is 09:51 pm | |
| Localization Tool for VB, Delphi, .NET, C#, VB.NET, XML, Online Help, HTML ... > Technical Support (You need to be registered at the forum to write) > Usage - Three simple steps to localize > VC++ 6.0 MFC application - One EXE, one DLL for all languages. | |
Sisulizer software localization tool - Three simple steps to localize