begin process at 2012 02 08 21:51:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > MENUS MULTILINGUES DYNAMIQUES

MENUS MULTILINGUES DYNAMIQUES


 Information sur la source

Note :
Aucune note
Catégorie :Divers Source .NET ( DotNet ) Classé sous :menu, multilingue, dynamique, instantané, multilingual Niveau :Initié Date de création :21/01/2009 Date de mise à jour :21/01/2009 11:05:58 Vu / téléchargé :5 852 / 721

Auteur : william voirol

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Menus multilingues dynamiques
   (Multilingual dynamic menus; Mehrsprachige dynamische Menus)

Mots-clés: c#, menu, multilingue, dynamique, instantané.

Keywords: c#, menu, multilingual, dynamic, instantaneous.

Schlagworte: c#, menu, mehrsprachig, dynamisch, augenblicklich.


Pour la plupart des logiciels, il faut choisir la langue lors de son installation.
Dans certains programmes, comme par exemple les convertisseurs de devises (Currency Converter), il peut être intéressant de passer instantanément d'une langue à une autre, y compris dans les menus.


Dans le fichier source "MenuLang.cs" sont définis les classes nécessaires:
   - MainMenuLang,  dérivée de  MainMenu
   - MenuItemLang,  dérivée de  MenuItem

La construction d'un menu multilingue est similaire à la construction classique.
   - "MainMono.cs" montre une construction classique.
   - "MainLang.cs" montre une extension aux menus multilingues.


Procédé:

1) Remplacer la classe MainMenu du menu principal par
   MainMenuLang (dérivée de MainMenu).
   Le constructeur définit les langues (et leur nombre);

2) Remplacer la classe MenuItem des éléments de menu sensibles
   aux changements de langue par MenuItemLang (dérivée de
   MenuItem). Les menus (et sous-menus) peuvent être composés
   indifféremment d'éléments MenuItem ou MenuItemLang.

3) A l'aide de la méthode "MainMenuLang.AddLangItemsTo",
   ajoutez au menu la liste des langues à séléctionner.
   Cette liste peut être ajoutée à n'importe quel endroit du
   menu (et même à plusieurs endroits !).

4) A la fin de la construction de menu, il faut déterminer la
   langue initiale (MainMenuLang.SelLang = ...).

5) Adaptez la méthode "Form1.Lang_Click" pour effectuer les
   changements instantanés du programme.


 Conclusion

Le zip comporte:

L'article complet (avec sources):  "Article_MenuLang.rtf"

Microsoft Visual C# 2008 Express:  dossier "MenuLang"
   Solution "MenuLang" avec les projets:
      MenuMono: Méthode habituelle: menus à une seule langue
      MenuLang: Avec menus multilingues

------

Solution simple et élégante de créer des programmes vraiment multilingues.


W. Voirol, Switzerland

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) SAUVEGARDE DES TAILLES ET LOCATIONS DES FENÊTRES. par cryt3k
Source avec Zip Source avec une capture Source .NET (Dotnet) TENNIS STATISTIQUES par thebigboss
Source avec Zip Source .NET (Dotnet) TRANSFERT DE DONNÉES, SÉRIALIZATION XML POUR WINFORM par l0r3nz1
Source avec une capture Source .NET (Dotnet) CONTRÔLE TEXTBOX VALIDATEUR par monsieurx12
Source avec Zip Source avec une capture Source .NET (Dotnet) PANEL IRC AVEC MARGE DEPLACABLE ET BACKGROUND IMAGE par yohan49

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONAPPLICATION par toutphp
Source avec Zip OUTIL DE VISUALISATION DE L'INDICE BOURSIER par ajkangoud
Source avec Zip Source avec une capture Source .NET (Dotnet) DÉMINEUR JR par jrscofield
Source avec Zip Source .NET (Dotnet) CAROUSEL EN WPF (USERCONTROL) par CoolSpirit
Source avec Zip Source avec une capture Source .NET (Dotnet) PANNEAUX DYNAMIQUES (MENU ASCENSSEUR) par Robert33

Commentaires et avis

Commentaire de sebmafate le 21/01/2009 11:05:15 administrateur CS

Merci de ne pas mettre de commentaire dans zone "Code"

Commentaire de oximoron le 22/01/2009 13:34:20

Salut,
Quelques points ou tu pourrais peut être m'éclairer :
- On ne peut plus ouvrir la fenêtre en designer (dans ton projet d'exemple).
- On est obligé de construire son menu dynamiquement (enfin j'ai pas réussi à le faire toujours par le designer de visual) ça va pour les menus simples, mais quand on commence avoir un menu avec images et sous menus c'est un peu plus long en code ...
- Avoir les traductions dans un(des) fichier(s) plutôt qu'au fin fond du code en dur.
- Ça traduit uniquement les menus ... c'est pas plus simple de faire une classe de traduction qui va s'adapter au type du contrôle, plutôt qu'adapter tous les contrôles ?

Commentaire de RICHERBE le 05/02/2009 11:04:46

Il est plus général d'utiliser ResourceManager qui permet d'utiliser un fichier externe contenant tout les Textes que vous êtes amené à utiliser traduit dans toutes les langues utilisées.
Dans une class "Langue" :
- dans le constructeur de la Class vous rajoutez :
    public Assembly MyAssembly;
    public ResourceManager MyManager;
    public ResourceManager MyManagerImage;
    MyAssembly = Assembly.GetExecutingAssembly();
    MyManager = new ResourceManager("Masolution.MesTextes", MyAssembly);
    InitializeComponent();

- Dans cette classe vous rajoutez une fonction (exemple):
    public String MMGS(String NumMsg)
    {
        .
        .
        return MyManager.GetString("M" + CodeLangue + NumMsg)
        .
        .
    }

CodeLang doit être une variable public initialisée au code langue en cours comme par exemple "FR" pour le français, "EN" pour l'anglais, "DE" etc...
Dans ce cas il faut créer un fichier (MesTextes.txt) des Textes à utiliser comme par exemple
MFR001= texte 1 en Français
MEN001= texte 1 en anglais
MDE001= texte 1 en allemand
etc...
Ensuite dans le projet il faut rajouter une resource par exemple :
MesTextes.resx
Ensuite il faut génrer le fichier resource en utilisant l'utilitaire resgen qui
se trouve dans ....\SDK\V2.0\bin
commande : resgen MesTextes.txt MesTextes.resx

Enfin dans votre programme quand vous souhaitez initialiser un Menu, un label.Text, un TextBox.Text, un GroupBox.Text etc... bref tout ce que vous afficher, vous appelez la routine MMGS.
Dernier pb que vous aurez à résoudre la MessageBox.Show qui elle n'utilise pas la langue de CultureInfo etc.. mais dépend tout simplement de la langue du système d'exploitation et qui par conséquent si vous avez installer Windows en français les boutons de vos message seront toujours OUI, NON etc..
Une seule solution si vous voulez que votre applicatif parle totalement la langue choisie, faire votre propre Class MessageBOx et gérer les textes des boutons dans les langues que vous voulez en utilisant la routine MMGS.
Vous pouvez aussi utiliser cette méthode pour récupérer les Drapeaux de votre langue en créer une resource MesImages.resx et un appel à Resource Manager comme
par exemple :
pictureBoxDrapeu.Image = (Bitmap) MyManagerImage.GetObject("Nom de l'image");

Bon courage


Commentaire de RICHERBE le 05/02/2009 11:07:55

J'ai oublié dans le constructeur :
MyManagerImage = new ResourceManager("Masolution.MesImages", MyAssembly);

Commentaire de gillardg le 17/10/2009 15:52:02

bonjour,
c'est très long tout ça.
je suis occupé à étudier le problème actuellement
et ma réflexion m'a amené à penser qu'il serait judicieux de dériver tous les contrôles .Net
en y ajoutant une propriété lang
+ une classe commune avec un tableau de langue as string
et un fichier csv contenant les traductions, mais c'est beaucoup de boulot pour un seul homme :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

debutant: System.EventHandler avec menu dynamique. [ par AppleSeed ] kikoo tous le monde. bon voila mon pb: g crée un menu dynamique, et g besoin de recup les infos de l item sur lequelle g clické, notament son .Text... Coimment créer un menu dynamique [ par stigmate101 ] Salut,Je cherche à créer un menu dynamique.Je vous explique : un utilisateur à un profil.A ce profil est associé les éléments d'un menu.Le menu doit s menu dynamique en xml [ par 070107198 ] rachbonjour Svp, je travail sur un projet web en ASP2.0 est ce que qlq peut m'indiquer comment peut-on faire pour afficher un menu dynamique en foncti intégration d'un menu créé par une librairie externe qui me renvoie un HMENU, dans mon appli en c# [ par jchoplin ] Bonjour,Mon programme en C# fait appel à une librairie pour créer un menu à intégrer. Cette librairie me renvoie un HMENU (donc un Affichage dynamique [ par gazalii ] bonjour a vous tous ,pourriez vous m'aider a trouve une solution a mon probleme en fait je veux afficher des images mais leurs nembres et liens se tro Sauter le menu Save as lors de l'impression d'un document [ par lucasd ] Salut tt le monde.Voilà j'utilise une imprimante qui me sort de fichier ps (ou pdf peu importe).J'aimerais savoir comment je peux sauter le menu creation dynamique [ par gazalii ] bonjour ,j'ai un petit probleme je n'arrive pas a trouver comment creer dynamiquement des textebox selon une variable qui determine le nombre des text Ajouter une icone à un bouton et à un menu [ par hlayachi ] Bonjourje veux ajouter une icone à mon bouton, quelqu'un sait comment?et la même chose pour l'ajout d'une icone à mon menu, càd si créer un Menu ressemblant à la boîte à outil C#.net 2003 [ par olivierbalagizi ] Bonjour, Je cherche à créer un menu général de mon application et je veux qu'il ressemble à la boîte à outil de C#.net 2003 c'est à dire contenant des Ajouter des icônes à un menu [ par olivierbalagizi ] Salut,J'aimerai savoir comment ajouter une icône sur un meuItem dans le menu sous C#.net 2003. Voudriez-vous bien m'aider s'il vous pla&#238


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales