Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1312 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET] Gestion du multilingue ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#.NET] Gestion du multilingue ?

n°1452864
ParadoX
Posté le 05-10-2006 à 16:09:31  profilanswer
 


Bonjour,
 
Je suis tombé sur ce tutorial en googlant:
http://morpheus.developpez.com/localisationdotnet/
 
Cela m'a bien aidé, cependant j'ai encore un probleme: j'ai une appli avec des menus, et je les ai traduits (via la Gui, en changeant la prop "Language" ). Maintenant, j'aimerais faire comme dans le tutorial, cad changer la langue en execution via un element du menu.
 
J'ai bindé l'action
 

Code :
  1. System.Threading.Thread.CurrentThread.CurrentUICulture = EnglishCulture;


 
à cet élément du menu, mais quand je l'actionne, rien ne se passe. C'est surement dû au fait que l'affichage des textes n'est pas mis à jour. Ma question: comment forcer la mise à jour des elements du menu ? Autant pour un Label ou autre chose, le tutorial l'explique, autant la je bloque ^^
 
Merci d'avance :)
 
 :hello:


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
mood
Publicité
Posté le 05-10-2006 à 16:09:31  profilanswer
 

n°1453072
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-10-2006 à 20:23:41  profilanswer
 

ParadoX a écrit :


à cet élément du menu, mais quand je l'actionne, rien ne se passe. C'est surement dû au fait que l'affichage des textes n'est pas mis à jour. Ma question: comment forcer la mise à jour des elements du menu ? Autant pour un Label ou autre chose, le tutorial l'explique, autant la je bloque ^^
 
Merci d'avance :)
 
 :hello:


il ne suffit pas de définir la culture courante du thread, il faut aussi mettre les textes à jour via la méthode GetString() de ton ResourceManager.
voici ce qui se passe quand je définis la langue de mon plugin en anglais par exemple :

Code :
  1. // d'abord le handler prenant en charge le controle radio
  2. private void radioEnglish_CheckedChanged(object sender, EventArgs e)
  3. {
  4.    if (!radioEnglish.Checked)
  5.       return;
  6.    UpdateLabels(EnglishCulture);
  7. }
  8. // puis la fonction qui met à jour les chaines de caractères
  9. private void UpdateLabels(CultureInfo culture)
  10. {
  11.    Thread.CurrentThread.CurrentUICulture = culture;
  12.    lblNPPattern.Text = rm.GetString("Config_PluginConfig_NPPattern" );
  13.    lblPassword.Text = rm.GetString("Config_Generales_Pass" );
  14.    lblProxyPort.Text = rm.GetString("Config_PluginConfig_ProxyPort" );
  15.    lblProxyURL.Text = rm.GetString("Config_PluginConfig_ProxyUrl" );
  16.    lblProxyLogin.Text = rm.GetString("Config_PluginConfig_ProxyLogin" );
  17.    lblProxyPass.Text = rm.GetString("Config_PluginConfig_ProxyPass" );
  18.    chkProxy.Text = rm.GetString("Config_PluginConfig_ProxyUse" );
  19.    lblPseudo.Text = rm.GetString("Config_Generales_Pseudo" );
  20.    lblReading.Text = rm.GetString("Config_PluginConfig_SigLecture" );
  21.    lblStop.Text = rm.GetString("Config_PluginConfig_SigStop" );
  22.    chkPluginOn.Text = rm.GetString("Config_PluginConfig_Actif" );
  23.    chkDiscofeel.Text = rm.GetString("Config_PluginConfig_SiteActif" );
  24.    cmdValider.Text = rm.GetString("Config_BtValider" );
  25. }


 
edit: d'ailleurs je viens de me rendre compte que le paramètre culture de ma fonction UpdateLabels est inutile, il suffirait juste que je définisse la culture du thread dans le handler.


Message édité par Harkonnen le 05-10-2006 à 20:27:29

---------------
J'ai un string dans l'array (Paris Hilton)
n°1453085
ParadoX
Posté le 05-10-2006 à 20:39:16  profilanswer
 

Hm d'après le tuto, j'avais compris ça, mais ... ma question était plutot orientée vers les Textes des Menus. Avec VS2005, on peut renommer les menus avec la GUI (en changeant la prop Language de la form). En faisant ça, il écrit automatiquement le texte en fonction de la langue dans le fichier de ressources.  
 
Maintenant à quoi ça sert si je dois quand meme redéfinir à la main la propriété .Text ? (seulement pour les menus, hein :))


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1453087
moi23372
Posté le 05-10-2006 à 20:45:23  profilanswer
 

faut pas oublié que la propriété "LOCALISABLE" doit etre à true de la fenêtre concerné.  
 
Sinon, je peux te filer une fonction demain qui te traduira tout cela... faut juste que je la retrouve au boulot demain.

n°1453090
ParadoX
Posté le 05-10-2006 à 20:49:25  profilanswer
 

moi23372 a écrit :

faut pas oublié que la propriété "LOCALISABLE" doit etre à true de la fenêtre concerné.  
 
Sinon, je peux te filer une fonction demain qui te traduira tout cela... faut juste que je la retrouve au boulot demain.


 
Yep, comme montré ds le tuto, j'ai mis localisable à true :) D'ailleurs, j'imagine qu'il faut le faire pour toutes les forms concernées, non ?
Et sinon, la fonction, je veux bien, mais ... elle traduit quoi en quoi ? ^^


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1453102
MagicBuzz
Posté le 05-10-2006 à 21:37:15  profilanswer
 

Sinon, une autre solution, c'est de rappeler juste après le changement de culture :
 

Code :
  1. this.Controls.Clear();
  2. InitializeComponent();


 
Testé : ça marche.
Par contre, ça réinitialise toute la form, donc si y'a un traîtement en cours ou des modifications effectuées par l'utilisateur bah...
 
L'intérêt, c'est quand même que t'es sûr d'appliquer la modif à tous les contrôles de la form, sans risque d'en oublier un.

Message cité 1 fois
Message édité par MagicBuzz le 05-10-2006 à 21:39:18
n°1453104
ParadoX
Posté le 05-10-2006 à 21:43:22  profilanswer
 

MagicBuzz a écrit :

Sinon, une autre solution, c'est de rappeler juste après le changement de culture :
 

Code :
  1. this.Controls.Clear();
  2. InitializeComponent();


 
Testé : ça marche.
Par contre, ça réinitialise toute la form, donc si y'a un traîtement en cours ou des modifications effectuées par l'utilisateur bah...
 
L'intérêt, c'est quand même que t'es sûr d'appliquer la modif à tous les contrôles de la form, sans risque d'en oublier un.


 
Je tente ça demain, merci :)


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt
n°1453129
MagicBuzz
Posté le 05-10-2006 à 22:50:00  profilanswer
 

J'oubliais : le second intérêt, c'est que tu peux décider d'utiliser des layout / images différents selon la langue.
 
Par exemple, afficher "ParadoX France" sous forme d'image quant t'es en "fr-fr", "ParadoX US" sous forme d'une autre image, d'une autre taille, pour la version "en-us".
 
Et surtout, si tu fais une version arabe, tu voudras que la fenêtre soit positionnée de droite à gauche et non l'inverse.
 
Avec mon système, ça marche "tout seul".
Avec le système d'Harko, ça marche aussi, mais faut appliquer les ressources pour chaque propriété de chaque élément, ce qui peut rapidement s'avérer cauchemardesque.


Message édité par MagicBuzz le 05-10-2006 à 22:51:35
n°1453134
ParadoX
Posté le 05-10-2006 à 22:57:07  profilanswer
 

Yep, c'est pas con du tout :jap:  
Puis pour ce qui est des modifications perdues lors du changement langue, c'est pas si dramatique que ça, pis c'est toujours mieux que de faire redémarrer l'application à l'utilisateur :)


---------------
Pier noir la mèr - La chanson par HFR Band - Topic TrueCrypt

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#.NET] Gestion du multilingue ?

 

Sujets relatifs
installation d'un serveur de Gestion de version (Subversion ?)Partage de session entre applications .NET
[.Net C# 2.0]Afficher les categories / sous-categories d'un forum[ASP.NET] Tableau de bord de ce genre , est-ce Realisable ?
[VB.NET] Fermer un processus ouvert avec "GetObject" ???.NET] Je cherche un librairie open source pour convertir PDF ->Image !
[C#.NET] Afficher une zone d'un fichier PDF dans une fenetre ?[C#.NET] Extraire une image d'une image en fonction d'un rectangle ?
[C#.NET] Focer une fenetre en arriere plan à venir devant ?[ASP.NET] Textbox - Propose valeur durant la frappe ?
Plus de sujets relatifs à : [C#.NET] Gestion du multilingue ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR