Traduction multilingue

Résolu
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 décembre 2008 - 4 nov. 2008 à 09:17
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 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.

Merci

14 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
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.

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

cantador
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
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 !

cantador
0
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Derniè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.

Merci
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 nov. 2008 à 12:15
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 décembre 2008
4 nov. 2008 à 12:20
merci,
C'est trop cool. Je vais essayer avec cette unité.
 
0
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 décembre 2008
4 nov. 2008 à 13:26
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 nov. 2008 à 15:20
Tu as dû oublier quelque chose parce que le programme marche nickel..
je l'ai testé...

cantador
0
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 décembre 2008
4 nov. 2008 à 15:42
Désolé d'insister; j'ai tout simplement testé la partie que tu m'as filé mais cela toujours pas.

kana13
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
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.

voilà c'est tout !

cantador
0
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 décembre 2008
5 nov. 2008 à 08:55
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 !
 
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 nov. 2008 à 09:04
c'est pas possible..

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

cantador
0
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Derniè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" .
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
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.

cantador
0
kana13 Messages postés 15 Date d'inscription vendredi 24 octobre 2008 Statut Membre Derniè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).

Maintenant je vais m'attaquer à la traduction.

Merci encore

Kana13
0
Rejoignez-nous