Aide sur application Multilingue

Résolu
cs_Yanith Messages postés 34 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 24 septembre 2014 - 20 oct. 2012 à 13:01
cs_Yanith Messages postés 34 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 24 septembre 2014 - 22 oct. 2012 à 13:42
Bonjour,

étant complètement perdu après de multiple test et de recherche, je me tourne vers vous pour demander de l'aide sur la procédure à suivre pour faire une application multilingue. j'ai suivie tout un tas de tutoriel qui ne me satisfont pas. J'ai un cahier des charges très précis qui me contraint à avoir une arborescence spécifique ... je m'explique :

les fichiers de langue disponible pour mon application doivent être dans un dossier nommer "Lang" et les fichiers
doivent se nommer "Lang.fr.dll", "Lang.en.dll", "Lang.de.dll", "Lang.es.dll".

Tous les tests que j'ai pu faire jusqu'a maintenant fond que je me retrouve avec un dossier par langue avec dans chacun un fichier dll se nommant "Application.Ressouce.Dll" .... Se qui ne me convient pas.

Avez vous une piste, solution ou conseil pour résoudre mon problème ?
Pour info : je travaile sous VS2012 sur Windows 7 pour concevoir une application WinForm.

Bien cordialement.

2 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
22 oct. 2012 à 09:30
Bonjour,

La solution la plus simple est d'aller voir ton CP et de lui expliquer que ce n'est pas possible à cause du comportement de .Net pour les applications multilingues. S'il n'est pas sensible à cet argument tu peux essayer d'utiliser un ResourceManager que tu instancies toi-même à partir de l'assembly où se trouvent tes ressources.

Un piste serait peut-être d'utiliser :

public ResourceManager (
string baseName,
Assembly assembly
)

et Assembly.Load pour charger la dll de ressources.
3
cs_Yanith Messages postés 34 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 24 septembre 2014
22 oct. 2012 à 13:42
Il n'est pas sensible à quoi que se soit

J'ai trouvé la solution se matin qui est la même chose que toi, explication :

- Création d'un projet vide avec VS2012.
- Ajout de ressources (Resx) avec les données qui m'interresse.
- Convertion des fichier resx en fichier .resources avec : resgen NomDeFichier.resx
- Compilation des fichiers .resources en DLL avec : al /t:lib /embed:NomDeFichier.resources /culture:fr /out:NomDeFichier.dll

Dans le projet de mon application :

var assembly = Assembly.LoadFrom("NomDeFichier.dll");
var rm = new ResourceManager("resources", assembly);
label1.Text = rm.GetString("Name");

et voila sa fonctionne. Merci
0
Rejoignez-nous