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

C++Builder Discussion :

Faire une application multilangage avec C++Builder [Tutoriel]


Sujet :

C++Builder

  1. #1
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut Faire une application multilangage avec C++Builder
    Bonjour,

    J'ai publié un article présentant une méthode pour faire une application multilangage avec C++ Builder.

    Voici le synopsis de l'article.
    Cet article montre comment faire une application multilingue sous C++ Builder. Une méthode est utilisé ici, il en existe autant que de développeur et ne peuvent donc pas toute être montré.
    Lien vers l'article : http://pottiez.developpez.com/tutori.../multilangage/

    de vos éventuels commentaires & remarques
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Merci pottiez de partager tes connaissances

    Dans mon cas je préfère utiliser un fichier ressource (.rc) pour enregistrer mon texte. C'est un peu plus classique comme façon de procéder.

    Pour mon prochain projet je m'embarque dans l'ITE et l'ETM disponible depuis C++Builder 2009:

    The Integrated Translation Environment (ITE) is a part of the IDE that simplifies localizing your projects. ITE can create a new localized project from an existing project. ITE does not automatically translate text, but provides a dialog listing all text that needs to be localized and fields in which to enter the corresponding translated text. Once you have entered the translated text and built the localized project, you can set another language active and display a form in the localized text; you don't have to switch locales and reboot your system. This allows you to perform localization without requiring a localized system.

    The External Translation Manager (ETM) is a standalone application that works with DFM files and text strings in the source code. Although ETM does not allow you to create a new localized project, it does provide a dialog listing localized text and the translated text, similarly to ITE.
    J'ai fait quelques test et sa fonctionne très bien, par contre je n'ai pas trouver moyen de changer le texte en temps réel dans mon application. Un redémarrage est nécessaire pour charger la langue dans le registre.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 74
    Points : 62
    Points
    62
    Par défaut
    belle encapsulation !

    Pour ma part, je préfère gérer les libellés en base de données.
    ça offre de grandes possibilités pour les traductions et les personnalisations des libellés.
    Au lancement du programme, les libelles de la langue courante sont récupérés dans un fichier csv, pour éviter les accès à la bdd par la suite.
    Cela dit, votre solution n'est pas incompatible avec des traductions en BDD car votre fichier xml pourrait très bien être construit après interrogation d'une BDD.


    La surcharge d'une fonction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MajLibelle(TBitBtn * btn,  const AnsiString & CodeComposant);
    MajLibelle(TLabel * label, const AnsiString & CodeComposant);
    etc...
    permet une initialisation simple du libellé des composants dans l'évènement OnActivate des fiches.

    Mais votre solution est nettement plus jolie.

    Merci !
    seb

  4. #4
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Bonjour,
    tout as fait, ici j'utilise un fichier XML mais la solution est adaptable à tout support d'enregistrement de données


    Merci à vous pour vos retours .
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Je suis pottiez le XML peut être enregistré en ressource et du coup les deux solutions combinées.

    Bien et complet.
    Merci

  6. #6
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Par contre, si tu utilises un fichier rc l'overhead est plus petit. Voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifdef _WIN32
    LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT
    #endif //_WIN32
     
    STRINGTABLE
    {
        // Buttons
        1000,   "OK"
        1001,   "Annuler"
    }
    Dans mon code j'affecte la propriété Tag du composant au chiffre correspondant à mon texte.

    J'utilise un fichier ressource par langue, donc le traducteur ne reçoit que la langue qu'il a besoin de modifier.

    Je ne dit pas que ma méthode est meilleure, je dit juste qu'elle convient plus au logiciel que je développe. Je pense aussi que je me suis habitué à cette façon de faire avec le temps

    De plus, mon prochain programme va utiliser l'ITE et l'ETM. Ce qui est très pratique car sa permet de modifier d'autres attributs que seulement le texte. Comme la police de caractère, le charset, le Hint et plusieurs autres. De plus, tout les messages standards pourront être traduit, par exemple: "Access violation at address %p. %s of address %p". Il y a même moyen d'utiliser le Translation Repository pour les termes qui reviennent dans plusieurs projets.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

Discussions similaires

  1. Réponses: 41
    Dernier message: 27/10/2009, 14h13
  2. Réponses: 6
    Dernier message: 21/11/2008, 21h20
  3. Réponses: 1
    Dernier message: 03/05/2006, 10h49
  4. Comment faire une API Win32 avec C++ Builder
    Par Zerocool003 dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/01/2006, 16h13

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