Click here to Skip to main content
Click here to Skip to main content
Go to top

Multilingual Application - Change Application Language

, 17 Nov 1999
Rate this:
Please Sign up or sign in to vote.
Multilingual Application - Change Application Language

Introduction

Developing applications supporting multiple languages has always been a drag. With the possibility of including several languages into the rc file of a project, the problem is not entirely solved: The operating system is used as a base and decides what language your application is working with.

If as example, the resources contain English and German, the application will use the English resources on an American or British Windows system, and German on a German or Swiss (German) Windows version. Other language versions of Windows will use the default language (English in most cases).

This behavior is acceptable in most cases, but can cause some headaches: A French speaking person might prefer the German version of your application, but gets by default the English version. Under Windows NT and Windows 2000, there is a simple way of adding the functionality for switching between languages.

Please note: This will only work under NT 3.51 and Windows 2000. There were some problems using NT 4.0 SP3 (and earlier?) reported, but I could not confirm them.

Step 1.

Add the desired languages to your resources.

resources

Step 2.

Enhance your code as follows:

 // Place this code in InitInstance()
 m_lang = GetProfileInt("General","Language",0);
  if (m_lang == 0) {
    // switch language to english
    ::SetThreadLocale(MAKELCID(MAKELANGID(LANG_ENGLISH,
                       SUBLANG_DEFAULT),SORT_DEFAULT));
  }
  else {
    // switch language to german
    ::SetThreadLocale(MAKELCID(MAKELANGID(LANG_GERMAN,
                       SUBLANG_DEFAULT),SORT_DEFAULT));
  }
  //
  //
  // Add a menu or a toolbar button and attach this method 

  void CLanguageApp::OnLanguageTogglelanguage() 
  {
    if (m_lang == 0) {
      WriteProfileInt("General","Language",1);
    }
    else {
      WriteProfileInt("General","Language",0);
    }
    AfxMessageBox(IDS_RESTART); // tell the user to restart the application
  }

//

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Daniel Zuppinger
Chief Technology Officer
Switzerland Switzerland
Professional IT developer since 1983. First projects with Cobol, then Pascal, Modula2, C and since Visual C++ 1.0 also with C++. Works since 1986 as Consultant, between 1990 and 2008 for Infobrain in Switzerland, currently employed by enValue (also Switzerland).
Current field is the project management and development of software for Bank applications.
Married, two daughters, Hobbies : Paragliding, Orienteering, Mountainbiking, Photography

Comments and Discussions

 
QuestionI can't use in Russian Pinmembercoma3232-Dec-07 0:28 
GeneralPlease help Pinmembersreejith ss nair18-Sep-05 21:28 
Good Article.
 
I have a small doubt regarding Globalization/Localization. Hope you can help me out.
I have a web form application where i need to provide more than 50 different localized resource supports. Apart from this, my application supports rich use of stored data (Sql Server Database) and obviously have few list of Listing controls (Repeater , Grid etc).
 
My requirement comes like this,
 
a) I need to provide full localized language support in all data which is displaying in each and every page. Regardless of, the name of controls, content of controls etc. To be concise, which ever text that i am displaying through page, need to be localized based on user selected language.
 
b) Each and every setup needs to contain all supported languages. So user can switch and view content of site in different language.
 
I stuck in,
 
1) I am not sure how to localize stored data in database.
2) How will I give or from where i generate localized information for all supported language.
 
It would be grate if you can help me out through your valid comments.

 
Sreejith Nair
[ My Articles ]
QuestionHow about using French Pinmemberashish kumar patel1-Aug-05 19:19 
AnswerRe: How about using French PinmemberOphir15-Feb-06 10:46 
GeneralProblem with language=English(USA) Pinmemberachimschoen24-Apr-05 20:53 
GeneralGlobalization using .NET and Oracle 10g Pinmemberashit_barot21-Mar-05 18:58 
GeneralMircrosoft advise against this on 2000/XP PinmemberObliterator15-Dec-04 3:42 
GeneralUse external language packs instead of DLLs for supporting multilingual PinmemberHerman Kwan9-Aug-02 14:14 
QuestionHow about the Win95/98/ME Pinmembersandy16-Oct-01 4:56 
AnswerRe: How about the Win95/98/ME Pinmemberrudie7-Jan-03 22:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140921.1 | Last Updated 18 Nov 1999
Article Copyright 1999 by Daniel Zuppinger
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid