Supporting Multiple Languages in a Single Application (130057)



The information in this article applies to:

  • Microsoft Windows Software Development Kit (SDK) 3.1

This article was previously published under Q130057

SUMMARY

It is not trivial to support multiple languages in a single Windows-based application. Unlike Windows NT, Windows has no built-in support for different language versions of a single resource.

MORE INFORMATION

The easiest way to do it and the way it is done for Windows itself and all our localized Windows-based applications, is to have separate executables for each language (English, German, French, and so on) version.

However, it is possible to create a single executable that supports multiple language resources. For example, you could have a separate DLL containing the resources for different language versions of your application. You can link a specific version of DLL in runtime.

The language selection should be an install-time option, because there is no official way to identify the host language. The application needs to ask the user to confirm what the application has found.

All the messages and system errors generated by Windows, regardless of your resource files, will displayed as the local language error messages.

If an application needs to have one resource file, the developer must create a unique resource ID for each language version of the resource, and then load the appropriate resource depending on the language. For example, the following string table could be created:
   IDS_HELLO_ENGLISH, "Hello"
   IDS_HELLO_GERMAN, "Hallo"
				
The application would then either load the English string or the German string as required.

There is no documentation on this subject because it is not a feature of Windows. There is a new book out that has a chapter on internationalizing applications. It is written in a friendly manner. Microsoft Windows 3.1 Developer's Workshop by Dr. John Butler; it's published by Microsoft Press. In addition, the Microsoft Developer Relations Group is currently revising "The International Handbook."

Modification Type:MajorLast Reviewed:11/6/1999
Keywords:KB130057