YOU CAN CODE!

 

With The Case Of UCanCode.net  Release The Power OF  Visual C++ !   HomeProducts | PurchaseSupport | Downloads  
Download Evaluation
Pricing & Purchase?
E-XD++Visual C++/ MFC Products
Overview
Features Tour 
Electronic Form Solution
Visualization & HMI Solution
Power system HMI Solution
CAD Drawing and Printing Solution

Bar code labeling Solution
Workflow Solution

Coal industry HMI Solution
Instrumentation Gauge Solution

Report Printing Solution
Graphical modeling Solution
GIS mapping solution

Visio graphics solution
Industrial control SCADA &HMI Solution
BPM business process Solution

Industrial monitoring Solution
Flowchart and diagramming Solution
Organization Diagram Solution

Graphic editor Source Code
UML drawing editor Source Code
Map Diagramming Solution

Architectural Graphic Drawing Solution
Request Evaluation
Purchase
ActiveX COM Products
Overview
Download
Purchase
Technical Support
  General Q & A
Discussion Board
Contact Us

Links

Get Ready to Unleash the Power of UCanCode .NET

 


UCanCode Software focuses on general application software development. We provide complete solution for developers. No matter you want to develop a simple database workflow application, or an large flow/diagram based system, our product will provide a complete solution for you. Our product had been used by hundreds of top companies around the world!

"100% source code provided! Free you from not daring to use components because of unable to master the key technology of components!"


Create Multiple Language to MFC Extension DLL Toolkit with Resource only
 

 
 

Introduction

Multilingual Library adds multiple UI languages' support to your MFC application. Multilingual library uses resource-only DLLs (sometimes called satellite DLLs) to keep translated resources, automatically selects appropriate language according to Microsoft Windows settings, and automatically generates a menu for inclusion in your application with a list of available languages to allow a user to change the language. The library is quite easy to use because only minimal changes to the source code are required and it works with both EXE and DLL

On the first run, Library finds available resource-only DLLs in the application directory, makes a list of available languages, and then selects the most suitable language according to Microsoft Windows language settings. It loads selected language UI resources from the corresponding resource-only DLL and then substitutes them for resources in the main EXE/DLL file. Toolkit saves the UI language setting in the Registry and the user can select other languages by using the menu from your application at any time.

Using the Code

Naming convention

To use Multilingual Library, you have to name satellite DLLs as Filename.LNG, where LNG is a two or three character code that identifies language (For example, English is EN, English-United States is ENU, and Russian is RU).

  1. Link to multilang.lib
  2. Initialize Multilingual Library
  3. Add language selection menu to your application.
  4. Add Multilingual Library to your application's DLL with resources.
  5. Create and translate resource-only DLLs

Add Multilingual Library for resource-only DLLs to an EXE MFC application

Link MFC application to Lingobit Localization Toolkit

  1. On the Project menu, click YourProjectName Properties.
  2. On the left pane, select Linker and then Input.
  3. On the right pane, select Additional Dependencies.
  4. Add path to multilang.lib to the Additional Dependencies.

Changes to the source code of executable file (*.exe)

  1. Add the following line to the beginning of MainFrm.cpp:
    #include "MultiLang.h"
  2. Add the following code between BEGIN_MESSAGE_MAP ( CMainFrame , CFrameWnd ) and END_MESSAGE_MAP () in MainFrm .cpp:
    ON_COMMAND_RANGE(ID_LANGUAGE_FIRST,
                     ID_LANGUAGE_FIRST+MAX_LANGUAGES,
                     OnLanguageFirst)
    ON_UPDATE_COMMAND_UI_RANGE(ID_LANGUAGE_FIRST,
                               ID_LANGUAGE_FIRST+MAX_LANGUAGES,
                               OnUpdateLanguageFirst)
    
  3. Add the following code to the MainFrm.cpp:
    void CMainFrame :: OnLanguageFirst ( UINT nID )
    {
       MultiLangOnClickMenu ( nID );
       AfxMessageBox ( _T ("Please restart application for
                            changes to take effect"));
    }
    
    void CMainFrame :: OnUpdateLanguageFirst
       ( CCmdUI * pCmdUI )
    {
       MultiLang UpdateMenu ( pCmdUI );
    }
    
  4. Add the following lines to the stdafx.h:
    #define ID_LANGUAGE_FIRST 32000
    #define MAX_LANGUAGES 100
    

    IDs from ID_LANGUAGE_FIRST to ID_LANGUAGE_FIRST+MAX_LANGUAGES will be used by thr Multilang Toolkit and should not be used for other purposes in your application.

  5. Add a menu item with ID_LANGUAGE_FIRST to the application menu.
  6. Add the following line to the beginning of YourApplicationName.cpp:
    #include "MultiLang.h"
  7. Call the Multilang Library initialization after CWinApp::InitInstance() in the InitInstance() function in YourApplicationName.cpp.
     
    MultiLangInitLocalization(ID_LANGUAGE_FIRST,
       MAX_LANGUAGES,
       HKEY_CURRENT_USER,
       "Software/YourCompanyName/YourProductName",
       "GUILanguage");
    

Add the Multilingual Toolkit for resource-only DLLs to the MFC extension DLL

Link the MFC Extension DLL to Lingobit Localization Toolkit:

  1. On the Project menu, click YourProjectName Properties.
  2. On the left pane, select Linker and then Input.
  3. On the right pane, select Additional Dependencies.
  4. Add a path to multilang.lib to the Additional Dependencies.

Changes to the source code of the MFC Extension DLLs files:

  1. Add the following line to the beginning of YourDLLName.cpp:
    #include "MultiLang.h"
  2. Add the following line between
    if (!AfxInitExtensionModule(YourDLLNameDLL, hInstance))
       return 0;
    

    and

    new CDynLinkLibrary(YourDLLNameDLL);

    in the DllMain function in YourDllName.cpp.

    YourDLLNameDLL.hResource = MultiLangLoadLibrary(hInstance,
       HKEY_CURRENT_USER,
       "Software/YourCompanyName/YourProductName",
       "GUILanguage");
    

Create a Resource-Only DLL

There are several ways to create resource-only DLLs.

Manual creation of resource-only DLLs

To create a resource-only DLL, follow these steps:

  1. Create an empty DLL project.
    • In Visual Studio 6, create a "Win32 Dynamic-Link Library" with "An empty DLL project" selected.
    • In VS .NET or VS 2005, use "Win32 Project" in the "Visual C++ Projects" group, and select Application type "DLL" under "Application Settings".
  2. Add the linker option /NOENTRY to the linker settings for each build.
    • In VS 6, add "/NOENTRY" to the "Project Options" edit field in the Project Settings/Linker/Customize tab of the "Project Settings" dialog.
    • In VS.NET or VS 2005, add "/NOENTRY" to the "Additional Options" edit field in the Configuration Properties/Linker/Command line tab of the project properties dialog.
  3. Create a resource file.
    • In VS 6, create a new "Resource Script" and enter a file name with the extension ".rc".
    • In VS .NET or VS 2005, create a new "Resource File (.rc)" and enter a file name with the extension ".rc".
  4. Copy all the native-language resources from your application to your new resource file.
  5. Change the language of each resource to that of the resource-only DLL, and change the text, dialogs, and bitmaps as required.

For more information, see the "resource-only DLLs" topics in MSDN help.

Automatic Creation of Resource-Only DLLs

You can use Lingobit Localizer, an innovative software localization tool, to simplify and speed up creation of resource-only DLLs. Lingobit Localizer creates resource-only DLLs in three easy steps without any changes to the source code. Lingobit Localizer not only helps with creation of resource-only DLLs, but also assists in localizability testing, translation, QA checks, and collaboration with translators. You can read about it at http://www.lingobit.com/tutorial/resourceonlydll/.

Points of Interest

  1. Lingobit Localizer - Software Localization Toolkit
  2. MSDN

History

2006-06-30: Multilingual Library 1.0 is released.

Downloads
 

  • multilang_bin.zip - Binary Files
     
  • multilang_src.zip - Source Files
  •  

    Copyright ?1998-2022 UCanCode.Net Software , all rights reserved.
    Other product and company names herein may be the trademarks of their respective owners.

    Please direct your questions or comments to webmaster@ucancode.net