Модули слияния с несколькими языками
Несколько языковых модулей могут предоставлять компоненты с несколькими разными языками в виде одного составного файла. Дизайн и функциональность модулей слияния нескольких языков похожи на модули с одним языком. Модуль слияния с несколькими языками содержит несколько языков, перечисленных в свойстве Сводка шаблона . База данных модуля слияния с несколькими языками содержит все сведения о настройке для нескольких языков. Шкаф MergeModule.CABinet внутри модуля слияния с несколькими языками содержит все файлы для всех поддерживаемых языков.
При применении MSM-файла на нескольких языках к файлу .msi необходимо указать окончательный язык пакета установки после слияния. В случае с модулем слияния с одним языком в таблице File модуля слияния перечислены все файлы, присутствующие в кабинете MergeModule.CABinet. В случае модуля слияния с несколькими языками MergeModule.CABinet содержит все файлы для каждого языка, поддерживаемого модулем, но только подмножество файлов для конечного языка попадает в таблицу File модуля. Средство слияния должно гарантировать, что модуль предоставляет подмножество сведений и файлов, необходимых для запрошенного конечного языка.
Каждый модуль слияния имеет язык по умолчанию, указанный в столбце Язык таблицы ModuleSignature. Язык по умолчанию модуля слияния также отображается в качестве первого или единственного языка в свойстве Сводка шаблона . В зависимости от запрошенного конечного языка и языка модуля по умолчанию средство слияния может применять преобразования языка к модулю слияния с несколькими языками, чтобы его можно было открыть на запрошенном языке или приблизить запрошенный язык. Преобразования языка внедряются в модуль слияния. Средства слияния должны применять преобразования языка в соответствии со следующими общими правилами:
- Если языки по умолчанию и конечные языки совпадают, модуль можно объединить без использования преобразований языка.
- Если язык по умолчанию равен 0 (не зависящий от языка модуль), модуль можно объединить без использования преобразований языка.
- Если конечный язык не является языком по умолчанию, средство слияния должно применить одно из преобразований языка, внедренных в модуль, чтобы изменить модуль на конечный язык или приблизить конечный язык.
Например, преобразование языка не требуется, если конечный язык — 1033 (английский (США) и язык по умолчанию для модуля : 1033 (английский (США), 0 (нейтральный язык) или 9 (универсальный английский язык).
Преобразование языка требуется, если конечный язык — 1033 (английский (США) и язык по умолчанию — 1031 (немецкий). В этом случае средство слияния может сначала выполнить поиск в модуле на нескольких языках для внедренного преобразования языка в 1033 (английский (США). Если это не удается, он может выполнить поиск преобразования в язык с соответствующим первичным LANGID, даже если дополнительный LANGID не совпадает. Например, если средству не удается найти преобразование в 1033 (английский (США), оно выполняет поиск преобразования в значение 9 (универсальный английский). Если это не удается, средство слияния ищет преобразование в 0 (не зависящий от языка). Если все эти поиски подходящего преобразования завершаются ошибкой, модуль не открывается.
Дополнительные сведения см. в статье Создание модулей слияния с несколькими языками.