多种语言合并模块
多种语言模块可以将多个不同语言的组件作为单个复合文件提供。 多语言合并模块的设计和功能类似于单语言模块。 多语言合并模块在 模板摘要 属性中列出了多种语言。 多语言合并模块的数据库包含多种语言的所有设置信息。 多语言合并模块内的 MergeModule.CABinet 内阁包含所有受支持语言的所有文件。
将多种语言 .msm 文件应用于 .msi 文件时,必须在合并后指示安装包的最终语言。 对于单个语言合并模块,合并模块的 文件表 列出了 MergeModule.CABinet 内阁中存在的每个文件。 对于多种语言合并模块,MergeModule.CABinet 包含模块支持的每种语言的所有文件,但只有最终语言的文件子集进入模块的文件表。 合并工具必须确保模块提供请求的最终语言所需的信息和文件的子集。
每个合并模块在 ModuleSignature 表的语言列中指定了默认语言。 合并模块的默认语言也显示为 模板摘要 属性中的第一种语言或仅显示语言。 根据请求的最终语言和模块的默认语言,合并工具可以将语言转换应用于多种语言合并模块,以便可以在请求的语言中打开它,或请求语言的近似值。 语言转换嵌入在合并模块中。 合并工具必须按照以下常规规则应用语言转换:
- 如果默认语言和最终语言相同,则可以合并模块,而无需使用语言转换。
- 如果默认语言为 0(非特定语言模块),则无需使用语言转换即可合并该模块。
- 如果最终语言不是默认语言,则合并工具必须应用模块中嵌入的语言转换之一,以将模块更改为最终语言,或将最终语言近似化。
例如,如果最终语言为 1033(美国英语),并且模块的默认语言为 1033(美国英语)、0(非特定语言)或 9(通用英语),则不需要语言转换。
如果最终语言为 1033(美国英语),并且默认语言为 1031(德语),则需要语言转换。 在这种情况下,合并工具可能首先搜索多种语言模块,以便将嵌入式语言转换转换为 1033(美国英语)。 如果失败,则它可能会搜索使用匹配的主 LANGID 的语言的转换,即使辅助 LANGID 不匹配也是如此。 例如,如果该工具找不到转换为 1033(美国英语),则会搜索转换为 9(通用英语)。 如果此作失败,合并工具将搜索转换为 0(语言中性)。 如果所有这些搜索合适的转换失败,模块将无法打开。
有关详细信息,请参阅 创作多语言合并模块。