CLASSE DE TRADUCTION

tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009 - 12 févr. 2008 à 11:27
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015 - 18 févr. 2008 à 06:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45691-classe-de-traduction

cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
18 févr. 2008 à 06:23
En fait, malgré ce qui peut être indiqué dans les sources, ça marche dès le framework 2.0. Mais pas en 1.1 effectivement.
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
16 févr. 2008 à 19:11
Merci beaucoup, je vais regarder ca mais je ne vais pas l'adapter à ma classe de traduction, car ca nécéssite le framework 3.0, ce qui est un peu pénalisant. Beaucoup d'application en sont encore au 2.0 voir au 1.1... Donc c'est sera pour la prochaine ;)
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
16 févr. 2008 à 18:59
J'ai retrouvé, il s'agit des propriété d'extensions.
Ce code permettrait (mais je n'ai pas véréifié) de produire le résultat souhaité : http://www.dotnet-news.com/lien.aspx?ID=30487
Sinon, il faut chercher des exemples reprenant l'interface IExtender et la classe d'attribut ProvidePropertyAttribute.

J'ai trouvé aussi cet autre exemple : http://files.codes-sources.com/fichier.aspx?id=33786&f=AutoCompletionTextBox%5cAutoCompleteExtender.cs
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
15 févr. 2008 à 11:01
malheureusement non, je n'ai pas plus d'infos.
Mais tu peux regarder comment ça fonctionne grâce à décompilateur gratuit reflector.
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
15 févr. 2008 à 10:53
Warny, c'est interessant, tu aurait un peu plus d'info genre quelques liens ?
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
15 févr. 2008 à 08:36
Il y a une solution à cette problématique de champs.
Il est possible à partir du .NET 2.0 un mécanisme qui permet à un objet d'ajouter à des contrôle des propriétés virtuelle supplémentaires.
Ce mécanisme est mis en oeuvre dans les contrôles infobulles.
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
13 févr. 2008 à 20:32
Alors je vais expliquer mon choix du .text :
c'est pour moi le meilleur compromis, c'est peut être pas la meilleur technique, mais elle à démontrer ces preuves dans de moyennes et petites applications.
- On voit ce qui est traduit ou pas dans le designer de visual.
- Le point tag est à bannir de toute programmation, il peut dépanner mais c'est tout. Je travaille sur du code ou ils ont tous mis dans les .tag en fonction de la cellule, de la ligne, d'une case à cocher et de la colonne ... résultat ca plante dans tous les sens, bref en plus au niveau des perf ca doit être encore pire car il y a le test pour savoir si c'est un string et le cast en stirng...
- Avec du texte dynamique ca marche très bien au mais tu utilise String.Format(CTraduction.Donne("BTN_X"), i); et dans le trad à la balise BTN_X tu mets "Button {0}".
- Et encore une fois niveau perf, rien de dramatique, pour avoir fait des tests, c'est pas les .text qui prennent du temps... Même avec 500 contrôles c'est pas 1000 .text qui vont ralentir le tout pour avoir fait quelques tests. après si tu recherche de la performence pure, c'est peut être pas le mieux... mais dans ce cas autent faire du c++ natif... ca dépendde l'appli.
- Par contre il y a priori un petit bug avec les user control, visual veut absolument en mode designer un fichier trad.xx.xml dans son répértoire (pour une raison inconnue) sinon il râle. Suffit de crer un fichier vide avec ce nom dans le répértoire et ca passe. Etant donné que ca ne gène qu'à ce moment, c'est une solution de bricolage mais acceptable :p

Voilà pourquoi j'ai fait ce choix, il a été choisi de manière "intéligente" ;)
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
13 févr. 2008 à 12:00
En regardant un peu plus en profondeur, je trouve bizzar que tu utilise la propriété Text pour faire tes opérations, si pour une raison ou une autre, l'information devait être dynamique et donc dépendre d'un string.format("Button {0}", "123") le système ne marcherait plus car l'information devient dynamique. Tu devrais baser ton code plutôt sur un champs de type libre tel que "Tag", mais là encore certains programmeur l'utilise pour leur programmation. Il serait donc plus "intelligent" de travailler avec le nom du contrôle, qui lui si l'on programme correctement, doit être unique. Car le problème est qu'à chaque fois tu prend l'existant, tu fais des opération et puis tu refait la traduction... 2 opérations -> perte de performance.
Mais l'idée semble très simpa quand même :)

Amicalement,
Laurent
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
12 févr. 2008 à 11:27
Class très intéressante, bon boulot
Rejoignez-nous