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 :

[D5 ENT] Application multi-langues


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut [D5 ENT] Application multi-langues
    [Delphi5 ENT]

    Bonjour,

    L'application sur laquelle je travaille contient déjà une gestion multi-langues. Le tout est basé sur le référentiel de traduction inclu dans Delphi (ITE). Actuellement le changement de langue se fait par l'écriture de la langue dans la base de registre et redémarrage de l'application.

    Le but serait de:

    1) s'affranchir du fait que l'utilisateur doit posséder les droits administrateur (écriture base de registre pour changement de langue, et de plus dépendant de HKEY_CURRENT_USER ).

    2) changement de langue dynamiquement (sans redémarrage de l'appli). A ce sujet, le module reinit.pas disponible dans les samples fourni par borland ne donne pas satisfaction du fait de la complexité des formes de l'application.


    Je sollicite donc vos connaissances afin de m'indiquer la meilleure voix à suivre

    Merci d'avance pour vos idées.

  2. #2
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Moi je ne me prends pas la tete :
    Un fichier Texte ou Binaire qui contient les chaines a afficher et leur code associé.

    J'ai ensuite une classe qui s'occupe de charger ces chaines depuis le fichier et de les stocker dans un TStringList ou tout autre type de structure tableau.

    Cette classe peut donc d'un simple appel, changer toutes ses chaines en chargeant un autre fichier texte.

    Cette classe etant lié a une variable publique de mon unitee, elle peut etre accessible de partout dans mon applciation. Donc toutes methodes ayant besoin d'afficher une chaine fait appel a cette classe pour recuperer la chaine associée au code transmis.

    Pour changer dynamiquement toutes les chaines deja afficher, chaques classes (essentiellement TForm) desirant etre avertie d'un changement de langue, reference un gestionaire d'evenement dans la CLasse "Langue" qui sera donc stocké dans un evenement type tableau (Array of TNotifyEvent).

    On peu aussi passer par un systeme plus classique de gestion d'evenement avec le lancement d'un message, mais bon ... c'est plus complexe

    Pour simplifier la repercussion de l'evenement "OnChangeLang", en fait je ne reference que les des gestionnaires d'evenement implementé dans les Forms.
    Tous les composants/Classes utilisant des chaines de ma classe "Langue", impelmentent une methode "InitLngStrings" qui s'occupe de recharger depuis la classe "Langue" toutes ses chaines.

    Donc une fois le fichier chargé, la classe langue execute successivement les gestionnaires des forms.
    Ensuite, la form met a jour ses chaines, puis appelle les methodes InitLngStrings de toutes ses classes qui l'implemente.
    Enfin, chacune des classes directement connue de la form met a jour ses chaines au travers de la metode "InitLngStrings" appellee par la form et repercute de maniere recursive les appels a "InitLngStrings" dans les sous classes privees/Protected .....

    Note : En general, je definie un set de chaines "default" dans tout type de structures gerant des listes de chaines, que j'apelle si la chaine associée au code n'existe pas.
    Comme ca je m'affranchit de tous fichiers de langues et d'edition de fichier pour la premiere langue de l'applcition, ainsi que des erreurs de saisie ou de traduction incompletes ulterieures.

    Note 2 : Bien sur un te faudra un petit editeur de fichier de langue si tu passe par une structure binaire des fichiers de langues

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    Merci Clorish pour ta suggestion.

    J'avoue que ta solution me parrait bien. J'ai songé à me baser sur une gestion de fichier texte style INI.

    Par contre, vu la taille de l'application, je me demande s'il n'y a pas une solution moins couteuse en développement en partant de ce qu'il y a d'existant (utilisation des DLL de ressources).

    J'analyse encore la situation, pèse le pour et le contre et déciderai dans quelle direction je m'orienterai.

    Toutes autres solutions sont les bienvenues.

    Merci

  4. #4
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    personnelement, j'ai toujours trouve complexe et galere les outils de traduction d'applciations existantes.
    D'ou cette idee de creer mon propre systeme.

    Apres c'est sur, il faut prevoir ce systeme a la base de l'application ... sinon ca va demander un certain travail !
    Quoi que ....

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    Après quelques recherches, je pense avoir trouvé une façon de faire minimisant le développement.

    dxgettet permet de migrer des traductions depuis l'ITE vers des fichiers.

    Je vais donc m'orienter dans cette direction et entreprendre quelques tests.

    Si les tests s'avèrent concluant, je mettrai une conclusion à cette discussion.

    Merci Clorish pour tes idées

Discussions similaires

  1. Bien créer une application multi-langues ? Unicode ou non ?
    Par Maxime Abbey dans le forum Composants VCL
    Réponses: 28
    Dernier message: 10/09/2007, 17h20
  2. Application Multi-langues en C#
    Par ayobo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/11/2006, 16h42
  3. Application multi-langue [Delphi 7]
    Par guence dans le forum Delphi
    Réponses: 3
    Dernier message: 05/09/2006, 12h43
  4. Application multi-langue
    Par JerBi dans le forum EDI
    Réponses: 2
    Dernier message: 15/09/2005, 02h22
  5. [Application multi-langues] Compilateur ou fichier lng ?
    Par Teb dans le forum Composants VCL
    Réponses: 5
    Dernier message: 16/08/2005, 16h48

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