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

Langage Delphi Discussion :

Stocker les ressourcestrings


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut Stocker les ressourcestrings
    Bonjour,

    Excusez moi de vous déranger, mais je voudrai savoir comment vous faîtes pour stocker vos ressourcestrings...

    J'ai ai 500 et je trouve que ça "fou le Bordel !" dans mon unit

    Vous faîtes comment ? Y'a t'il moyen de les mettre dans un autre fichier ?

    Merci

  2. #2
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Petite question pour être sûr

    J'ai trouvé TResourceStream, mais pas Tressourcstring. Tu trouves ça où ?
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  3. #3
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    Les ressourcestrings ce sont juste des chaînes que tu déclares à part pour mieux traduire ton application...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Pour gérer mes resourcestring, je procède de la façon suivante:

    Pour chaque langue je décris chaque ressource dans un fichier texte :

    francais.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    resourcestring
      RSTYes = 'oui';
      RSTMessage = 'Salut %s';
    anglais.txt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    resourcestring
      RSTYes = 'yes';
      RSTMessage = 'hello %s';
    puis j'ai créé une unité international.pas où j'appelle via la directive {$I monfichier} le fichier de langue concerné. Avec la fonction FilterString, (voir code ci-dessous) on peut récupérer la valeur d'une resourcestring.


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    unit international;
    interface
    {$I appli.inc}
    {$IFDEF anglais}
       {$I anglais.txt}
    {$ELSE}
       {$IFDEF francais}
          {$I francais.txt}
       {$ENDIF}
    {$ENDIF}
     
    function FilterString(AResString: Pointer): string;
     
    type
      TFilterGetResourceStringFunc = function(
        AResString: Pointer): string;
     
    var
      FilterGetResourceStringFunc: TFilterGetResourceStringFunc;
     
    implementation
    function FilterString(
      AResString: Pointer): string;
    begin
      if Assigned(FilterGetResourceStringFunc) then
        Result := FilterGetResourceStringFunc(AResString)
      else
        Result := LoadResString(AResString);
    end;
     
    end.

    Dans le fichier mon appli.inc qui contient toutes les directives de mon application, on active la langue qui doit être utilisée lors de la compilation.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {-$DEFINE anglais}
    {$DEFINE francais}
    ici le français est actif lors de la compilation.

    Il suffit maintenant de déclarer l'unité international dans toutes les unités qui vont appeler les ressourceString et d'utiliser la fonction FilterString(@maresourcestring) et le tour est joué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    uses
      international;
     
    procedure TForm1.afficheResource;
    begin
      showMessage(FilterString(@RSTYes));
      showMessage(format(FilterString(@RSTMessage),['Rémi']));
    end;
    Voilà la solution que j'emploie. Il y a certainement mieux et plus efficace...
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  5. #5
    Membre actif Avatar de remixtech
    Profil pro
    Enseignant
    Inscrit en
    Février 2003
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2003
    Messages : 272
    Points : 214
    Points
    214
    Par défaut
    C'est très gentil, mais faut que je réécrive tout mon code
    Je voulais juste une solution pour éviter d'avoir un méga fichier de milliers de lignes...

    Il n'y a peut être pas moyen de les mettre dans un autre fichier...

    Merci quand même

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Je crois que ta réponse se touve là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {$I mesressources.txt}
     
    
    Tu crées un fichier text avec toutes tes ressources, tu coupes et colles tes ressources existantes dedant. Puis tu l'incopores à ton unité où elles se trouvaient initialement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    unit
    .....
    interface
     
    {$I mesressources.txt}
    ....
    Cela te prendra à peine deux minutes
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTree] comment y stocker les objets ?
    Par calogerogigante dans le forum Débuter
    Réponses: 12
    Dernier message: 16/08/2008, 20h39
  2. stocker les degrès dans la BD postgresql
    Par coquero dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/12/2005, 11h47
  3. Créer un ficher pour stocker les informations
    Par b_steph_2 dans le forum C++
    Réponses: 3
    Dernier message: 10/11/2005, 10h08
  4. [WebForms][Web.config] Stocker les chaine de connexion
    Par bossun dans le forum Général Dotnet
    Réponses: 15
    Dernier message: 19/08/2005, 15h34
  5. [JDBC] Stocker les résultats d'une requête
    Par etiennegaloup dans le forum JDBC
    Réponses: 9
    Dernier message: 26/07/2005, 18h18

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