none
localisation de Windows Forms - ResourceManager RRS feed

  • Question

  • Bonjour a tous

    J'ai fait plusieurs fichiers de langues (ressource) dans chacun d'eux j'ai un champs "Nom", "Valeur" et "Commentaire"
    Y a t'il un moins de récupérer tous les champs nom (qui ont le nom du control) et lire la valeur ?

    Je donne un exemple ou cas ou :)
    Dans mon fichier ressource fr-FR j'ai :
    ---------------Nom ------------------------- Valeur--------------------------Commentaire
    Label1.Text                    |               Toto                           |
    Label2.Text                    |               Titit                            |
    Label3.Text                    |               Tota                           |
    Label4.Text                    |               Toti                            |
    Label5.Text                    |               Tode                          |
    Label6.Text                    |               Tatoo                         |
    Label7.Text                    |               Tootoo                       |
    Label8.Text                    |               Tata                           |
    Label9.Text                    |               Teto                           |
    ...

    Comment faire pour récupérer tout les label avec leurs valeurs correspondantes ?
    Puis comment faire pour utiliser un texte en tant que contrôle ? (c'est a dire "Label1.Text" (en tant que texte) en controle Label1.Text (sans les tildes))

    Merci d'avance

    A bientot
    Cordialement, Troxsa
    mardi 23 février 2010 12:25
    Auteur de réponse

Réponses

  • Bonjour,

    Il faut à partir du ResourceManager, récupérer une instance de ResourceSet via ResourceManager.GetResourceSet().
    Ensuite utilisez l'itérateur de ResourceSet pour parcourir toutes vos ressources.

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    mercredi 24 février 2010 21:30
    Modérateur
  • Bonjour,

     

    J’ai fait un petit exemple à partir des instructions de M. Tourreau. Mon programme a un fichier de ressources Resource1.resx avec 3 valeurs de type String.

            Dim rm As ResourceManager = My.Resources.Resource1.ResourceManager
            Dim myci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo(System.Globalization.CultureTypes.AllCultures, False)
            Dim rs As ResourceSet = rm.GetResourceSet(myci, True, True)
     
            Dim de As System.Collections.IDictionaryEnumerator = rs.GetEnumerator()
     
            While de.MoveNext()
                MessageBox.Show(de.Key + " " + de.Value)
            End While

     

     

    Cordialement,

    Alex

     
    Alex Petrescu - MSFT
    • Marqué comme réponse Alex Petrescu vendredi 26 février 2010 11:43
    vendredi 26 février 2010 11:43

Toutes les réponses

  • Bonjour,

     

    Pour lire la valeur vous pouvez utiliser la classe ResourceManager de cette façon :

    ‘Resource1 – le nom du fichier ressource
    Dim rm As ResourceManager = My.Resources.Resource1.ResourceManager
    Dim x As String
    x = rm.GetString("String1") ‘la clé du fichier ressource

     

    En ce que concerne la deuxième question, je n’ai pas compris ce que vous voulez essayer. Pouvez-vous expliquer un peu en détail quel est votre but ?

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    mercredi 24 février 2010 12:19
  • Bonjour Alex,

    Oui j'avais bien compris comment appeler un valeur dans le fichier ressource
    La question est comment appeler de façon récursif tout les noms

    Exemple de code qui pourrais exister mais qui n'existe pas

    For each noms in rm.allNames
         Console.Writeline(noms.tostring) ' mes noms de Label
         Ctype(noms.tostring, Control).Text = rm.GetString(noms.tostring )
    Next


    C'est plus compréhensible là :)
    Cordialement, Troxsa
    mercredi 24 février 2010 18:33
    Auteur de réponse
  • Bonjour,

    Il faut à partir du ResourceManager, récupérer une instance de ResourceSet via ResourceManager.GetResourceSet().
    Ensuite utilisez l'itérateur de ResourceSet pour parcourir toutes vos ressources.

    Cordialement
    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    mercredi 24 février 2010 21:30
    Modérateur
  • Bonjour,

     

    J’ai fait un petit exemple à partir des instructions de M. Tourreau. Mon programme a un fichier de ressources Resource1.resx avec 3 valeurs de type String.

            Dim rm As ResourceManager = My.Resources.Resource1.ResourceManager
            Dim myci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo(System.Globalization.CultureTypes.AllCultures, False)
            Dim rs As ResourceSet = rm.GetResourceSet(myci, True, True)
     
            Dim de As System.Collections.IDictionaryEnumerator = rs.GetEnumerator()
     
            While de.MoveNext()
                MessageBox.Show(de.Key + " " + de.Value)
            End While

     

     

    Cordialement,

    Alex

     
    Alex Petrescu - MSFT
    • Marqué comme réponse Alex Petrescu vendredi 26 février 2010 11:43
    vendredi 26 février 2010 11:43
  • Terrible merci les gars :)

    Merci
    Cordialement, Troxsa
    vendredi 26 février 2010 20:24
    Auteur de réponse