none
[VS2005] Winform et ressource RRS feed

  • Question

  •  

    Bonjour,

     

    Je souhaite localiser une application WINFORM en C# réalisée avec VS2005

     

    J'ai créé un fichier de ressource TestLoc.fr.resx dans mon projet. Avec la culture fr, ça marche

     

    ResourceManager rm = new ResourceManager("TestLoc.TestLoc", Assembly.GetExecutingAssembly());  // le namespace est TestLoc et le nom du projet est TestLoc
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");

    string toto=rm.GetString("CHAINE");

     

    Si je met (pour tester le jour où le programme tourne sous un windows espagnol par exemple)

    new CultureInfo("es");

     

    j'ai une erreur.

    Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "TestLoc.TestLoc.resources" was correctly embedded or linked into assembly "TestLoc" at compile time, or that all the satellite assemblies required are loadable and fully signed

     

    Or je croyais qu'en .Net, si la ressource d'une langue n'est pas trouvée, on remonte jusqu'à la ressource de la langue par défaut, qui est la ressource incorporée (projet winform c# - Properties - Resources.resx), j'ai bien coché 'Ressource incorporée' pour le paramètre Action de génération de la ressource par défaut du projet.

     

    J'ai cherché partout, mais je n'ai vraiment rien trouvé avec le couple winform et c#, enfin si, beaucoup de personnes semblent rencontrer le problème depuis VS2005, mais les solutions sont sur des projets ASP où la gestion est différente.

     

    Merci de votre aide.

    mercredi 12 mars 2008 10:57

Toutes les réponses

  • Effectivement, les langages suivent une certaine hierarchie (Ex: fr-fr -> fr -> default), mais je crois ici le problème c'est qu'il  ne trouve pas TesLoc.resx , qui es le défaut. Je ne sais pas trop comment te guider puisque je n'ai pas ta solution Sad

     

    mercredi 12 mars 2008 11:27
    Modérateur
  • Ok, merci, en fait il n'y a pas de TestLoc.resx car je complète le fichier ressource pour la culture defaut dans le fichier qui est déjà créé par VS2005 dans le dossier Properties.

    A la compilation VS2005 créé un sous répertoire pour chaque assembly satellite pour chaque langue dans bin/debug mais pas pour la culture default puisqu'elle est censée si j'ai bien compris être embarquée dans l'assembly du programme.

    Pour tester, j'ai fait un mini projet winform avec juste les 3 lignes suivant dans le constructeur

     

                ResourceManager rm = new ResourceManager("TestLoc.TestLoc", Assembly.GetExecutingAssembly());
                System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("es");
                string toto=rm.GetString("CHAINE");

     

    et ajouter une ligne CHAINE dans le fichier de ressource par défaut. Dans mon exemple, comme il n'y a pas de ressource Espagne, on devrait retomber dans la ressource defaut...

     

    J'avais trouvé ce lien http://www.microsoft.com/france/msdn/vbasic/Resources_et_Localization.mspx

    mais le VB n'a pas la même structure de projet avec ce fichier de ressource par défaut

    mercredi 12 mars 2008 12:30