Authoring a Language Transform for a Multiple Language Merge Module

When a module is merged into an database that has a different default language, the merge tool may need to apply a language transform to the module to provide the final language. For more information, see Multiple Language Merge Modules.

The language transforms are stored in the module's .msm file and must have the name and format: MergeModule.Lang####. The #### represents the up-to four digit LANGID of the final language. For example, MergeModule.Lang1033, MergeModule.Lang9, and MergeModule.Lang0 for transforms to US English, world English, and language neutral. These are the same as Embedded Transforms and you can add them to substorages in the .msm file.

The language transform should do the following:

  • Change the default language in the Language column of the ModuleSignature table to the new language of the module.
  • Change the default language in the Language column of the ModuleComponents table to the new language of the module. The transform may add or remove rows from this table.
  • If necessary, change the language in the RequiredLanguage column, or add or delete rows, to the ModuleDependency table.
  • If necessary, change the language in the ExcludedLanguage column, or add or delete rows, to the ModuleExclusion table.
  • The transform may perform any valid transform operations on the module, including adding or removing components, files, registry entries, or actions.

Note that applying a language transform when opening the module does not change the default language or the languages supported by the module, it just changes the language that is being requested. Therefore the Template Summary property does not change, it should already list all of the languages supported by the module with the default language listed first.

All files needed by all possible language transforms are commonly stored in a single cabinet file included with the module. Because it is not practical to have the language transform modify this cabinet file, it is best to use a global file sequence in the cabinet file, File table, and language transform. For details, see Ordering the File Sequence in the CAB of a Multiple Language Merge Module