Traduction multilingue [Résolu]

Signaler
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008
-
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
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

14 réponses

Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

merci,
C'est trop cool. Je vais essayer avec cette unité.
 
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
Tu as dû oublier quelque chose parce que le programme marche nickel..
je l'ai testé...

cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

Désolé d'insister; j'ai tout simplement testé la partie que tu m'as filé mais cela toujours pas.

kana13
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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 !
 
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
c'est pas possible..

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

cantador
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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" .
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
13
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
Messages postés
15
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 décembre 2008

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