Traduction multilingue [Résolu]

Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
- - Dernière réponse : cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 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.

Merci
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
3
Merci
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.

un p'tit clic sur réponse acceptée..

cantador

Merci cs_cantador 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
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 !

cantador
Commenter la réponse de cs_cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
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.

Merci
Commenter la réponse de kana13
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
un p'tit fichier langues.text :




Allemand
Anglais
Arabe
Espagnol
Français
Italien

et ..

unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1CloseUp(Sender: TObject);
  private
    { Déclarations privées }
    procedure StockageLangues;
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;


implementation


{$R *.dfm}


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
Commenter la réponse de cs_cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
merci,
C'est trop cool. Je vais essayer avec cette unité.
 
Commenter la réponse de kana13
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
j'ai un pb avec le Oncloseup; il m'affiche toujo 'ok'. A l'éxecution dans le combobox, je n'ai pas la liste des langues. 

Kana13
Commenter la réponse de kana13
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
Tu as dû oublier quelque chose parce que le programme marche nickel..
je l'ai testé...

cantador
Commenter la réponse de cs_cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
Désolé d'insister; j'ai tout simplement testé la partie que tu m'as filé mais cela toujours pas.

kana13
Commenter la réponse de kana13
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
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.

voilà c'est tout !

cantador
Commenter la réponse de cs_cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
Bonjour,
J'avais déjà tout créé et fait le fichier texte et tout, en plus c'est simple à faire . Mais ça ne fonctionne pas.
 Merci de ton aide.

voilà c'était tout !
 
Commenter la réponse de kana13
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
c'est pas possible..

quelle est ta version de delphi ?
est ce que la compilation fonctionne ?
quel est le message d'erreur ?

cantador
Commenter la réponse de cs_cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
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" .
Commenter la réponse de kana13
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
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.

cantador
Commenter la réponse de cs_cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Dernière intervention
1 décembre 2008
0
Merci
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).

Maintenant je vais m'attaquer à la traduction.

Merci encore

Kana13
Commenter la réponse de kana13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.