kana13
Messages postés15Date d'inscriptionvendredi 24 octobre 2008StatutMembreDernière intervention 1 décembre 2008
-
4 nov. 2008 à 09:17
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
5 nov. 2008 à 10:59
Bonjour,
Je voudrais faire traduire l'interface de mon application en plusieurs langues en utilisant un combox. Si vous pouvez m'apporter quelques suggestions.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 5 nov. 2008 à 10:59
Ouf !
Heu, juste un truc la procédure StockageLangues n'a pas sa place dans le
OnCloseUp, car à chaque clic, il va recharger la liste !
Il ne faut l'exécuter qu'une seule fois..donc sur le OnCreate.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 4 nov. 2008 à 11:29
bonjour,
question amusante car la difficulté ne se situe vraisemblablement pas au niveau du ComBox qui lui va se contenter de lister simplement les différentes langues choisies et sur l'évènement OnCloseUp tu lanceras ton programme de traduction.
reste cependant à traduire tes textes dans les différentes langues..
à moins que ce ne soit déjà fait !
kana13
Messages postés15Date d'inscriptionvendredi 24 octobre 2008StatutMembreDernière intervention 1 décembre 2008 4 nov. 2008 à 11:36
La traduction ne me pose pas de probléme; j'ai déjà créé des fichiers textes qui contient les différentes versions . Mais je n'arrivais pas à gérer le combox car je prenais l'evt onclick au de lieu de oncloseup. Je vais le tester pour voir ce que cela va donner.
procedure Traduction(langue: string);
begin
showmessage(langue);
////// programme de traduction ////
end;
procedure TForm1.StockageLangues; // Stockage des langues dans le combo
var
i: integer;
SL: TStringList;
begin
try
ComboBox1.Text := 'Anglais';
SL := TStringList.Create;
SL.LoadFromFile('Langues.txt');
for i := 0 to SL.Count - 1 do
ComboBox1.Items.Add(SL.Strings[i]);
finally
SL.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StockageLangues;
end;
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
Traduction(ComboBox1.Items.strings[ComboBox1.ItemIndex]);
end;
end.
cantador
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 4 nov. 2008 à 16:20
ben simple créer le petit fichier Langues.txt (à placer dans le dossier du projet)
et
faire nouvelle application
poser un comboBox sur la forme et
recopier tout l'unit1 dans le projet.
kana13
Messages postés15Date d'inscriptionvendredi 24 octobre 2008StatutMembreDernière intervention 1 décembre 2008 5 nov. 2008 à 09:14
J'ai la version Delphi Entreprise 7.
A la fin de la compilation, j'ai juste un message d'avertissement : "[Avertissement] Unit1.pas(46): La variable 'SL' n'est peut-être pas initialisée.
A part ça, dés que je clique sur le menu déroulant de la combobox; il m'affiche " ok" .
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 5 nov. 2008 à 09:44
A la fin de la compilation, j'ai juste un message d'avertissement : "[Avertissement] Unit1.pas(46): La variable 'SL' n'est peut-être pas initialisée.
ce message n'est pas grave, pour le supprimer, rajoute la ligne suivante :
procedure TForm1.StockageLangues; // Stockage des langues dans le combo
var
i: integer;
SL: TStringList;
begin
SL := nil; try
ComboBox1.Text := 'Anglais';
SL := TStringList.Create;
SL.LoadFromFile('Langues.txt');
for i := 0 to SL.Count - 1 do
ComboBox1.Items.Add(SL.Strings[i]);
finally
SL.Free;
end;
end;
MAIS pour le 'ok', c'est quoi ce truc ?
Est ce que ton fichier Langues.txt (attention à la syntaxe!) est bien chargé ?
mets des points d'arrêts et teste la valeur de SL.Count.
kana13
Messages postés15Date d'inscriptionvendredi 24 octobre 2008StatutMembreDernière intervention 1 décembre 2008 5 nov. 2008 à 10:44
C'est bon, j'ai la liste des langues qui s'affiche dans le combobox. En fait, j'ai :
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
StockageLangues;
//Traduction(ComboBox1.Items.strings[ComboBox1.ItemIndex]);
end;
Le " ok" qui s'affiche à la fin est dû à la fonction Traduction( vide pour l'instant).