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++ Discussion :

Comment faire un logiciel de traduction?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut Comment faire un logiciel de traduction?
    Bonjour

    Voila j'ai fait un petit traducteur (français / kabyle) mais en php que vous pouvez voir ici : traducteur

    je me demande s'il est difficile d'en faire le même en forme de logiciel, en C ou C++

    Je ne connais rien en C ni en C++ malheureusement, donc je cherche quelqu'un peut m'aider dans ce projet, je veux vraiment un truc basic dans lequel on peut rajouter ou enlever des traductions facilement sans entrer dans le code source!

    Je suis également motivé à apprendre si vous pouvez me donner des liens vers des tutoriaux qui peuvent m'apprendre à faire ce genre de petit programme sans entrer dans le détail de l'apprentissage de ce langage.

    Je vous remercie d'avance.

    Bonne soirée à tous et à toute

    ps: si j'ai posté dans le mauvais forum je vous prie de m'excuser

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    En gros, il s'agit juste d'utiliser, je dirais, les std::map, std::string et std::*fstream à bon escient...

    Un petit coup d'ifstream pour la lecture du "dico" en commencant, et un autre d'ofstream pour la sauvegarde en cas de modification/ajout, et le tour est joué

    Seulement, il s'agira quand meme d'entrer un peu dans les arcanes du C++, car *idéalement*, il faudra au minimum avoir quelques bases de "programmation orientée objet"(pas obligatoire, ceci dit ) et, en tout cas, savoir utiliser les différentes classes dont j'ai parlé plus haut...

    Et tout cela sans compter sur le fait qu'il n'y a aucune interface graphique "de base" dans le C++, meme si de tres bonnes bibliotheques existent pour cela (du moins, si tu veux créer une application "cliquodrome", et non une simple application "console")

    Tu peux déjà commencer, par la FAQ C++ du site, qui regroupe une grande partie des problèmes généralement rencontrés, ou te diriger vers les cours et tutoriels C++.

    En cas de besoin, n'hésite pas à demander de l'aide sur des choses plus précises
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Bonjour

    Merci bien pour toutes ces précisions, même si pour le moment c'est du charabia pour moi

    j'espère que que quelqu'un qui s'intéresse à la langue kabyle tombera sur ce topic et m'aider à réaliser ce projet qui me tient à coeur, pour promouvoir cette langue méprisée par le pouvoir algérien.

    Pour ceux et celles qui ne savent pas ce que la langue kabyle ou un kabyle, pour faire simple les parents de Zidane sont kabyles, des berbères d'Algérie (différent d'arabe).

    Merci

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Pourquoi en C++ particulièrement si vous ne connaissez pas ce langage et si vous ne désirez pas l'apprendre ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Ce que je désir c'est un petit logiciel qu'on peut exécuter à partir de windows, et peu importe avec le langage utilisé pour réaliser ce programme de traduction

    j'ai pensé à c et c++ parce que ce sont les langages les plus populaires!

  6. #6
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    C'est réalisable en quelques lignes de python (langage plus facile d'accés). Est-ce que ce langage pose un problème ?

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    Citation Envoyé par sitalgerie
    Je ne connais rien en C ni en C++ malheureusement, donc je cherche quelqu'un peut m'aider dans ce projet, je veux vraiment un truc basic dans lequel on peut rajouter ou enlever des traductions facilement sans entrer dans le code source!
    Ce serait plus souple avec une base de données...
    un simple formulaire sous Access et le tour est joué avec les requêtes adaptées.

    Maintenant on peut faire cela en C++ avec My Sql

  8. #8
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Tu as lancé l'interpréteur de commande.

    Il faut lancer dans Démarer->Accessoires->Invite de commande et ensuite aller dans le répertoire où il y a dico.py pour lancer ce que je t'ai donné.

    On peut aussi doublecliquer sur dico.py, mais le programe va se refermer tout de suite et tu ne verra rien. Pour attendre une touche au clavier:

    (à mettre à la fin de programme python).

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Citation Envoyé par Bayard
    Tu as lancé l'interpréteur de commande.

    Il faut lancer dans Démarer->Accessoires->Invite de commande et ensuite aller dans le répertoire où il y a dico.py pour lancer ce que je t'ai donné.

    On peut aussi doublecliquer sur dico.py, mais le programe va se refermer tout de suite et tu ne verra rien. Pour attendre une touche au clavier:

    (à mettre à la fin de programme python).

    j'ai fait comme tu m'as demander de faire j'ai eu une petite fenêtre avec le mot "salut" affiché

  10. #10
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Alors c'est une erreur, tu devrais faire une modification et avoir "azul".

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    c'est bien Bayard tu sais dire bonjour en kabyle

  12. #12
    Membre expérimenté Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Par défaut
    Citation Envoyé par Mat.M
    Ce serait plus souple avec une base de données...
    un simple formulaire sous Access et le tour est joué avec les requêtes adaptées.

    Maintenant on peut faire cela en C++ avec My Sql
    Tres mauvais conseil...
    Comment tu vas transporter ta base de données d'un ordinateur a un autre ? Tu vas installer Access/MySQL a chaque fois ? Comment tu vas installer Access sur un PC qui tourne sous Linux ? etc...
    Dans tous les cas installer Access/MySQL pour un programme de quelques lignes ca ne vaut pas le coup.
    De plus, il faut avoir certaines connaissances en informatique pour installer une BDD correctement, donc tu reduis de beaucoup le nombre de gens capables d'utiliser ton programme...alors qu'un dictionnaire, c'est quelquechose d'utile a beaucoup de gens, qu'ils soient informaticiens ou non.

    Pour avoir un programme qu'on puisse mettre a jour, sans avoir a deployer une architecture lourde, il suffit simplement d'ecrire le dictionnaire dans un fichier texte avec un formattage precis et que le programme viendra lire.
    Chose simple a faire en C++ ou en Python (ce dernier aurait d'ailleurs ma preference pour cette application particuliere).

  13. #13
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 527
    Par défaut
    Citation Envoyé par Ksempac
    Tres mauvais conseil...
    Comment tu vas transporter ta base de données d'un ordinateur a un autre ? Tu vas installer Access/MySQL a chaque fois ? Comment tu vas installer Access sur un PC qui tourne sous Linux ? etc...
    Dans tous les cas installer Access/MySQL pour un programme de quelques lignes ca ne vaut pas le coup.
    Bon je crois qu'il faudrait un peu se renseigner un peu avant d'émettre ce genre d'avis..
    d'abord on peut très bien créer un fichier .mdb sans avoir besoin du tout de ms-Office eh oui faut le savoir fais en l'expérience sous Windows XP.
    Avec le gestionnaire ODBC on peut créer un fichier mdb d'Access seulement ce sera des tables pures et dures sans formulaires
    Segundo une base Access c'est un fichier .mdb donc on peut copier cela d'un poste à l'autre, l'utilisateur devant avoir MDAC sur son poste d'installé ( téléchargeable librement sur le site de Microsoft)
    MDAC permettra d'avoir recours à ADO pour faire des requêtes.

    Pour les tables MySQL le principe doit pouvoir être le même suffit d'avoir les gestionnaires ODBC

  14. #14
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Mais, ceci dit, devoir avoir recours à mdac ou à un gestionnaire ODBC alors qu'un simple fichier texte du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    terme_francais terme_kabile
    peut suffir, cela se rapproche fort du fait de sortir la "grosse berta" pour chasser un moustique

    Quand on pense au fait que, pour obtenir une recherche plus rapide, il suffit de deux map, la premiere ayant pour clé le terme francais et pour valeur le terme kabile, et la seconde ayant pour clé le terme kabile et pour valeur le terme francais, il y a parfaitement moyen d'éviter de sortir l'artillerie lourde

    En nommant le fichier texte en dur du nom de "dico.txt" et en ayant une classe (logiquement nommée Dico, par exemple ) du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class Dico
    {
        public:
           Dico();
           ~Dico();
           const std::string& SearchKabil(const std::string&);
           const std::string& SearchFrench(const std::string&);
           void Add(string french="",string kabil="");
        private:
           std::map<std::string,std::string> frenchtokabil;
           std::map<std::string,std::string> kabiltofrench;
           bool modified;
    };
    Le constructeur serait sous la forme de
    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
     
    Dico::Dico():modified(false)
    {
        std::ifstream ifs("dico.txt");
        std::string french;
        std::string kabil;
        std::string read;
        if(!(ifs))
        {
            std::cout<<"impossible de trouver le ficher dictionnaire"<<std::endl;
        }
        else
        {
            while(std::getline(ifs,read))
            {
                std::istringstream iss(read);
                iss>>french>>cabil;
                frenchtokabil.insert(std::make_pair(french,kabil));
                kabiltofrench.insert(std::make_pair(kabil,french));
            }
        }
    }
    le destructeur prendrait la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dico::~Dico()
    {
        if(modified==true)
        {
            std::ofstream ofs("dico.txt");
            for(std::map<std::string,string>::iterator it=frenchtokabil.begin();
                it!=frenchtokabil.end();it++)
            {
                ofs<<(*it).first<<" "<<(*it).second;
            }
        }
    }
    Les fonctions SearchKabil et SearchFrench sont du genre de:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    /* Fonction qui renvoie le terme kabil trouvé
     * @in: terme français fournis
     * @out: terme kabil trouve
     */
    const std::string& Dico::SearchKabil(const std::string& french)
    {
        /* il est possible que le terme ne soit pas encore dans le dico
         * Si c'est le cas, on le signale, et on propose de le rajouter
         */
        std::map<std::string>::iterator it=frenchtokabil.find(french);
        if(it==frenchtokabil.end())
        {
            std::cout<<"aucune correspondance kabil pour "<<french<<std::endl
                     <<"Voulez vous le rajouter au dictionnaire (O/N)?"
                     <<std::endl;
            std::string rep;
            std::cin>>rep;
            if(rep=="o" || rep=="O")
            {
                Add(french);
                return frenchtokabil.find(french).second;
            }
        }
        else
            return (*it).second;
    }
    /* fonction qui renvoie le terme francais
     * @in terme kabil recherché
     * @out: terme francais correspondant
     */
    const std::string& Dico::SearchFrench(const std::string& kabil)
    {
        /* il est possible que le terme ne soit pas encore dans le dico
         * Si c'est le cas, on le signale, et on propose de le rajouter
         */
        std::map<std::string>::iterator it=kabiltofrench.find(french);
        if(it==kabiltofrench.end())
        {
            std::cout<<"aucune correspondance francaise pour "
                     <<french<<std::endl
                     <<"Voulez vous le rajouter au dictionnaire (O/N)?"
                     <<std::endl;
            std::string rep;
            std::cin>>rep;
            if(rep=="o" || rep=="O")
            {
                Add(french);
                return kabiltofrench.find("",kabil).second;
            }
        }
        else
            return (*it).second;
    }
    La fonction Add prendrait la forme de
    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
    33
    34
    35
    36
    37
     
    void Add(string french, string kabil)
    {
        /* Avec deux chaines potentiellement vide, on a quatre possibilités
         * (dont une qui a peu de chances d'arriver)
         *    - on n'a aucun des termes
         *    - on a le terme kabil
         *    - on a le terme francais
         *    - on a les deux termes (peu de chances ;))
         */
        if(french!="")
        {
            std::cout<<"veuillez introduire la correspondance kabile pour "
                     <<french<<": ";
            cin>>kabil;
        }
        else if(kabil!="")
        {
            std::cout<<"veuillez introduire la correspondance francaise pour "
                     <<french<<": ";
            cin>>french;    
        }
        else if(french=="" && kabil=="")
        {
            std::cout<<"veuillez introduire le terme francais :"
            cin>>french;
            std::cout<<"veuillez introduire le terme kabil correspondant :"
            cin>>kabil;
        }
        /* une fois qu'on est sur d'avoir les deux termes, on les rajoute aux
         * dicos
         */
        frenchtokabil.insert(std::make_pair(french,kabil));
        kabiltofrench.insert(std::make_pair(kabil,french));
        //et on signale que le dictionnaire a été modifié
        modified=true;
    }
    et en préparant un menu demandant ce que l'on veut faire, on obtient déjà un dico, certes limité, mais fonctionnel
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 34
    Par défaut
    Merci Koala1 pour ce code mais qu'est ce que j'en fais c'est quoi comme langage? et comment le transformer en programme exécutable s'il te plait?

Discussions similaires

  1. [WD17] je cherche comment faire pour programmer ce logiciel
    Par hadaf dans le forum WinDev
    Réponses: 13
    Dernier message: 29/01/2013, 10h04
  2. Logiciels 64 bits et Postgresql 8.3, comment faire?
    Par Sunsawe dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/08/2010, 08h48
  3. Comment faire tourner un logiciel en "Hors session" ?
    Par nadojazz dans le forum Windows
    Réponses: 3
    Dernier message: 18/05/2010, 13h02
  4. Réponses: 3
    Dernier message: 29/01/2008, 11h32
  5. Réponses: 4
    Dernier message: 22/08/2007, 16h32

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