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

Python Discussion :

Messages d'erreur en français


Sujet :

Python

  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Messages d'erreur en français
    Bonjour,
    je voulais savoir s'il était possible de récupérer les messages d'erreur de Python en Français, ou dans une autre langue. Je doute que non mais on ne sait jamais...

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Parles-tu des messages des exceptions ?

    Dans la plupart des cas, les messages d'erreur des exceptions sont codés en dur dans les sources. Ya ptet un fou ou deux qui les a traduit pour chaque langue cela dit :p Mais bref, tu risques pas d'en croiser bcp en français.

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Pour le coup, je crois que je mettrais cette question dans le top 5 des questions les plus cons que j'ai pu poser en informatique. Merci de m'avoir remis dans le droit chemin.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Il y a un message d’erreur en français dans le premier post.

    Je doute que non = Je doute que ce soit non = Je pense plutôt que c’est oui



    À n’en pas douter.

  5. #5
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Comme quoi il serait de temps que je fasse une mise à jour...

  6. #6
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Rien ne t'empêche de récupérer les erreurs et de les traiter avant que le système le fasse:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nb=raw_input("donner un nombre")
    try:
        nb=int(nb)
    except ValueError:
        print "Ce n'est pas un nombre"
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  7. #7
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Oui et non. Voilà la motivation de ce post.

    Je développe un projet pour m'aider à rédiger des documents scientifiques. Pour aller au-delà des limites imposés par mon langage de rédaction, j'ai ajouté les deux possibilités suivantes :
    1. L'utilisateur peut taper du code Python afin d'ajouter la sortie console via des print là où le script est tapé dans le document.
    2. Un module permet de taper des algorithmes via un langage de programmation à la Python, mais simplifié, pour répondre aux "faibles" fonctionnalités nécessaires en algorithmique.

    Dans le 1er cas, cela ne me gêne pas de renvoyer à l'utilisateur les erreurs Python car il connaît Python.
    Par contre dans le 2nd cas, je vais traduire en Python les algorithmes simples pour les tester, et j'aurais aimé renvoyer les éventuelles erreurs en français car dans ce 2nd cas, l'utilisateur n'est pas forcément un programmeur Python.

    Ceci étant tapé, je me dis qu'il suffirait de répertorier les erreurs rencontrables avec des algos traduits en Python. La liste ne doit pas être longue. Je verrais ça le moment venu.

    Merci à tous.

  8. #8
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Tu pourrais peut-être essayer un décorateur.
    Tu listes toutes les erreurs que tu veux intercepter et tu les places dans des clauses except suivant le bloc try du décorateur 'FrenchError' avec les messages appropriés.
    Voici un exemple où je traite une seule erreur:
    Code python : 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
    def FrenchError(func):
        """Francisation des messages d'erreurs systèmes standard-un exemple"""
        def decorated(*args, **kwargs):
            try:
                func(*args,**kwargs)
            except ValueError:
                print "Ce n'est pas un nombre"
            return func
        return decorated
     
    def standarderror():
        nb=raw_input("donner un nombre")
        nb=int(nb)
        return nb
     
    @FrenchError
    def frenchvariant():
        nb=raw_input("donner un nombre")
        nb=int(nb)
        return nb  
     
     
    frenchvariant()    
    standarderror()
    Après il suffit de 'décorer' tes fonctions avec FrenchError
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  9. #9
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Après il suffit de 'décorer' tes fonctions avec FrenchError
    Et on peut en faire plein d'autres comme ça :p
    FrenchCancan, FrenchKiss, FrenchBaguette...


  10. #10
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour,
    je dirais juste que je suis "frenchperdu" avec ces décorateurs. J'avais vu un tuto vidéo sur M6 il y a peu mais j'avais pas tout saisis des explications de la Valérie...

    Plus sérieusement, les décorateurs, comment ça marche ? Existe-t-il un bon tuto. sur le sujet ? Zavoven peux-tu donner un autre exemple si tu as le temps ?

  11. #11
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Le mieux c'est encore la doc officielle, progressive et exhaustive.
    http://www.python.org/dev/peps/pep-0318/
    Si tu veux faire rapide, en gros un décorateur prend en argument une fonction et retourne une fonction (la fonction 'décorée').
    Un autre exemple facile à comprendre.
    Si tu veux mesurer l'efficacité d'une fonction tu es obligé de commencer au début du corps par:
    start = time.time()
    puis à la fin
    end=time.time()
    puis duration=end-start
    et tu fais afficher juste avant l'instruction return la valeur de duration.
    Si tu veux mesurer les temps d'exécution pour toutes les fonctions d'un même module, tu es obligé de modifier chacune d'elles comme il est dit plus haut.
    Un décorateur est fait pour 'envelopper' une fonction, ainsi je peux définir le le décorateur
    'time_this'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def time_this(func):
        """The time_this decorator"""
        def decorated(*args, **kwargs):
            start = time.time()
            result = func(*args, **kwargs)
            print "Ran in", time.time() - start, "seconds"
            return result
        return decorated
    Une fois pour toute.
    Par la suite si je veux mesurer l'efficacité d'une fonction particulière il me suffit de faire précéder sa définition par l'annotation @time_this, comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @time_this
    def count(until):
        """Counts to 'until', then returns the result"""
     
        print "Counting to", until, "…"
        num = 0
        for i in xrange(to_num(until)):
            num += 1
        return num
    Une fois ta mise au point terminée tu vires le décorateur et ta fonction redevient 'normale'.
    Une utilisation classique est l'exécution contrôlée (la 'trace' des fonctions). Tu peux te bricoler un debugger très vite en décorant tes fonctions avec @trace. Le décorateur 'trace' enveloppe la fonction 'truc' de façon à ce que d'entrée il fait afficher: "exécution de la fonction 'truc' avec les arguments ...., ....", et en sortie tu peux faire afficher "sortie de la fonction" avec les arguments et lister les arguments, tu peux ainsi vérifier que la fonction modifie ses arguments comme tu le souhaites ou au contraire découvrir qu'elle les modifie alors que tu ne le souhaites pas.
    J'ai pensé que dans ton cas, ce pouvait être intéressant. Tu peux définir un décorateur qui intercepte une ou plusieurs exceptions 'standard' (celles que tu prévois) et les traiter à ta mode. Par la suite pour que ta fonction acquière la possibilité, par exemple de délivrer des messages d'erreur en français, tu appliques simplement ce décorateur.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  12. #12
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    "J'a tout compris". Merci pour l'exemple et les explications "on-ne-peut-plus-clair".

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

Discussions similaires

  1. Messages d'erreurs en français avec strerror
    Par Christophe dans le forum Débuter
    Réponses: 14
    Dernier message: 01/04/2015, 14h06
  2. [SAX] Sax traduire les messages d'erreur en français
    Par sinur dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 15/02/2011, 14h11
  3. Messages d'erreur : traduction en français
    Par Didier Pitre dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 24/04/2008, 07h28
  4. PDO_MySQL + Message d'erreur en français
    Par ToxiZz dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/06/2006, 10h50
  5. [IB6] Messages d'erreur en Français ?
    Par qi130 dans le forum Débuter
    Réponses: 5
    Dernier message: 21/02/2005, 10h36

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