Freigeben über


Verwenden von Assemblys mit einer Multilanguage-Benutzeroberfläche

Wenn Sie möchten, dass Benutzer Ihrer Anwendung oder der Kern-DLL die Sprache der Benutzeroberfläche ändern können, sollten Sie die Sprachressourcen in separate Satellitenressourcen-DLLs platzieren. Weitere Informationen zur Verwendung von Satellitenressourcen-DLLs finden Sie unter Multilanguage User Interface (MUI).

Jede Satelliten-DLL enthält die Ressourcen für eine andere Sprache. Die Kern-DLL kann als Assembly bereitgestellt werden, und jede der Satelliten-DLLs kann als separate Satellitenassemblys bereitgestellt werden. In diesem Fall sollte jede Satellitenassembly über ein eigenes selbst beschreibende Assemblymanifest verfügen. Das Manifest der Satellitenassembly sollte keine Abhängigkeit von anderen Assemblys beschreiben. Jede Abhängigkeit von Satellitenassemblys auf anderen Assemblys sollte stattdessen im Manifest der Kernassembly beschrieben werden.

Mit der MuI-Version (Multilanguage User Interface, MUI) von Windows können Benutzer die Benutzeroberflächensprache entsprechend ihrer Einstellungen angeben, sofern die erforderliche Sprache dem System hinzugefügt wurde. Eine Kernassembly kann mehrere Sprachen unterstützen, indem mehrere MUI-Assemblys verwendet werden. In diesem Fall sollte jede MUI-Assembly über ein eigenes Manifest verfügen und alle Abhängigkeiten von anderen Assemblys nur im Manifest der Kernassembly beschrieben werden.

Beispielsweise kann Proseware.Sample.Pop eine kernseitige Nebenassembly sein, die von der Proseware.Research.SampleAssembly-Assembly abhängig ist. Wenn Proseware.Sample.Pop MUI verwendet, um mehrere Sprachen zu unterstützen, können separate MUI-Assemblys für jede Sprache bereitgestellt werden. Jede MUI-Assembly sollte ihr eigenes Manifest haben, das diese bestimmte Satellitenressourcen-DLL beschreibt. Die MUI-Assemblymanifeste sollten keinen Verweis auf Abhängigkeiten von anderen Assemblys enthalten. Das Manifest, das die Kernassembly proseware.Sample.Pop beschreibt, sollte die Abhängigkeit von Proseware.Sample.Pop auf der Proseware.Research.SampleAssembly-Assembly beschreiben.

Die Attribute des AssemblyIdentity-Elements einer Satellitenassembly ähneln denen im Manifest der Basisassembly. Das Name-Attribut sollte identisch mit der Basisassembly mit dem Hinzufügen von "Ressourcen" sein. Wenn der Name beispielsweise "Proseware.Tools.SpellCheck.Runtime-Libraries" in der Basisassembly lautet, wäre der Name in der Ressourcenassembly "Proseware.Tools.SpellCheck.Runtime-Libraries.Resources". Das Sprachattribut sollte die Sprache der Ressourcenassembly identifizieren. Das Dateiattribut sollte die Liste der Dateien enthalten, die Ressourcen-DLLs sind.

Nachfolgend sehen Sie ein Beispiel für das Manifest für Proseware.Tools.SpellCheck.Runtime-Libraries-Ressourcenassembly.

<?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>

Die Basisassembly beschreibt eine optionale Abhängigkeit von der Ressourcenassembly. Wenn ein Benutzer in diesem Beispiel Windows mit dem als Deutsch bezeichneten Gebietsschema ausführt, wird eine Anwendung mit der Proseware.Tools.SpellCheck-Assembly Text in Deutsch angezeigt.

<?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>