Multilingual Applications - Switching Languages

Environment: Windows NT 4, Windows 2000

The support for multiple languages within one application has always been a drag, for NT 4.0 and Window 2000 I have fond a simple solution. Unfortunatley this does not work for Windows 95 or 98 :-(

1. Add all the resources (dialogs, strings, menues etc.) in all of the desired languages in your project.

2. Add a menu, or language selection dialog in your project which calls the code shown below.

3. Thats it.



   // switch language to german
   ::SetThreadLocal(MAKELCID(MAKELANGID(LANG_GERMAN,SUBLANG_DEFAULT),SORT_DEFAULT));
   ...
   // or back to english
   ::SetThreadLocal(MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_DEFAULT),SORT_DEFAULT));

History



Comments

  • This API is not present in eMbedded VC++

    Posted by Legacy on 08/07/2003 12:00am

    Originally posted by: Amit Shinde

    hi,

    this api is not present in evc++ so how can i implement this functionality.

    Reply
  • Don't you mean SetThreadLocale

    Posted by Legacy on 05/29/2003 12:00am

    Originally posted by: Will

    Don't you mean SetThreadLocale instead of SetThreadLocal
    It really bugs me when people don't post example projects.
    SORT IT OUT you fool

    Reply
  • Easy way for switching languages with DLLs

    Posted by Legacy on 06/27/2001 12:00am

    Originally posted by: Robin Holenweger

    Hi

    In my last project I was responsible for GUI development and NLS. I've found another way. The only disadvantage is, that you have to buy another software: a so called "localization tool".
    What I did is to extract all resources into a DLL which can be loaded at runtime (on-the-fly). So it's possible to load any language specific resource DLL at any time to change the language. No modifications to other code than just unloading the current and loading the new DLL.
    Advantages:
    - you only have to make a resource change once, e.g. if you change a dialog, you don't have to do this change in all other languages. Just generate the new DLLs
    - it's easy to give a text file or excel sheet to a translator and to use these files as a glossary to generate destination DLLs.
    - often there exist the possibility in these tools to autotranslate

    For those who don't want to buy another software: it's also possible to modify the DLLs with Visual Studio but then it's almost the same as in this article.


    • Multilingual application.

      Posted by purish87 on 04/08/2009 02:18am

      Your solution is quite interesting. Can u provide any sample application for help? Is there any way to change the text of Afxmessagebox() using this?

      Reply
    Reply
  • Multilingual Applications - Switching Languages

    Posted by Legacy on 12/16/1999 12:00am

    Originally posted by: Peter Boenigk

    Es will nicht funktionieren, haben Sie Bitte evtl. ein
    Programmbeispiel

    Reply
  • Changing language in Windows 9x

    Posted by Legacy on 06/22/1999 12:00am

    Originally posted by: Pierre Couderc

    Ok, it is impossible.

    The way we have found is to change in the registry HKEY_USERS,".DEFAULT\\Control Panel\\Desktop\\ResourceLocale"

    which is filled with a MAKELANGID()

    Changed there, it seems to keep the new language after... a reboot of Win9x.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • By now you've likely heard of Agile development and building products in small incremental pieces, so you can get real feedback along the way. In fact, you may even be considering using Agile on your next project. But where do you start? Agile can take a lot of forms, such as Scrum or Kanban. Each form has advantages and disadvantages, but both will help your team get the right feedback they need to build great products. Read this white paper to find out which one is right for you.

  • Live Event Date: July 8, 2015 @ 2:00 p.m. ET / 11:00 a.m. PT With business driving the increasing adoption of agile methodologies such as Continuous Integration and Continuous Deployment, the need for agile database tooling has become even more important. In many companies, the database development lifecycle has become the bottleneck in an otherwise agile delivery process. As such, database professionals are under increasing pressure to shorten delivery timelines even further, only increasing the stakes …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date