UserControl multilingue

akta3d Messages postés 4 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 23 mars 2011 - 23 mars 2011 à 09:59
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 23 mars 2011 à 11:51
Bonjour,

Le problème est pourtant simple mais pas je n'ai pas encore trouvé de solutions.

J'ai créé des controls personnel dérivant de UserControl.
Dans ma classe pour accéder au texte de mon label je créé une propriété Title comme suit:
        public string Title
        {
            get
            {
                return _Label.Text;
            }
            set
            {
                if (_Label.Text == value) return;
                _Label.Text = value;
            }
        }



Puis j'insère mon control dans mes boites de dialogue.
Jusque là tous fonctionne très bien.




Je souhaite maintenant que mon application soit multilingue.
Sur ma form en mode designer je mets Localizable = true, et choisi la langue que je souhaite.
Je modifie mes Label, pas de souci le nouveau texte est inscrit dans le fichier resx correspondant.

Le probèleme arrive lorsque je modifie la propriété Title de mes control personnel.
Cette propriété n'est pas inscrite dans le fichier resx correspondant à la langue mais dans le InitializeComponent de ma form:
this._PanelChamp_OnCurve_Center.Title = "Center :";

Du coup impossible d'internationaliser mon application.


J'ai refait une nouvelle application de test toute fraiche avec un control et une form pour être sur qu'il n'y ai pas d'interference avec code et j'ai les mêmes soucis. Je ne sais pas d'où ca vient.

Quelqu'un aurait il une idée?
Un attribut spécifique???

5 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
23 mars 2011 à 10:33
Salut,

regarde ce qu'en dit la MSDN ;)
Si tu suis la manip' proposée tu verras qu'un fichier resx est créé par langage.

Bon code
0
akta3d Messages postés 4 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 23 mars 2011
23 mars 2011 à 10:41
Oui ca je suis au courant, :)


Le changement de mon label écrit bien ma traduction francaise dans MaForm.fr.resx et ma traduction anglaise dans MaForm.en.resx.

Mais si je change une propriété d'un UserControl (dans mon cas Title), ni MaForm.fr.resx et ni MaForm.en.resx sont modifiés.

La propriété est modifiée dans le InitializeComponent de ma Form
ex:
this._PanelText_Center_Rayon_Offset.Title = "Rotation (°) :";


D'où mon souci
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
23 mars 2011 à 11:10
Ah oki, j'avais pas bien compris le souci ;)

Je ne vois pas trop l'utilité de ta propriété, mais si j'étais bloqué comme toi je zapperais le mode design et j'écrirais à la mano dans le InitializeComponent la lecture de la valeur dans les resx. Et dans ces derniers, pareil, j'insérerais pour chaque langue la valeur que je souhaite.

Il existe sûrement une méthode plus propre (en implémentant un interface particulière ou en utilisant des code attributes),
mais je l'ai pas sous la main, désolé.
0
akta3d Messages postés 4 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 23 mars 2011
23 mars 2011 à 11:26
Merci de ta réponse,

J'avais bien peur que je soit obligé de tout gérer à la mano.
Mon souci est que j'ai plus de 70 boites de dialogues assez complexe, ca va être du boulot.


Et l'autre souci majeur est que si je retourne en mode design les resX sont complètement réécrit donc toutes les chaines (FR EN) que j'aurais configurer vont disparaitre.


A moins que mon resX ne soit pas lier à ma forme. Et en plus ca me permettrai de n'avoir qu'un seul fichier à traduire au lieu de 70.
Je pense que je vais opter pour cette solution, elle sera peut être même plus simple en cas d'ajout d'une nouvelle langue.


C'est tout de même bizarre que Visual n'est pris en compte ceci???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
23 mars 2011 à 11:51
Comme dit précédemment il doit exister une méthode plus "chiadée" pour gérer ça. Mais il est vrai que crosoft aurait pu fournir interface plus intuitive.
0
Rejoignez-nous