bonne journeé , je suis nouveau dans ce furom et debutant en delphi, je veux faire une petite application en delphi en utilisant un menu bilingue en arabe et en francais ,et je ne sais pas le faire, peux t'on m'aider et merci d'avance
bonne journeé , je suis nouveau dans ce furom et debutant en delphi, je veux faire une petite application en delphi en utilisant un menu bilingue en arabe et en francais ,et je ne sais pas le faire, peux t'on m'aider et merci d'avance
Une solution simple serait d'avoir un fichier ini qui contient la correspondance de langue !
cela pourrait donner une fichier de la forme suivante :
Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 [Français] mnuTruc=Bonjour mnuBidule=Au Revoir [Arabe] mnuTruc=... mnuBidule=...
Après cela dépend de ta version de Delphi (avant 2009), pour afficher de l'Arabe dans une application ANSI :
* soit tu passes pas des composants UniCode tel que TNT ou TMS
* soit tu détecte la langue de l'OS, et tu choisi la section de l'ini en fonction de la la langue de l'OS
* soit tu détecte la langue des applications non-Unicode et tu choisi la langue en fonction
Si tu as 2009 à XE2, le problème ne se pose plus !
Cherche sur le Forum, ce sujet est régulièrement débattu !
Quelle est la difficulté ?
Tu as juste à utiliser TMainMenu et ses Items
Tu fais une boucle récursive sur les TMenuItem
Tu utilise la propriétés TMenuItem.Name comme clé dans TIniFile.ReadString
Le Résultat de ReadString tu l'affecte dans TMenuItem.Caption
Propose nous un code, nous pourrons t'aider à la corriger !
Voici un équivalent C++Builder
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void Translate(TMenuItem *AItems, AnsiString ALangue) { TIniFile *Ini = new TIniFile("C:\\Dossier\\Dossier\\FichierLangue.ini"); try { _Translate(AItems, Ini, ALangue); } __finally { delete Ini; } } void _Translate(TMenuItem *AItems, TIniFile *AIni, AnsiString ALangue) { AItems->Caption = AIni->ReadString(Langue, AItems->Name, AItems->Name); for (int i = 0; i < AItems->Count; i++) _Translate(AItems->Items[i], AIni, ALangue); }
l'appel serait
Code : Sélectionner tout - Visualiser dans une fenêtre à part Translate(MainMenu1.Items, 'Français');
Une autre solution... http://www.obones.com/codeway3
Tu as déjà essayé de comprendre ?
Je t'ai fourni un code C++Builder, tu n'as qu'à le traduire en Delphi, si tu veux apprendre la programmation en loisirs, c'est très formateur !
Whiler a fourni carrément le lien vers une library complète, il y a une vidéo démonstrative, regarde là ! Reviens avec des questions précises !
Si tu attends juste que l'on te fasse tout, tu n'auras rien !
Et on peut aussi faire la vaisselle...
La méthode de Shail est assez simple d'utilisation.
1) tu créé un fichier ini avec 2 sections
[Langue1]
[Langue2]
2) dans chaque section
[Langue1]
Menu1=Général
Menu1Rubrique1=Fichier
Menu1Rubrique2=Ouvrir
Menu1Rubrique3=Quitter
[Langue2]
Menu1=MainMenu
Menu1Rubrique1=File
Menu1Rubrique2=Open
Menu1Rubrique3=Quit
Pour Lire un fichier INI tu peux utiliser la FAQ du site
3) tu as créé dans DELPHI ton TMENU, c'est là qu'il faut que tu nomme chaque propriété NAME de ton menu en corélation avec ton fichier INI.
4) A l'ouverture de ton application :
- Tu lis la valeur de la langue du windows de ton utilisateur
- par exemple dans ton ONCREATE de ta form principal tu parcours ton TMEMU et pour chaque valeur de ta section égale au NAME de ton temnu tu affecte ton caption..
petit + : Je rajouterais une rubrique spéciale ou tu aurais le choix de la langue dans ton menu pour pouvoir changer pendant l'éxecution.
A+
[EDIT] : coiffé par Shail...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager