Condividi tramite


Uso di assembly con un'interfaccia utente multilanguage

Se si vuole che gli utenti dell'applicazione o della DLL principale siano in grado di modificare il linguaggio dell'interfaccia utente, è consigliabile inserire le risorse della lingua in DLL di risorse satellite separate. Per altre informazioni sull'uso di DLL di risorse satellite, vedere Multilanguage User Interface (MUI).For more information about using satellite resource DLL, see Multilanguage User Interface (MUI).

Ogni DLL satellite contiene le risorse per un linguaggio diverso. La DLL principale può essere fornita come assembly e ognuna delle DLL satellite può essere fornita come assembly satellite separati. In questo caso, ogni assembly satellite deve avere il proprio manifesto dell'assembly autodescrittura. Il manifesto dell'assembly satellite non deve descrivere alcuna dipendenza da altri assembly. Tutte le dipendenze degli assembly satellite su altri assembly devono essere descritte nel manifesto dell'assembly principale.

La versione Multilanguage User Interface (MUI) di Windows consente agli utenti di specificare la lingua dell'interfaccia utente in base alle proprie preferenze, purché la lingua richiesta sia stata aggiunta al sistema. Un assembly di base può supportare più linguaggi usando più assembly MUI. In questo caso, ogni assembly MUI deve avere il proprio manifesto e le eventuali dipendenze da altri assembly devono essere descritte solo nel manifesto dell'assembly principale.

Ad esempio, Proseware.Sample.Pop può essere un assembly side-by-side core che dipende dall'assembly Proseware.Research.SampleAssembly. Se Proseware.Sample.Pop usa MUI per supportare più lingue, è possibile specificare assembly MUI separati per ogni linguaggio. Ogni assembly MUI deve avere il proprio manifesto che descrive questa specifica DLL di risorse satellite. I manifesti dell'assembly MUI non devono includere riferimenti alle dipendenze da altri assembly. Il manifesto che descrive l'assembly principale, Proseware.Sample.Pop, deve descrivere la dipendenza di Proseware.Sample.Pop nell'assembly Proseware.Research.SampleAssembly.

Gli attributi dell'elemento assemblyIdentity di un assembly satellite sono simili a quelli nel manifesto dell'assembly di base. L'attributo name deve corrispondere all'assembly di base con l'aggiunta di "Resources". Ad esempio, se il nome è "Proseware.Tools.SpellCheck.Runtime-Libraries" nell'assembly di base, il nome nell'assembly di risorse sarà "Proseware.Tools.SpellCheck.Runtime-Libraries.Resources". L'attributo language deve identificare la lingua dell'assembly di risorse. L'attributo file deve includere l'elenco di file dll di risorse.

Di seguito è riportato un esempio del manifesto per l'assembly di risorse Proseware.Tools.SpellCheck.Runtime-Libraries.

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

L'assembly di base descrive una dipendenza facoltativa dall'assembly di risorse. In questo esempio, se un utente esegue Windows con le impostazioni locali designate come tedesco, un'applicazione che usa l'assembly Proseware.Tools.SpellCheck visualizzerà il testo in tedesco.

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