IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Utilisation de la localisation dans Delphi 2010


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut 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)>

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Si tout s'est passé correctement , l'outil a fait les choses suivante
    création des langues en 3 étapes
    - une première sauvegarde
    - création des fichiers langues
    - compilation

    Après modification des forms , et si existent des ressources strings
    il faut ensuite ne pas oublier de construire les dll langues

    Ensuite , pour tester la version il faut utiliser l'option du menu
    Projet/langues/activer pour basculer de l'une a l'autre

    ATTENTION : cela ne fonctionne pas toujours , a mon grand dam je m'en suis aperçu , dans ces cas il faut aller dans la base de registre
    HKEY_CURRENT_USER\Software\CodeGear\Locales
    modifier la valeur de <nom du programme> , dans ton cas FRC ou ENC

    pour toutes modifications du programme , ne pas oublié de refaire les étapes citées (sous peine de voir des fonctions ne pas fonctionner , enfin ça peut être intentionnel)

    j'ai posté sur le forum une solution (pas jolie) pour basculer d'une langue a une autre sans avoir a redémarrer le programme
    ici
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Moi, j'oublierais les outils de Delphi pour faire ça et j'utiliserais DxGetText. Mais ce n'est qu'un avis très personnel.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Moi, j'oublierais les outils de Delphi pour faire ça et j'utiliserais DxGetText. Mais ce n'est qu'un avis très personnel.
    Sauf que la dernière version est pour D2009 et le changement vers unicode est en D2010 si je ne m'abuse donc pas sur qu'il fonctionne correctement.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Tout ce que je peux dire, c'est que j'ai installé et (brièvement) testé la dernière version sur Delphi XE2 et que ça ne pose pas de problème.

    Extrait du fichier gnugettext.pas que j'ai ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {$ifdef VER200}
      // Delphi 2009 with Unicode
    {$endif}
    Je peux transmettre le fichier si besoin est.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Delphi 2009 est bien la 1ère version Unicode !
    Delphi 2010 est la 1ère version stable en Unicode !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Delphi 2009 est bien la 1ère version Unicode !
    Delphi 2010 est la 1ère version stable en Unicode !
    Lol, ok donc ça peut fonctionner
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut 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

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    @Patrey ton Post mériterais de faire un nouveau sujet

    Citation Envoyé par Papy214 Voir le message
    Moi, j'oublierais les outil de Delphi pour faire ça et j'utiliserais DxGetText. Mais ce n'est qu'un avis très personnel.
    C'est ce que j'utilise avec Lazarus

    J'ai testé cet outil pour un 'petit programme' , après beaucoup de tâtonnements (je regrette ce bon vieil éditeur de ressource) cela me semblait concluant . Au fil de la modification de ce dernier par contre ....


    Conclusion l'outil de D2010 fonctionne avec plusieurs MAIS
    - l'utilitaire n'est pas tip top, un tri sur chaine caractère aurait été bienvenu
    - la version d'origine doit être bien finalisée , une modification peut devenir galère
    - il faut avoir les sources des composants
    ce qui donne quelques galères supplémentaires
    par exemple Rave pose problème (voir dans le forum Rave)
    certains composants déjà localisé également
    - le passage d'une langue a l'autre est loin d'être évident (la modif de la base de registre ne fonctionne pas toujours via l'option de l'IDE)
    - Impossible de passer d'une Langue à La langue d'origine (dans le programme) sans redémarrer le programme sauf a créer une 'traduction' pour cette langue d'origine (voir Post a ce sujet dansce forum)

    Bref c'est loin d'être l'outil idéal même T.Laborde en convenait lors d'un "CodeGear Way Tour" il m'avait suggéré un autre outil (hélas je n'avais pas noté son nom )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Je pense qu'il parlait de DKLang

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Je pense qu'il parlait de DKLang
    on devait être au même , quoique DKLang s'arrête à la version D2009 en RC et on était sur du XE .
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    J'en ai essayé plusieurs dont l'outil intégré à Delphi, dxgettext, et depuis j'utilise que celui la :
    http://www.be-precision.com/products/precision-langs/

    Compatible Delphi/FreePascal
    Gratuit
    Éditeur pas chère et pratique.
    Facile à utiliser

    Et le plus c'est la traduction des composants tiers assez facile.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci de m'avoir lu SergioMaster mais je ne savais pas où placer mon post.
    Je ne veux pas faire un composant et je n'ai trouvé que ce fil de discussions qui parle d'internationaliser nos applications sous Delphi.

    J'ai trouvé l'origine de mon problème, changeresourcestring(@MaResource,trouv_ressourc(MaRessource)) ne marche pas
    alors que changeresourcestring(@MaResource,'SI') fonctionne sans problème.

    Quand on cast un string en pchar on doit s'assurer de l'existence de ce pchar tout au long de la vie du programme. En clair on doit créer une tstringlist (list_traduction) qui comportera toutes les chaines traduites et on fait ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    procedure traduit_ressourc(ResString: pResStringRec;nom:string);
       var f:integer;
           oldprotect:dword;
       begin
        lit_nom_ressource.movefirst;
        for f := 0 to tot - 1 do
         if nom<>lit_nom_ressource.FieldAsString(1) then lit_nom_ressource.next
             else
              begin          
                 menu_ppal.list_traduction.add(lit_text_chaine_ress.FieldAsString(f));         
               VirtualProtect(resstring, Sizeof(resstring^),   PAGE_EXECUTE_READWRITE,@oldProtect);         
               try          
                ResString^.Identifier := Integer(pchar(menu_ppal.list_traduction[menu_ppal.list_traduction.Count-1]));
               finally           
                VirtualProtect(resstring, SizeOf(resstring^), oldProtect, @oldProtect);
               end;
              break;
             end;
       end;
    Je liste dans ma base sql, chaque table correspondant à mes traductions de chaque unité. Cette base de données peut être modifiée en dehors de delphi ou de mon programme, par Firefox par exemple qui utilise un très bon gestionnaire SQLite.

    Le seul soucis est qu'il faut que je code autant de de lignes différentes qu'il y a de chaines de texte; changeresourcestring(@strOUI,'Yes'),changeresourcestring(@strNON,'Non') ... car je n'ai pas réussi à mettre dans une boucle la partie pointeur (@strOUI...)

Discussions similaires

  1. utilisation de protocole Telnet dans Delphi
    Par yacinew dans le forum Web & réseau
    Réponses: 7
    Dernier message: 27/04/2012, 17h10
  2. Absence du provider SQL SERVER dans DELPHI 2010
    Par ghilo dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/03/2012, 13h16
  3. Erreur entame dans delphi 2010
    Par AlfredKr dans le forum EDI
    Réponses: 1
    Dernier message: 21/07/2011, 08h33
  4. Connexion à SQL Server 2005 Express dans Delphi 2010.
    Par bubba2a dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/08/2010, 00h48
  5. Comment utiliser des images SVG dans Delphi
    Par PiPo123 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 25/09/2008, 06h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo