Localiser vos applications .NET à l’aide d’un assembly externe

Posté par
|

Vous avez pour certain d’entre-vous déjà eu l’occasion de localiser une application Windows ou Web avec .NET. Le système de ressources utiliser par Microsoft est excellent et facile à mettre en place rapidement. Par contre, dans des projets d’envergure plus grande, il est fort probable que vous ayez séparé la couche « ressource » de votre projet. Dans ce cas, la récupération de ces traductions est un peu plus complexe, car les ressources seront désormais compilées dans une DLL au lieu des traditionnels fichiers de ressources .resx. Alors, voyons comment récupérer la traduction de cette assembly.

Prenons l’exemple d’une solution simple contenant 2 projets : Web.Test et Web.Resources. Dans le projet de ressource, ce dernier contient par exemple 3 fichiers : XYZ.fr-CA.resx, XYZ.en-CA.resx et XYZ.en-US.resx. Lorsque vous compilerez la solution, les fichiers de ressource contenue dans Web.Resources seront désormais contenus dans une DLL, ici Web.Resources.dll.

Pour accéder aux traductions de vos ressources contenues dans la dll, il faudra charger dans le projet l’assembly comme suit.

Dim monAssemblie = System.Reflection.Assembly.Load("Web.Resources")
Dim rm As System.Resources.ResourceManager = New System.Resources.ResourceManager("Web.Resources.XYZ", monAssemblie)

Une fois votre assembly charger, il suffit d’appeler votre ResourceManager pour récupérer les valeurs en fonction de la langue désiré.

rm.GetString("fr-CA", "Valeur")
rm.GetString("en-CA", "Valeur")
rm.GetString("en-US", "Valeur")

Ajouté un commentaire


un × = 7