akta3d
Messages postés4Date d'inscriptionvendredi 9 juillet 2004StatutMembreDernière intervention23 mars 2011
-
23 mars 2011 à 09:59
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDerniè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???
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 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é.
akta3d
Messages postés4Date d'inscriptionvendredi 9 juillet 2004StatutMembreDernière intervention23 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???
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 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.