IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] gestion multilingue


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 58
    Points
    58
    Par défaut [C#] gestion multilingue
    Bonjour,

    Je suis en C# sur VS2005 express sur framework 2.0
    J'ai fait une appli multilingue, je switch d'une langue à l'autre, tout fonctionne mais uniquement avec les composants graphiques (label, button etc..)

    Maintenant je veux ajouter des libellés à la main dans mon fichiers ressources (celui qui contient les libellés des boutons, label etc.. généré par VS2005) et y accéder depuis mon programme mais je n'y arrive pas.

    Je précise que j'ai lu le tutorial de morpheus.

    voilà la structure du projet (une class contenant une form + ressources)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ImageRenamer.cs
    --ImageRenamer.Designer.cs
    --ImageRenamer.fr.resx
    --ImageRenamer.resx
    J'ai ajouter au 2 fichiers ressources une string :
    nom : zSimStart
    valeur (dans le defaultr) : Simulation start on {0}
    valeur (dans le fr) : Démarrage de la simulation sur le repertoire {0}

    J'essai maintenant de les récupérer par programme :
    private ResourceManager resourceManager = new ResourceManager("Xtream_ToolBox.ImagesRenamer", typeof(PhotosRenamerForm).Assembly);

    addLogs(String.Format(resourceManager.GetString("zSimStart"), imagesPathTextBox.Text));
    mais j'ai l'erreur suivante :
    Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "Xtream_ToolBox.ImagesRenamer.resources" was correctly embedded or linked into assembly "Xtream's ToolBox" at compile time, or that all the satellite assemblies required are loadable and fully signed.
    y a donc un truc qui colle pas, et j'arrive pas à trouver quoi...

  2. #2
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Salut,

    Avec VS 2005 c'est encore plus simple que la méthode décrite par Morpheus.

    Quand tu localise une form, dans la methode InitialiseComponents de ta form tu as une nouvelle ligne qui apparait.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmLogin));
    Après tu dois utiliser cette declaration pour justement appliquer les ressources aux composants que tu veux traduire.


    dans ta methode main, juste avant de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run(new form1());
    tu mets cette ligne qui te permets de changer de langue.:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr");

    Si c'est pas clair, dis moi je t expliquerais plus en détails si j ai le temps.
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    j'ai effectivement cette ligne dans la partie de ma classe généré par VS2005
    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PhotosRenamerForm));
    Mais cette variable est déclarée au début de la méthode "InitializeComponent", elle est donc locale et ne peut servir dans le reste de la classe ou j'écrit mon code.

    Qu'a cela ne tienne, j'ai recopié la ligne au début de ma classe.
    private System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PhotosRenamerForm));
    ce qui me permet dans ma méthode de faire :
    addLogs(String.Format(resources.GetString("zSimStart"), imagesPathTextBox.Text));
    Je n'ai pas d'exception, il récupère bien la chaine "zSimStart" dans le fichier ressource mais il la prend dans le fichier de ressource par défaut et pas dans le localisé (fr) lors que je change la langue de mon appli (tout le reste de l'ihm bascule bien en fr, sauf les variables que je récupère via ressources.GetString).

    une idée ?

  4. #4
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    regarde si tu as bien changé la culture par défaut!!!



    as-tu mis cette ligne quelque part?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr");
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    oui j'ai bien cette ligne, qui permet de changer la langue de mon application et qui fonctionne bien (en tout cas pour tout ce qui est composant graphique internationnalisé via l'IHM de VS2005). Il n'y a que sur les getString comme précisé ci dessus qu'elle ne semble pas fonctionner....

  6. #6
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    ah excuse j'ai pas bien lu ton post...

    en fait rien ne t'empeche de déclarer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PhotosRenamerForm));
    en variable globale visible dans toute ta classe.

    au pire quand tu appelle GetString tu peux lui passer en paramètre la culture à utiliser...
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  7. #7
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Désolé mais je vais te parler de mon pb en VS2003, tu verras si c'est le même en VS2005

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private ResourceManager resourceManager = new ResourceManager("Xtream_ToolBox.ImagesRenamer", typeof(PhotosRenamerForm).Assembly);
    Ton pb est peut-être là : "Xtream_ToolBox.ImagesRenamer"

    Avec VS2003, j'ai créé un sous répertoire nommé Res, pour séparer les différents type de fichiers dans différents sous-répertoire.

    Après avoir fait ça, j'ai du écrire ca : "Xtream_ToolBox.Res.ImagesRenamer"

  8. #8
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    non rien à voir.. chez moi tout marche sans avoir à bidouiller les ressources....
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 58
    Points
    58
    Par défaut
    bon, je comprend vraiment pas.
    Meme en passant la culture au getString, il prend toujours pas le bon.

    resources.GetString("zSimulationStart", new CultureInfo("fr"))
    j'ai virer les fichier temporaires (bin / obj), regénérer le tout au cas ou y aurai un probleme de cache ou autre mais rien n'y fait.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] gestion d'un site multilingue
    Par dedel53 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/05/2007, 23h19
  2. Gestion multilingue et user control
    Par Radium133 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 11/04/2007, 11h12
  3. [C#.NET] Gestion multilingue ?
    Par TheParadoX dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/10/2006, 15h51
  4. Delphi et gestion multilingue
    Par davels dans le forum Delphi
    Réponses: 2
    Dernier message: 06/09/2006, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo