Compartir a través de


Uso de ensamblados con una interfaz de usuario multilanguage

Si quiere que los usuarios de la aplicación o dll principal puedan cambiar el idioma de la interfaz de usuario, debe considerar la posibilidad de colocar recursos de idioma en archivos DLL de recursos satélite independientes. Para obtener más información sobre el uso de archivos DLL de recursos satélite, consulte Interfaz de usuario multilanguage (MUI).

Cada DLL satélite contiene los recursos de un idioma diferente. El archivo DLL principal se puede proporcionar como un ensamblado y cada uno de los archivos DLL satélite se puede proporcionar como ensamblados satélite independientes. En este caso, cada ensamblado satélite debe tener su propio manifiesto de ensamblado autodescriptible. El manifiesto del ensamblado satélite no debe describir ninguna dependencia en otros ensamblados. En su lugar, cualquier dependencia de ensamblados satélite en otros ensamblados debe describirse en el manifiesto del ensamblado principal.

La versión multilanguage user Interface (MUI) de Windows permite a los usuarios especificar el idioma de la interfaz de usuario según sus preferencias, siempre que se haya agregado el idioma necesario al sistema. Un ensamblado principal puede admitir varios lenguajes mediante varios ensamblados MUI. En este caso, cada ensamblado MUI debe tener su propio manifiesto y las dependencias de otros ensamblados solo deben describirse en el manifiesto del ensamblado principal.

Por ejemplo, Proseware.Sample.Pop puede ser un ensamblado en paralelo principal que depende del ensamblado Proseware.Research.SampleAssembly. Si Proseware.Sample.Pop usa MUI para admitir varios lenguajes, se pueden proporcionar ensamblados MUI independientes para cada idioma. Cada ensamblado MUI debe tener su propio manifiesto que describa este archivo DLL de recursos satélite concreto. Los manifiestos del ensamblado MUI no deben incluir ninguna referencia a las dependencias de otros ensamblados. El manifiesto que describe el ensamblado principal, Proseware.Sample.Pop, debe describir la dependencia de Proseware.Sample.Pop en el ensamblado Proseware.Research.SampleAssembly.

Los atributos del elemento assemblyIdentity de un ensamblado satélite son similares a los del manifiesto del ensamblado base. El atributo name debe ser el mismo que el ensamblado base con la adición de "Resources". Por ejemplo, si el nombre es "Proseware.Tools.SpellCheck.Runtime-Libraries" en el ensamblado base, el nombre del ensamblado de recursos sería "Proseware.Tools.SpellCheck.Runtime-Libraries.Resources". El atributo language debe identificar el idioma del ensamblado de recursos. El atributo file debe incluir la lista de archivos que son archivos DLL de recursos.

A continuación se muestra un ejemplo del manifiesto para el ensamblado 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>

El ensamblado base describe una dependencia opcional en el ensamblado de recursos. En este ejemplo, si un usuario ejecuta Windows con la configuración regional designada como alemán, una aplicación que usa el ensamblado Proseware.Tools.SpellCheck mostrará texto en alemán.

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