Più moduli di merge del linguaggio
Più moduli linguistici possono fornire componenti con diverse lingue come singolo file composto. La progettazione e la funzionalità di più moduli di unione del linguaggio sono simili a moduli a linguaggio singolo. Un modulo di unione di più lingue include più lingue elencate nella proprietà Riepilogo modelli . Il database di un modulo di unione di più lingue contiene tutte le informazioni di configurazione per più lingue. L'archivio Cab mergeModule.CABinet all'interno di un modulo di unione in più lingue contiene tutti i file per tutte le lingue supportate.
Quando si applica un file con estensione msm in più lingue a un file .msi, è necessario indicare la lingua finale del pacchetto di installazione dopo l'unione. Nel caso di un singolo modulo di unione del linguaggio, nella tabella File del modulo di merge sono elencati tutti i file presenti nell'archivio Cab MergeModule.CABinet. Nel caso di un modulo di unione in più lingue, MergeModule.CABinet contiene tutti i file per ogni lingua supportata dal modulo, ma solo il subset di file per la lingua finale viene inserito nella tabella File del modulo. Lo strumento di unione deve garantire che il modulo fornisca il subset di informazioni e file necessari per la lingua finale richiesta.
Ogni modulo di merge ha una lingua predefinita specificata nella colonna Language della tabella ModuleSignature. La lingua predefinita di un modulo di merge viene visualizzata anche come prima o solo lingua nella proprietà Riepilogo modelli . A seconda del linguaggio finale richiesto e del linguaggio predefinito del modulo, lo strumento di merge può applicare trasformazioni del linguaggio a un modulo di unione in più lingue in modo che possa essere aperto nella lingua richiesta o un'approssimazione della lingua richiesta. Le trasformazioni del linguaggio vengono incorporate all'interno del modulo di merge. Gli strumenti di merge devono applicare trasformazioni del linguaggio in conformità alle regole generali seguenti:
- Se le lingue predefinite e finali sono uguali, il modulo può essere unito senza usare trasformazioni del linguaggio.
- Se la lingua predefinita è 0 (un modulo indipendente dalla lingua), il modulo può essere unito senza usare trasformazioni del linguaggio.
- Se la lingua finale non è la lingua predefinita, lo strumento di unione deve applicare una delle trasformazioni del linguaggio incorporate nel modulo per modificare il modulo alla lingua finale o a un'approssimazione della lingua finale.
Ad esempio, non è necessaria alcuna trasformazione della lingua se la lingua finale è 1033 (inglese statunitense) e la lingua predefinita del modulo è 1033 (inglese statunitense), 0 (lingua neutra) o 9 (inglese generico).
Le trasformazioni della lingua sono necessarie se la lingua finale è 1033 (inglese (Stati Uniti) e la lingua predefinita è 1031 (tedesco). In questo caso, lo strumento di unione può cercare prima di tutto il modulo di più lingue una trasformazione della lingua incorporata in 1033 (inglese STATI UNITI). Se l'errore ha esito negativo, potrebbe quindi cercare una trasformazione in una lingua con un LANGID primario corrispondente, anche se il LANGID secondario non corrisponde. Ad esempio, se lo strumento non è in grado di trovare una trasformazione in 1033 (inglese degli Stati Uniti), cerca una trasformazione in 9 (inglese generico). Se l'errore ha esito negativo, lo strumento di unione cerca una trasformazione in 0 (indipendente dalla lingua). Se tutte queste ricerche hanno esito negativo per una trasformazione appropriata, l'apertura del modulo non riesce.
Per altre informazioni, vedere Creazione di più moduli di merge del linguaggio.