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 :

Localisation d'une application et fichiers ressources globaux ? [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 44
    Points
    44
    Par défaut Localisation d'une application et fichiers ressources globaux ?
    Bonjour,

    Je cherche à savoir comment mettre en place des fichiers de ressources globaux dans une application winform.
    En effet, j'ai bien trouvé cet article http://morpheus.developpez.com/localisationdotnet/ mais il ne répond pas totalement à mes attentes.
    Il est question dans celui-ci de fichiers ressources au niveau des formulaires mais aucunement au niveau global de l'application.
    J'ai bien élargie mes recherches sur le net mais sans succès. Rien de probant, des exemples incomplets ou ne fonctionnant pas ou plus sous VS2012. J'ai bien essayé diverses solutions en vain...

    Quelqu'un pourrait-il m'expliquer comment implémenter et utiliser de tels fichiers ?

    Merci d'avance !

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Tu veux stocker une information ?
    La classe Settings est faite pour ça.
    Dans Visual Studio; clic droit / propriétés sur ton projet puis onglet Paramètres.
    Tu mets le nom de ta variable à sauvegarder, son type et sa valeur.

    On récupère une valeur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string proprieteToto = Settings.Default.TOTO;
    //proprieteToto contient "titi";
    On sauvegarde une valeur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Settings.Default.TOTO = "tutu";
    Settings.Default.Save();
    Tu peux même restaurer tous les réglages par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Settings.Default.Reset();
    Bonne chance A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Merci pour les informations, mais ce n'est pas vraiment le sujet que j'ai abordé.
    En effet, ma question porte sur l'internationalisation d'une application Winform et les ressources globales indépendantes des formulaires dont on appelle le contenu d'une manière quelque peu différente. Et d'ailleurs puisque j'y suis, comment créer et appeler des ressources satellites tel que l'exemple ci-dessous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    \MonApplication
         MonApplication.exe
                   \DossierLangues
                          lang-fr-FR.dll
                          lang-en-US.dll
                          lang-de-DE.dll
    J'ai bien trouvé quelques explications sur le .net mais elles sont claires comme de l'eau de boudin... Et je ne parle pas de celles fournies par Micromou...

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Ok désolé j'avais mal lu la question. Enfin c'était pas très explicite non plus ^^
    Je t'engage donc à lire cette page :
    http://msdn.microsoft.com/en-us/libr...vs.100%29.aspx

    C'est très bien documenté.
    Pour résumer :
    1. Tu créés une Form
    2. Tu met la propriété Localizable à true
    3. Tu ajoutes un bouton
    4. Tu passes la propriété Language de ta Form à Français et tu met ton texte en français dans Text de ton bouton
    5. Tu passes la propriété Language de ta Form à Anglais et tu mets ton texte en anglais dans Text de ton bouton
    6. Tu repasses la propriété Language du Form à défaut.
    7. Tu fais un petit système type menu où tu peux sélectionner les langues et derrière chaque item pour changer la langue tu mets ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
     
            /// <summary>
            /// Fonction callback clic sur l'item Anglais
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void anglaisToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
                MAJLangue(this);
            }
     
            /// <summary>
            /// Fonction callback clic sur l'item Français
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void françaisToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
                MAJLangue(this);
            }
     
            /// <summary>
            /// Fonction récursive qui renomme tous les contrôles sur la Form.
            /// </summary>
            /// <param name="pCtrl"></param>
            private void MAJLangue(Control pCtrl)
            {
                foreach (Control ctrl in pCtrl.Controls)
                {
                    resources.ApplyResources(ctrl, ctrl.Name);
                    MAJLangue(ctrl);
                }
            }
    La fonction MAJLangue est là uniquement si tu veux changer dynamiquement la langue de ton app sans avoir à fermer et à rouvrir ton formulaire. (en fouillant dans InitializeComponent(). Cela dit faut faire gaffe si tu as des contrôles un peu poussés. Par exemple ça ne fonctionne pas pour renommer les ToolStripMenuItems car ils ne sont pas liés au composant père dans la liste .Controls mais dans la liste .DropDownItems. Suffit de jouer un peu avec la fonction pour qu'elle couvre tous les cas.
    Après si tu applique cette méthodologie sur tous tes formulaires cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
    (pour peu que tu recharge tes forms ouvertes avec la fonction MAJblabla) change la langue de toute ton application.

    Là tu as automatiquement une architecture :
    \MonApplication
    MonApplication.exe
    \en
    MonApplication.resources.dll
    \fr
    MonApplication.resources.dll

    Voila je ne sais pas si ça répond à ta question.
    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Points : 44
    Points
    44
    Par défaut
    Merci pour tes réponses, mais ce n'est pas tout à fait encore ce que je recherche, mais j'ai finalement réussi à trouver.
    Effectivement, appliquer la globalisation Forme par Forme ne pose pas vraiment de problème, mais je trouvais cela un peu lourd, du moins pour les ressources dites "physiques", string, images, etc..
    Je préférais mettre en place, des fichiers de ressources unique et globaux à toutes les formes présentes dans mon projet.
    Après de nombreux essais, j'ai fini par ajouter des fichiers ressources dans la racine du projet via l'option "Ajouter/Un Nouvel élément/Fichier de ressources". Modifier les noms de ces fichiers en les terminant avec la culture désirée (ex: fichierRessources.fr-FR.resx) . Y placer les ressources adaptées en adéquation avec la culture sélectionnée.
    Après il m'a suffit de sélectionner la culture de mon choix et d'utiliser respectivement (je schématise) ResourceManager(String, Assembly) :
    System.Resources.ResourceManager.GetString("idRessourceChaine") pour les chaînes de caractères,
    System.Resources.ResourceManager.Object("idRessourceImage") pour les images,

    afin d'affecter aux contrôles des formes lesdites ressources au moment de leur initialisation. Cela m'évite de maintenir autant de fichiers ressources.resx qu'il y a de Formes dans le projet. En d'autres termes, un fichier ressource par culture pour toutes les formes.

    CQFD !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut Sylvebarbe 78, j'ai consulter cette discussion afin de trouver une solution au problème que j'ai ( celui que vous avez eu en 2013). je viens de m'inscrire pour vous écrire dans l'espoir que vous me répondiez. C'est a propos de l'utilisation des fichiers ressources pour la culture. j'aimerai savoir comment les utiliser dans mon projet. j'ai trouver certaines méthodes sur internet qui ne me conviennent pas. Votre solution est mieux comparée à d'autres. J'aimerai savoir comment faire. J'attend avec impatience votre réponse.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/09/2008, 01h58
  2. [MVC] Localisation d'une application avec Spring
    Par onlytoine dans le forum Spring Web
    Réponses: 0
    Dernier message: 29/07/2008, 17h42
  3. Décomposé une application en fichier jar
    Par Ganymede dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 12/05/2008, 02h09
  4. [WD11]Associer une application à un fichier
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 6
    Dernier message: 10/05/2007, 00h02
  5. [VB .NET] Localisation d'une application vb.net
    Par plasticgoat dans le forum Windows Forms
    Réponses: 28
    Dernier message: 07/06/2006, 17h13

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