MAKEMSI quickly and reliably creates MSI files in a non-programmatic way
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
[Bottom][Contents][Prev]: Uninstalling PER-USER Resources[Next]: Logging
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
\->Windows Installer FAQ (the basics)->Internationalization

Internationalization

I have little experience in this area so I will start with the basics and add as I learn (or am told) more I will add to the information here.

You will be wanting to do one of two things:

  1. Create an installer for a specific language.

  2. Create (one or more) installers for a number of languages.

See the installed sample "TryMeDutch.MM" for one way a dutch language installer could be created.

Information Sources

For more information you can also see the following sections in the platform SDK documentation:

Search the archives of these forums:

There is an undocumented way of imbedding language transforms inside an MSI and having these automatically applied, this is documented at "http://www.installsite.org/pages/en/msi/articles/embeddedlang/".

MAKEMSI HELP

Windows Installer has two places where code page information is stored, see the following MAKEMSI commands:

  1. CodePage
  2. Summary

There is a hook which can be used to add logic just after the template MSI is read in (named "COMPANY_IMMEDIATELY_AFTER_TEMPLATE_MSI_OPENED"), this may be useful (for example for importing language specific ".idt" files).

Its possible that MAKEMSI is also adding english text which while probably configurable may not be simple, let me know of these issues and I will correct them (one way of handling this without changing the code might be to do post-processing - making specific changes to specific table rows, this is what "TryMeDutch.MM" does).

You should also be aware of the possible need to set the "MAKEMSI_MM_CODEPAGE" environment variable.

Translations

The Windows Installer SDK includes some ".IDT" files with differing text for a range of languages. In my case these were in the "C:\Program Files\Microsoft Platform SDK\Samples\SysMgmt\Msi\database\INTL directory.

These SDK files are for the "ActionText" and "Error" tables and could be copied and imported using the "TableImportFromIdt" command. From the "read me" file:

    This folder contains default international strings for error and action text database fields in the form of .idt files. Developers should merge one of these into their schema file to get the resources for their language. For more information see the help files "Localizing a Windows Installer Package" and "Localizing the Action and Text Tables" in the SDK documentation.

Other tables containing text requiring conversion are:

If you supply ".IDT" files, I can include these in newer versions of the MAKEMSI tool or perhaps a separate download.

MAKEMSI Text

I need to do something about the English Text MAKEMSI inserts, in a lot of cases this is default text which you can change but not always.

The "uisample.mmh" header does a lot of "playing", you can selectively disable this, for anything else you may wish to "touch it up" afterwards, so put you cleanup coe in a macro called "UISAMPLE_HOOK_FINISHED_UI_UPDATES".

One Installer for multiple Languages

One common way of handling this is with transforms. You have one base MSI and a transform for each language.


Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.Please email me any feedback, additional information or corrections.
See this page online (look for updates)

[Top][Contents][Prev]: Uninstalling PER-USER Resources[Next]: Logging


MAKEMSI© is (C)opyright Dennis Bareis 2003-2008 (All rights reserved).
Sunday February 28 2016 at 3:45pm
Visit MAKEMSI's Home Page
Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.