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

VB.NET Discussion :

Traduction d'une appli : pb avec le .resx


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut Traduction d'une appli : pb avec le .resx
    Bonjour,

    Je viens d'achever la traduction de mon formulaire principal. Je ne me retrouve pas dans la situation attendue d'après les tutos.
    Voici comment j'ai procédé
    1°/ Propriété Localizable = True
    2°/ Propriété Language = Français
    3°/ Propriété Language = Anglais
    Je me débrouille pour générer les fichiers form1.en.resx et form1.fr.resx

    4°/ Je traduis déjà , directement dans le designer, les éléments visuels du form1 du français vers l'anglais (labels, tooltips, boutons etc...)

    5°/ J'ouvre le fichier code form1.vb
    5°/ Je rajoute en déclaration globale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Private RM As System.Resources.ResourceManager = Nothing
    6°/ Je rajoute dans le form1_load :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            ' ResourceManager pour la gestion des langues
            RM = New System.Resources.ResourceManager(GetType(form1))
    7°/le plus fastidieux, je remplace tous les strings destinés à l'affichage par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RM.GetString("strlambda")
    où strLambda est une variable que je consigne aussitôt dans les fichiers form1.en.resx et form1.fr.resx en lui assignant une valeur dans chacune des 2 langues.

    A l'issue de cette opération (plusieurs heures quand même), je me retrouve avec
    - un fichier form1.fr.resx de 103 valeurs. Il n'y a que les variables de type strLambda que j'ai créées
    - un fichier form1.en.resx de 275 valeurs : les 103 valeurs précédentes + les 172 contrôles du form traduits au 4°/
    - un fichier form1.resx (auquel je n'ai pas touché) qui contient 1198 valeurs. On y retrouve les 172 contrôles du form traduits au 4°/ + toutes les autres personnalisation de contrôles réalisées dans le designer à la création du form mais ne nécessitant pas de traduction. Les valeurs sont en français

    Mon pb est le suivant. Si je rajouter une étape 8 et 9 :
    8°/ je reviens à la version française du form1 (propriété Language = Français),
    - le fichier en.resx perd une partie de ses valeurs. Il lui en reste 172 : celles du form1 traduits au 4°/
    - les 2 autres fichiers restent inchangés

    9°/ Je rajoute un contrôle dans le designer (par exemple un TSMenuItem).
    - le fichier fr.resx perd toutes ses valeurs et en crée une pour indiquer le texte du contrôle

    Bref, à l'issue de cette séquence, je perds toute ma traduction et mon code n'est plus exploitable puisqu'il renvoie à des variables qui ne sont plus définies

    J'ai dû rater un truc dans la gestion des fichiers .resx. Apparemment d'après les tutos, ces fichiers devraient être identiques en nombre de lignes, seules les valeurs étant différentes d'un fichier à l'autre. Mais toujours d'après ces tutos, ce process devrait être automatique sans intervention manuelle du programmeur.

    Qqun peut-il me dire à quelle endroit (de 1 à 9) j'ai fait une erreur ?

  2. #2
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Hello, je ne suis pas experte en Winforms, moi c'est plutôt l'ASP.NET, mais je pense que tu peux oublier le tuto sur lequel tu t'es basé, et utiliser plutôt celui-ci : http://msdn.microsoft.com/fr-fr/libr...vs.100%29.aspx

    En clair, voilà comment je pense qu'il faut procéder :
    1°) Sur ton formulaire Form1, passer Localizable = true et Language = (Par défaut) ;
    2°) Remplir tout les champs texte avec leur valeur par défaut (en français dans notre cas), c'est à dire, le titre de la fenêtre, les textes des bouton, etc. ;
    3°) Passer en Language = Anglais ;
    4°) Ré-exécuter l'opération 2°) avec les textes en anglais.

    A ce moment-là Visual Studio aura créé automatiquement les fichiers de ressources et les aura remplis tout seul

    En me basant sur mon expérience ASP.NET, j'aurais tendance à dire que le fichier en français n'est pas nécessaire car c'est la langue par défaut, il faut peut-être la définir au niveau de l'assembly.

    Si tu veux ajouter des traductions manuellement (en utilisant GetString(...)), il faut créer d'autres fichiers de ressources, c'est expliqué dans la doc MSDN.
    "C'est tellement merdique que toute modification est une amélioration !"

  3. #3
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut
    J'utilise le tuto http://morpheus.developpez.com/localisationdotnet/

    Sur le fond ce n'est pas très différent de ton lien mais il explique mieux l'utilisation de GetString (car il faut aussi traduire les messages situés dans le code, pas seulement les parties visibles dans le designer)

    Il me semble que j'ai respecté les étapes 1 à 4 que tu décris.

    En résumé, une fois que j'ai bien rempli fr.resx et en.resx avec les mêmes variables et leurs traductions respectives, ces fichiers sont tronqués quand je bascule de Language dans le form, ce qui est parfois nécessaire pour aller corriger un texte apparaissant dans le designer, et je dois tout recommencer (ou faire une copier/coller depuis ma sauvegarde Excel )

  4. #4
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Par rapport à ton problème, c'est la dernière phrase de mon post qui est intéressante :
    Citation Envoyé par plume13 Voir le message
    Si tu veux ajouter des traductions manuellement (en utilisant GetString(...)), il faut créer d'autres fichiers de ressources, c'est expliqué dans la doc MSDN.
    "C'est tellement merdique que toute modification est une amélioration !"

  5. #5
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut
    Ben j'ai pas trouvé la réponse à mon pb.
    Une fois que j'ai créé un fichier en.resx et fr.resx, j'y ai consigné mes variables avec leurs traductions, le RM.Getstring se charge d'aller récupérer dans ces 2 fichiers la valeur de mes variables en fonction de la CultureInfo. Je ne vois pas pourquoi il faudrait créer d'autres fichiers, et encore moins comment le GetString irait trouver le bon fichier.

  6. #6
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    J'imagine qu'il suffit de lui indiquer le nom de la ressource
    Soit, en C# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // LeResourceManager prend en paramètre : nom_du_namespace.nom_de_la_ressource_principale
    ResourceManager resourceManager = new System.Resources.ResourceManager("Localisation.Form1", typeof(Form1).Assembly);
    "C'est tellement merdique que toute modification est une amélioration !"

  7. #7
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut
    Comme tu viens de l'écrire (mais avec une contradiction), le RM prend en paramètre, non pas la ressource, mais le form.
    Le form se décline en plusieurs fichiers ressources .resx, un par langue.
    A partir du moment où en.resx et fr.resx existent le RM sait quel fichier correspond à quoi. Donc je ne vois pas pourquoi (ni comment) créer d'autres fichiers, ou alors je n'ai rien compris à ta suggestion


    Nota : au passage, tu noteras qu'il existe une surcharge plus simple (cf mon premier post) pour le RM. Je l'ai trouvée sur un autre topic du forum. Cela m'arrangeait bien car je n'ai pas de namespace dans mon projet.

  8. #8
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Pour créer un fichier (de ressources) : Bouton droit + "Ajouter" + "Nouvel élément..." Dans "Général", choisir "Fichier de ressources". La suite est expliquée sur la MSDN.

    En fait, le plus dur est bien de lire le document de la MSDN jusqu'au bout...
    "C'est tellement merdique que toute modification est une amélioration !"

  9. #9
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut
    OK, vu ! Excuse-moi d'être passé un peut trop rapidement !

    Est-ce à dire qu'il faut
    1°/ Générer automatiquement les fichiers form1.resx, form1.fr.resx et form1.en.resx à l'aide du designer selon la méthode explosée au
    Pour laisser Visual Studio générer les fichiers de ressources
    Ces fichiers n'étant pas modifiés manuellement et ne comportant que les éléments visuels des forms ?
    2°/ Générer manuellement 3 autres fichiers customform1.resx, customform1.fr.resx, customform1.en.resx pour consigner uniquement les textes du code à traduire ?

    Don au total 6 fichiers resx pour form1 ?

  10. #10
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Je dirais que c'est ça, mais comme je l'ai dit plus haut, je maîtrise plus l'ASP.NET.
    Essaie, tu verras bien si cela fonctionne comme tu veux.
    "C'est tellement merdique que toute modification est une amélioration !"

  11. #11
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello Noftal,

    Quand tu auras fini, je serais ravi que tu nous fasses un petit débriefing.

    Je cherche depuis pas mal de temps une méthode simple à mettre en mettre pour développer des applications multi-langue.

    J'ai déjà testé le tuto de Morpheus comme toi, l'utilisation de fichier xml (déserialization), fichier ini, fichier texte.

    Je n'ai été convaincu par aucun. Dans tous les cas, j'ai trouvé le code à écrire trop fastidieux dans le sens où il faut quand même assigné son texte à chaque contrôle.

    Le seul cas avec pas trop de code est le fichier xml où j'arrivais à assigner les textes via une boucle mais le fichier xml était super lourd à créer (et fallait pas que je me trompe dans l'arborescence !!).

    Je serais donc ravi d'avoir ton avis sur la question puisque tu es en plein dedans.
    Kropernic

  12. #12
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Salut Kropernic,
    Pourquoi trouves-tu la méthode préconisée par la MSDN fastidieuse ?
    De ce que j'ai pu lire et vaguement expérimenté sur mon PC, il suffit de positionner tous les textes par defaut, cela crée ainsi le ficher resx MonForm1.resx ; pour les traductions, il suffit alors de dupliquer le fichier et de le nommer MonForm1.en.resx pour pouvoir saisir les traductions en anglais par exemple.
    Seuls les textes explicitement definis dans le code behind nécessitent l'utilisation du GetString(...) et un fichier resx indépendant (à voir même, si il n'est pas possible de générer automatiquement le ResourceManager comme on peut le faire en ASP.NET...)

    C'est ça ou j'ai pas bien compris la MSDN ?
    Et si c'est bien cela que tu fais d'habitude, comment préférerais-tu procéder ?
    "C'est tellement merdique que toute modification est une amélioration !"

  13. #13
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Si je pose la question, c'est que la problématique de gestion des traductions m'intéresse. Je me suis penchée sur la question plusieurs fois sur des applis web.
    "C'est tellement merdique que toute modification est une amélioration !"

  14. #14
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    De ce que je me souviens, j'avais suivi le tuto de Morpheus.

    Déjà, ça prenait pas mal de temps de tout traduire dans les fichier resx mais bon, faut bien le faire une fois, c'est normal.

    Mais après, il fallait encore, pour chaque contrôle nécessitant une traduction, aller chercher la string correspondant au nom de la ressource qu'on donne au ResourceManager. Bref, autant traduire directement le texte dans le contrôle...

    Personnellement, j'aurais cru qu'en basculant la culture (ce n'est p-e pas le bon terme) de l'application, les textes de tous les contrôles se seraient automatiquement tous mis à jour en allant chercher ce qu'il faut dans le fichier resx adéquat.

    Mais j'ai vu aussi que tu as dit de laisser tomber ce tuto. Peut-être n'est-il pas/plus bon.

    Pour ma dernière application, j'ai fait une "quick & dirty solution". C'est à dire que j'ai tout traduit directement dans une classe abstraite qui reçoit par référence un formulaire. Si une traduction change, j'dois recompiler mais bon... pas bien grave.
    Kropernic

  15. #15
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Perso, je pense que le tuto n'est pas/plus bon...
    "C'est tellement merdique que toute modification est une amélioration !"

  16. #16
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est fort possible...

    Bah, noftal va nous faire un joli tuto une fois qu'il aura fini non ?
    Kropernic

  17. #17
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Bah, noftal va nous faire un joli tuto une fois qu'il aura fini non ?
    Voila une idée qu'elle est bonne !
    "C'est tellement merdique que toute modification est une amélioration !"

  18. #18
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut
    Pourquoi pas ?
    En fait, si la dernière réponse de Plume13 est la bonne (créer 6 fichiers de ressources...), ce n'est pas très compliqué, et il n'y aura pas grand chose à modifier dans le tuto de Morpheus pour que ça marche.
    En tout cas, j'ai toujours pour habitude de solder mes topics en disant comment j'ai fait. C'est ma façon de remercier la communauté qui m'apprend beaucoup. Et c'est aussi une façon de tracer comment j'ai fait (je me réfère souvent à mes propres topics pour retrouver comment j'ai fait )

    Mais après, il fallait encore, pour chaque contrôle nécessitant une traduction, aller chercher la string correspondant au nom de la ressource qu'on donne au ResourceManager. Bref, autant traduire directement le texte dans le contrôle...
    Non, pour la traductions des contrôles situés visible dans le designer, il suffit de se mettre sur language = English et de traduire dans le designer tout ce qui est apparent. Cela génère automatiquement les lignes dans le fichiers en.resx.

    Pour moi, la méthode Morpheus+Plume13 n'est pas lourde. Elle est longue car il faut tout traduire, mais ça, on peut difficilement faire moins
    Donc conceptuellement, je n'en imagine pas de plus simple.
    Quand tu dis que le Xml est pour toi la méthode la moins lourde, je ne la connais pas, mais quand on sait qu'un .resx n'est rien d'autre qu'un xml..., finalement, on est peut-être d'accord

    EDIT : pour l'instant, je suis sur autre chose, mais dès que j'aurai mis en application l'idée de Plume13, je reviens vers vous.

  19. #19
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    774
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 774
    Points : 275
    Points
    275
    Par défaut
    Je reprends là :

    Citation Envoyé par plume13 Voir le message
    Je dirais que c'est ça, mais comme je l'ai dit plus haut, je maîtrise plus l'ASP.NET.
    Essaie, tu verras bien si cela fonctionne comme tu veux.
    Je rencontre un pb à sa mise en oeuvre.
    Lorsque je crée un fichier de ressource manuellement, ce fichier ne dépend pas d'un form contrairement aux fichiers de ressources form1.en.resx et form1.fr.resx qui sont générés automatiquement.

    Donc, a priori, je dois créer 2 fichiers de ressources manuellement :
    - resource_en.resx
    - resource_fr.resx.

    Seul pb (et on aurait pu l'anticiper) : comment indiquer au GetString qu'il doit aller chercher dans l'un de ces 2 fichiers en fonction de la langue ?

    J'ai cherché du côté de l'instanciation du ResourcesMananager sans succès.

  20. #20
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par noftal Voir le message

    Seul pb (et on aurait pu l'anticiper) : comment indiquer au GetString qu'il doit aller chercher dans l'un de ces 2 fichiers en fonction de la langue ?

    J'ai cherché du côté de l'instanciation du ResourcesMananager sans succès.
    Tout simplement en ne créant pas des fichiers avec des noms différents...

    Je m'explique :

    La gestion de la traduction en .NET (ASP et WinForms même combat !) s'effectue au moyen de fichiers resx (jusque là, tout va bien ).
    En Winforms, un fichier est généré automatiquement par fenêtre traduite, le fichier de la langue par défaut a pour nom : le_nom_de_ma_winform.resx, cela correspond aux textes quand aucune langue précise n'est choisie dans le designer.
    Lorsque ce premier fichier est créé et rempli, on peut déjà dire que la fenêtre est localisée. En effet, les autres fichiers resx (.en.resx, .de.resx, .fr.resx, .fr-FR.resx, etc) ne sont jamais obligatoires (heureusement, imagine, devoir traduire ton application en finlandais ).

    En gardant cette logique à l'esprit, lorsque l'on a besoin de textes traduits supplémentaires, qui ne peuvent être spécifiés dans le designer mais uniquement en code behind, il faut alors créer un fichier de ressources indépendant. Ce fichier doit avoir pour nom quelque chose de la forme : mon_fichier_independant.resx, il peut être placé où l'on veut dans le projet.
    De la même façon que pour les fichiers associés à un Winform, ce fichier resx contient les traductions de la langue par défaut de l'application.
    Remarque : on peut tout à fait envisager de partager ce fichier entre plusieurs Winform, rien ne nous l'empêche.

    Pour ces fichiers particuliers, il est nécessaire d'utiliser un ResourceManager, la syntaxe est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ResourceManager resourceManager = new ResourceManager("Namespace_complet.mon_fichier_independant", typeof(Form1).Assembly);
    A noter, en ASP.NET, les fichiers de Resources dit "globaux" (c'est une nuance qui n'existe qu'en ASP.NET, Global vs Local, mais ce n'est pas l'objet de ce post) sont associés automatiquement à un fichier en .Designer.cs par l'utilisation de l'outil "ResXFileCodeGenerator". Il crée alors automatiquement des propriétés statiques pour chaque ligne de traduction, pratique ! Je serais tentée d'essayer aussi en Winforms si je pouvais, malheureusement pour l'instant je n'ai à ma disposition que la version Web Developper Express...
    Avis aux expérimentateurs fous

    Reste à gérer le changement de langue, c'est expliqué dans le tuto et sur la MSDN, je passe mon tour

    Et voila, l'application est localisée !

    Tu vas me dire : et les traductions en anglais !?
    Rien de plus simple, il suffit de reprendre les 2 fichiers par défaut précédemment créés, et pour chaque ligne, mettre la correspondance anglaise. En gros, pour le fichier resx associé au Winform, choisir dans la liste des langues du designer, "Anglais", puis copier-coller toutes les lignes du fichier resx (en mode XML) dans le fichier .en.resx créé (ça évite de devoir repasser par le designer...) ; idem pour le fichier utilisé manuellement après avoir créé mon_fichier_independant.en.resx.

    Pour info, si il manque des lignes de traduction en anglais, (normalement) ce n'est pas grave : il prendra le texte de la langue par défaut.

    NB : il se peut que certaines manipulations ou raccourcis décrits ci-dessus ne fonctionnent pas en Winforms, cela signifie que le Winform c'est tout pourri et que l'ASP.NET c'est mieux
    "C'est tellement merdique que toute modification est une amélioration !"

Discussions similaires

  1. Traduction d'une appli : Génération form1.fr.resx
    Par noftal dans le forum VB.NET
    Réponses: 0
    Dernier message: 26/12/2013, 20h08
  2. Réponses: 2
    Dernier message: 03/07/2013, 12h55
  3. Une appli WAP avec XMLRAD
    Par et.et-and-co dans le forum XMLRAD
    Réponses: 1
    Dernier message: 30/01/2006, 14h18
  4. [Plugin][Débutant] Lancement d'une appli Java avec un plugin
    Par antares24 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/07/2004, 14h18
  5. Définir une appli JEE avec JB7 Entreprise
    Par polo54 dans le forum JBuilder
    Réponses: 4
    Dernier message: 10/06/2003, 11h48

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