多语言合并模块

多语言模块可以将具有多种不同语言的组件作为单个复合文件提供。 多语言合并模块的设计和功能类似于单语言模块。 多语言合并模块在 Template Summary 属性中列出了多种语言。 多语言合并模块的数据库包含多种语言的所有设置信息。 多语言合并模块中的 Cabinet 文件 MergeModule.CABinet 包含所有受支持语言的所有文件。

将多语言 .msm 文件应用于 .msi 文件时,必须在合并后指示安装包的最终语言。 对于单语言合并模块,合并模块的 File 表列出了 Cabinet 文件 MergeModule.CABinet 中存在的每个文件。 对于多语言合并模块,MergeModule.CABinet 包含模块支持的每种语言的所有文件,但只有最终语言的部分文件进入模块的 File 表中。 合并工具必须确保模块提供了请求的最终语言所需的部分信息和文件。

每个合并模块都有在 ModuleSignature 表的 Language 列中指定的默认语言。 合并模块的默认语言也显示为 Template Summary 属性中的第一种或唯一语言。 根据请求的最终语言和模块的默认语言,合并工具可能会将语言转换应用于多语言合并模块,使其可以使用请求语言或请求语言的近似语言打开它。 语言转换嵌入在合并模块中。 合并工具必须遵循以下一般规则应用语言转换:

  • 如果默认语言和最终语言相同,则无需使用语言转换即可合并该模块。
  • 如果默认语言为 0(非特定语言模块),则无需使用语言转换即可合并该模块。
  • 如果最终语言不是默认语言,合并工具必须应用模块中嵌入的一种语言转换,将模块更改为最终语言或最终语言的近似语言。

例如,如果最终语言为 1033(美国英语)且模块的默认语言为 1033(美国英语)、0(非特定语言)或 9(通用英语),则无需语言转换。

如果最终语言为 1033(美国英语)且默认语言为 1031(德语),则需要语言转换。 在这种情况下,合并工具可能首先在多语言模块中搜索向 1033(美国英语)的嵌入式语言转换。 如果该操作失败,它随后可能会搜索向具有匹配的主 LANGID 的语言的转换(即使次 LANGID 不匹配)。 例如,如果工具找不到向 1033(美国英语)的转换,它将搜索向 9(通用英语)的转换。 如果此操作失败,合并工具将搜索向 0(非特定语言)的转换。 如果对合适转换的所有这些搜索都失败,模块将无法打开。

有关详细信息,请参阅创作多语言合并模块