Dela via


Använda sammansättningar med ett användargränssnitt för flera språk

Om du vill att användare av ditt program, eller kärn-DLL, ska kunna ändra språket i användargränssnittet bör du överväga att placera språkresurser i separata DLL:er för satellitresurser. Mer information om hur du använder DLL:er för satellitresurser finns i MUI (Multilanguage User Interface).

Varje satellit-DLL innehåller resurser för ett annat språk. Kärn-DLL kan tillhandahållas som en sammansättning och var och en av satellit-DLL:erna får tillhandahållas som separata satellitsammansättningar. I det här fallet bör varje satellitsammansättning ha ett eget självbeskrivande sammansättningsmanifest. Satellitsammansättningens manifest bör inte beskriva något beroende av andra sammansättningar. Alla beroenden av satellitsammansättningar på andra sammansättningar bör i stället beskrivas i huvudsammansättningens manifest.

Med MUI (Multilanguage User Interface) version av Windows kan användarna ange användargränssnittsspråket enligt sina inställningar, förutsatt att det språk som krävs har lagts till i systemet. En kärnsammansättning kan stödja flera språk med hjälp av flera MUI-sammansättningar. I det här fallet bör varje MUI-sammansättning ha sitt eget manifest och eventuella beroenden för andra sammansättningar bör endast beskrivas i kärnsammansättningens manifest.

Proseware.Sample.Pop kan till exempel vara en grundläggande sida vid sida-sammansättning som råkar vara beroende av proseware.Research.SampleAssembly-sammansättningen. Om Proseware.Sample.Pop använder MUI för att stödja flera språk kan separata MUI-sammansättningar tillhandahållas för varje språk. Varje MUI-sammansättning bör ha ett eget manifest som beskriver just den här satellitresursens DLL. MUI-sammansättningsmanifesten bör inte innehålla några referenser till beroenden på andra sammansättningar. Manifestet som beskriver kärnsammansättningen Proseware.Sample.Pop bör beskriva beroendet av Proseware.Sample.Pop i proseware.Research.SampleAssembly-sammansättningen.

Attributen för assemblyIdentity elementet i en satellitsammansättning liknar dem i manifestet för bassammansättningen. Attributet ska vara samma som bassammansättningen med tillägget "Resurser". Om namnet till exempel är "Proseware.Tools.SpellCheck.Runtime-Libraries" i bassammansättningen skulle namnet i resurssammansättningen vara "Proseware.Tools.SpellCheck.Runtime-Libraries.Resources". Attributet språk bör identifiera språket för resurssammansättningen. Attributet fil ska innehålla listan över filer som är resurs-DLL:er.

Följande är ett exempel på manifestet för Proseware.Tools.SpellCheck.Runtime-Libraries resurssammansättning.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        type="win32"
        name="Proseware.Tools.SpellCheck.Runtime-Libraries.Resources"
        version="6.0.0.0"
        processorArchitecture="X86"
        language="DE"
        publicKeyToken="0000000000000000"
    />
    <file name="sample.dll"/>
</assembly>

Bassammansättningen beskriver ett valfritt beroende av resurssammansättningen. I det här exemplet, om en användare kör Windows med nationella inställningar som är avsedda som tyska, skulle ett program som använder sammansättningen Proseware.Tools.SpellCheck visa text på tyska.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity type="win32" 
    name="Proseware.Tools.SpellCheck.Runtime-Libraries"
    version="6.0.0.0" processorArchitecture="x86"
    publicKeyToken="0000000000000000"/>
    <dependency optional="yes">
        <dependentAssembly>
            <assemblyIdentity type="win32" 
                              name="Proseware.Tools.SpellCheck.Runtime-Libraries.Resources" 
                              version="6.0.0.0" 
                              processorArchitecture="x86" 
                              publicKeyToken="0000000000000000" 
                              language="*"
            />
        </dependentAssembly>
    </dependency>