Empaquetage de ressources
Jusqu'ici, ce didacticiel supposait que vous utilisiez une seule langue par défaut pour vos ressources. À présent, le scénario se complique : il met en scène des ensembles parallèles de ressources pour plusieurs cultures. Ceci vous permet de construire une seule application exécutée dans plusieurs cultures. En d'autres termes, en détectant la culture de l'utilisateur et en chargeant les ressources appropriées au moment de l'exécution, l'application peut être personnalisée. Cette approche permet également de modifier des ressources — éventuellement en mettant à jour une chaîne ou en ajoutant une culture — sans une nouvelle compilation et distribution de l'ensemble de l'application. Ceci est particulièrement utile lorsque les ressources se trouvent dans un répertoire partagé, et que plusieurs utilisateurs peuvent automatiquement récupérer les modifications.
Les deux exemples d'applications localisées comprises dans ce didacticiel (WorldCalc et Graphic) utilisent des assemblys satellites privés. Le terme « privés » signifie qu'ils ne sont pas placés dans le cache de l'assembly global ; le terme « satellite » signifie qu'il s'agit d'assemblys de ressources uniquement (ou DLL) utilisés avec un assembly principal, dans lequel se trouve le code de l'application. L'assembly principal contient également les ressources de culture par défaut ou neutre, utilisées lorsqu'il n'existe pas de ressource localisée particulière. Les ressources de l'assembly principal se trouvent dans le répertoire de l'application, dans les fichiers .resources et sont incorporées dans l'assembly par le compilateur. Elles peuvent également être incorporées par la suite à l'aide de l'outil Assembly Generation Tool (AL).
**Remarque **Pour plus d'informations sur AL, consultez Annexe B : Outils pour les ressources.
Si les assemblys de ressources doivent être partagés, ce qui signifie qu'ils se trouveront dans le GAC et pourront être utilisés par plusieurs applications, il est nécessaire de leur attribuer un nom fort en leur fournissant une clé et des informations supplémentaires sur la version. De plus, il est possible d'ajouter l'attribut SatelliteContractVersionAttribute, pour pouvoir créer des versions des assemblys de ressources satellites, indépendants de l'assembly principal et ne nécessitant pas l'utilisation de fichiers de stratégie de configuration. Pour plus d'informations sur les assemblys avec nom fort, consultez Empaquetage et déploiement d'applications .NET Framework.
Si vous examinez chacune de ces applications, notez qu'il existe une série de sous-répertoires sous le répertoire de l'application, que chaque sous-répertoire possède un nom correspondant à une balise de culture et contient les informations brutes sur les ressources, ainsi que l'assembly satellite correspondant, si celui-ci est créé. Cette disposition met en évidence deux points importants : un assembly particulier peut contenir des ressources pour une seule culture, et les ressources de chaque culture sont stockées dans un sous-répertoire distinct, qui est nommé après la balise de la culture.
Chaînes — La localisation des chaînes est illustrée dans l'exemple WorldCalc. Les chaînes sont stockées dans des paires nom-valeur dans des fichiers appelés MyStrings.txt dans le répertoire de l'application (pour l'anglais par défaut) et les deux cultures localisées (de pour l'allemand et de-CH pour le suisse-allemand).
Le processus de création (dans Build.bat) de l'application exemple WorldCalc exécute les étapes suivantes (regroupées plus logiquement que dans le fichier Build.bat réel).
Création des composants math.dll et parser.dll :
csc ... math.cs csc ... parser.cs
Création du fichier .resources par défaut et de tous les fichiers .resources localisés à l'aide de Resgen.exe :
resgen MyStrings.txt MyStrings.resources resgen MyStrings.de.txt MyStrings.de.resources resgen MyStrings.de-CH.txt MyStrings.de-CH.resources
Utilisation de AL pour créer les assemblys satellites, incorporer (ou lier) les ressources et définir la culture :
al /out:WorldCalc.Resources.Dll /v:1.0.0.0 /c:de /embed:MyStrings.de.resources,MyStrings.de.resources,Private al /out:WorldCalc.Resources.Dll /v:1.0.0.0 /c:de-CH /embed:MyStrings.de-CH.resources,MyStrings.de-CH.resources,Private
**Remarque **Les chaînes de culture ne respectent pas la casse.
Compiler l'application elle-même et lier les ressources par défaut avec le commutateur /res :
csc ... /target:winexe ... /addmodule:parser.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:System.dll /r:math\math.dll /res:MyStrings.resources WorldCalc.cs
Voici l'équivalent Visual Basic :
vbc ... /target:winexe ... /addmodule:parser.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll /r:System.dll /r:math\math.dll /res:MyStrings.resources WorldCalc.vb
À partir d'ici, pour ajouter une culture, il suffit de créer un fichier texte approprié contenant les ressources, puis de répéter les étapes 2 et 3.
Images — La localisation des images est illustrée dans l'exemple Graphic . Pour cet exemple d'application, le processus de création est analogue à celui de WorldCalc, excepté qu'il ajoute une étape permettant de convertir les images en fichiers .resx :
resxgen /i:un.jpg /o:Images.resx /n:flag
cd en
resxgen /i:en.jpg /o:Images.en.resx /n:flag
cd ..\en-au
...
Voir aussi
Extraction de ressources à l'aide de code | Résumé des ressources | Annexe A : Informations supplémentaires sur les ressources | Annexe B : Outils pour les ressources