Utilisation de la localisation dans Delphi 2010
Bonjour
Notre projet est présentement en Delphi 7, et nous sommes en train de le convertir en delphi 2010. Notre projet D7 est localisé à l'aide de TSILang. Je suis à regarder si les outils de D2010 pour la localisation pourraient faire l'affaire.
J'ai suivi les étapes standards données dans l'aide de D2010, soit faire Projet->Langues->Ajouter. J'ai ajouté deux locales, une Français Canada, et une Anglais Canada. Dans le projet, les deux locales y sont bien, avec les extensions .FRC et .ENC.
Afin de tester que cela fonctionne, je modifie un item dans la version FRC de la localisation. Je compile tout et génère les .exe, .enc et .frc. Je place les exécutables et les locales dans le répertoire de démarrage du projet. Quand je démarre le projet, la modification n'apparaît pas.
J'ai eu beau chercher dans l'aide, j'ai fait des recherches via google, j'ai essayé de toutes sortes de manières, rien n'y fait, ça ne fonctionne pas.
Je suis un peu à bout, comme cela doit faire plusieurs heures que je mets sur cela.
Est-ce qu'il y a quelqu'un qui a une idée de ce qui manquerait pour que cela fonctionne?
Merci
Notes : je suis sur win XP, et les options régionales sont à <Français (Canada)>
Et encore la localisation
Bonsoir,
Je suis comme vous, j'hésite à utiliser l'outil intégré à Delphi.
GetText bien, mais j'aime comprendre comment marche les composants tiers.
Mon application gérant une base de données SQL, je me suis dit qu'il doit être simple d'intégrer une base de données comportant autant de tables que d'unités Pascal, autant de champs que de resourcestrings et autant de lignes que de langues.
Et bien j'ai passé un mois de recherche sur Internet pour voir comment fonctionnent les resourcestrings. Je ne suis apparemment pas le seul.
J'ai compris comment les lire ( findresource, loadresource, lockresource) mais pour les modifier je n'ai rien trouvé d'efficace à part la fonction déjà donnée dans le forum changeresourcestring(ResStringRec:PResStringRec;Newstr:pchar). On obtient ainsi pour changer le bouton oui de la boite de dialogue changeresourcestring(@SMsgDlgYes,'Si') en espagnol....
La difficulté est de pouvoir passer en paramètres les deux termes de la fonction et là cela ne fonctionne plus. Les titres de mes champs SQL comportent le nom de la resourcestring donc j'ai voulu faire addr(nom_champ) mais bien sûr l'adresse mémoire n'est pas la bonne et après plusieurs essais j'ai abandonné.
C'est pas grave étant têtu, j'ai utilisé le fichier drc généré par le compilateur delphi pour me créer autant de lignes Pascal que j'ai de resourcestring (beaucoup) en me disant tant pis pour le premier terme. Cela donne la fonction suivante: changeresourcestring(@MaResource,trouv_ressourc(MaRessource));
MaRessouce étant une ressource parmi toutes celles de mon programme et
trouv_ressourc est une fonction tout bête qui attend en entrée le nom de la ressource et en sortie me renvoie la chaine traduite en anglais en espagnol.... suivant la nationalité de l'utilisateur.
Mais là aussi je ne pointe pas au bon endroit.
Dans le cas ou MaRessource='Si'
changeresourcestring(@MaResource,'Si'); fonctionne
changeresourcestring(@MaResource,trouv_ressourc(MaRessource)); ne fonctionne pas.
Quand je code en dur le texte cela fonctionne et quand il s'agit d'un résultat d'une fonction (même s'il est bon) il me donne un résultat autre et qui revient souvient même pour d'autres ressources.
Je comprends l'usage des pointeurs mais je ne les maitrise pas.
Avant de transformer toutes mes resourcestring en string toutes simples je lance un petit "Au Secours" aux membres de ce forum.
Si vous voulez plus de détails en code n'hésitez pas.
Cordialement