Partager via


Utilisation d’assemblys avec une interface utilisateur multilingue

Si vous souhaitez que les utilisateurs de votre application, ou de votre DLL principale, soient capables de modifier la langue de l’interface utilisateur, vous devez envisager de placer les ressources de langue dans des DLL de ressources satellites distinctes. Pour plus d’informations sur l’utilisation des DLL de ressources satellites, consultez Multilanguage User Interface (MUI).

Chaque DLL satellite contient les ressources d’une langue différente. La DLL principale peut être fournie en tant qu’assembly et chacune des DLL satellites peut être fournie en tant qu’assemblys satellites distincts. Dans ce cas, chaque assembly satellite doit avoir son propre manifeste d’assembly auto-décrivant. Le manifeste de l’assembly satellite ne doit décrire aucune dépendance vis-à-vis d’autres assemblys. Toute dépendance d’assemblys satellites à d’autres assemblys doit plutôt être décrite dans le manifeste de l’assembly principal.

La version d’interface utilisateur multilingue (MUI) de Windows permet aux utilisateurs de spécifier la langue de l’interface utilisateur en fonction de leurs préférences, à condition que la langue requise ait été ajoutée au système. Un assembly principal peut prendre en charge plusieurs langues à l’aide de plusieurs assemblys MUI. Dans ce cas, chaque assembly MUI doit avoir son propre manifeste et toutes les dépendances sur d’autres assemblys doivent être décrites uniquement dans le manifeste de l’assembly principal.

Par exemple, Proseware.Sample.Pop peut être un assembly côte à côte principal qui dépend de l’assembly Proseware.Research.SampleAssembly. Si Proseware.Sample.Pop utilise MUI pour prendre en charge plusieurs langues, des assemblys MUI distincts peuvent être fournis pour chaque langue. Chaque assembly MUI doit avoir son propre manifeste décrivant cette DLL de ressource satellite particulière. Les manifestes d’assembly MUI ne doivent pas inclure de référence aux dépendances sur d’autres assemblys. Le manifeste décrivant l’assembly principal, Proseware.Sample.Pop, doit décrire la dépendance de Proseware.Sample.Pop à l’assembly Proseware.Research.SampleAssembly.

Les attributs de l’élément assemblyIdentity d’un assembly satellite sont similaires à ceux du manifeste de l’assembly de base. L’attribut name doit être identique à l’assembly de base avec l’ajout de « Resources ». Par exemple, si le nom est « Proseware.Tools.SpellCheck.Runtime-Libraries » dans l’assembly de base, le nom dans l’assembly de ressource est « Proseware.Tools.SpellCheck.Runtime-Libraries.Resources ». L’attribut language doit identifier la langue de l’assembly de ressources. L’attribut de fichier doit inclure la liste des fichiers qui sont des DLL de ressources.

Voici un exemple de manifeste pour l’assembly de ressources 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 de base décrit une dépendance facultative sur l’assembly de ressources. Dans cet exemple, si un utilisateur exécute Windows avec les paramètres régionaux désignés comme allemands, une application utilisant l’assembly Proseware.Tools.SpellCheck affiche du texte en allemand.

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