Bonjour,
Je souhaiterais gérer la traduction d'une nouvelle application Delphi XE4.
=> Dans les options de l'application, on pourra sélectionner la langue affichée
L'idée est de charger un fichier ini (UNICODE) avec la traduction correspondante.
langFRA.ini
Ex:
langENG.inidemo_formcaption = 'Titre de l''application';
demo_captionbutOK = 'Validation';
Ex:
langALL.inidemo_formcaption = 'Title application';
demo_captionbutOK = 'Validate';
langRUS.ini
langCN.ini
...
Je souhaiterais traduire (En fonction de la langue choisie dans l'appli et non en fonction de la langue du poste) :
- Les chaines Delphi
ex : Indice de liste hors limite...
- Les chaines de mon application (caption, hint, message...)
En surfant sur le net, j'ai vu que LA FACON de gérer la traduction est d'utiliser les ResourceString.
Par contre j'ai X questions car je n'ai pas trouvé d'exemples complet et je ne connais pas le principe de A à Z.
Pour résumer ce que je dois faire
1.0- La déclaration des ressourceString dans l'applicatif
Ce que j'ai trouvé :
2.0- Extraire les resourceString du projet Delphi ("constante" + chaine) pour enregistrer dans un fichier langREF.ini : utile pour la constitution du fichier ini et pour donner le fichier pour traduction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 unit trad; interface resourcestring demo_formcaption = 'Titre de l''application'; demo_captionbutOK = 'Valider'; implementation end.
3.0- Utilisation d'une resourceString
Ce que j'ai trouvé mais sans la gestion $3.1 :
3.1- Si pas de fichier ini chargé, le programme doit utiliser les resourceString renseigné dans l'application
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Caption:= stl_formcaption //ou Caption:= LoadResString(@stl_formcaption);
Si fichier ini chargé, le programme doit utiliser le resourceString traduit du fichier ini (si non trouvé, utilser celui renseigné dans l'application)
4.0- Procédure d'initialisation pour le changement de traduction à la volée
5.0- Lorsque j'ajoute de nouvelle resourceString, la trad existante fonctionne toujours : se baser sur le nom de la resourceString et non sur un ID...
Comment faire tout ceci ? Comment procéder ?
Un exemple ou une démo serait la bienvenue.
Merci beaucoup.
Partager