From f1d4ff76d19af7f54cd13e29ca655f7da5238e02 Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Fri, 6 Dec 2019 14:21:00 +0100 Subject: [PATCH] Backport from 3.8 --- distutils/packageindex.po | 2 +- distutils/setupscript.po | 2 +- extending/extending.po | 19 +- faq/extending.po | 124 +++++++++- faq/gui.po | 73 +++++- faq/library.po | 282 +++++++++++++++++++---- faq/programming.po | 470 ++++++++++++++++++++++++++++++++++---- faq/windows.po | 71 +++++- howto/cporting.po | 90 +++++++- howto/functional.po | 413 +++++++++++++++++++++++++++++---- howto/logging.po | 5 + howto/pyporting.po | 207 +++++++++++++++-- howto/sockets.po | 2 +- howto/unicode.po | 61 ++++- library/base64.po | 12 + library/contextlib.po | 13 +- library/curses.po | 12 +- library/dis.po | 29 ++- library/functions.po | 2 +- library/getopt.po | 59 ++++- library/heapq.po | 167 +++++++++++++- library/idle.po | 422 +++++++++++++++++++++++++--------- library/io.po | 2 +- library/numbers.po | 85 ++++++- library/os.path.po | 26 ++- library/parser.po | 16 +- library/shutil.po | 19 +- library/sunau.po | 26 ++- library/sysconfig.po | 2 +- library/thread.po | 25 ++ library/timeit.po | 72 +++++- library/tkinter.po | 457 +++++++++++++++++++++++++++++------- library/ttk.po | 8 +- library/wave.po | 75 ++++-- library/zipimport.po | 61 ++++- whatsnew/2.3.po | 4 +- whatsnew/2.5.po | 3 + 37 files changed, 2936 insertions(+), 482 deletions(-) diff --git a/distutils/packageindex.po b/distutils/packageindex.po index 7eca7711..2b650d03 100644 --- a/distutils/packageindex.po +++ b/distutils/packageindex.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/distutils/packageindex.rst:9 msgid "The Python Package Index (PyPI)" -msgstr "" +msgstr "L'index de paquets Python (*Python Package Index* : PyPI)" #: ../Doc/distutils/packageindex.rst:11 msgid "" diff --git a/distutils/setupscript.po b/distutils/setupscript.po index 1f6064cd..a15aae2f 100644 --- a/distutils/setupscript.po +++ b/distutils/setupscript.po @@ -380,7 +380,7 @@ msgstr "" #: ../Doc/distutils/setupscript.rst:335 msgid "Other options" -msgstr "" +msgstr "Autres options" #: ../Doc/distutils/setupscript.rst:337 msgid "" diff --git a/extending/extending.po b/extending/extending.po index 790f3882..24a2e279 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -541,13 +541,16 @@ msgstr "" #: ../Doc/extending/extending.rst:309 msgid "The Module's Method Table and Initialization Function" -msgstr "" +msgstr "La fonction d'initialisation et le tableau des méthodes du module" #: ../Doc/extending/extending.rst:311 msgid "" "I promised to show how :c:func:`spam_system` is called from Python programs. " "First, we need to list its name and address in a \"method table\"::" msgstr "" +"Nous avons promis de montrer comment :c:func:`spam_system` est appelée " +"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et " +"son adresse dans un « tableau des méthodes » ::" #: ../Doc/extending/extending.rst:322 msgid "" @@ -557,6 +560,11 @@ msgid "" "value of ``0`` means that an obsolete variant of :c:func:`PyArg_ParseTuple` " "is used." msgstr "" +"Notez la troisième entrée (``METH_VARARGS``). C'est un indicateur du type de " +"convention à utiliser pour la fonction C, à destination de l'interpréteur. " +"Il doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | " +"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:" +"func:`PyArg_ParseTuple` est utilisée." #: ../Doc/extending/extending.rst:327 msgid "" @@ -564,6 +572,10 @@ msgid "" "level parameters to be passed in as a tuple acceptable for parsing via :c:" "func:`PyArg_ParseTuple`; more information on this function is provided below." msgstr "" +"Si seulement ``METH_VARARGS`` est utilisé, la fonction s'attend à ce que les " +"paramètres Python soient passés comme un n-uplet que l'on peut analyser " +"*via* :c:func:`PyArg_ParseTuple` ; des informations supplémentaires sont " +"fournies plus bas." #: ../Doc/extending/extending.rst:331 msgid "" @@ -573,6 +585,11 @@ msgid "" "keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments " "to such a function." msgstr "" +"Le bit :const:`METH_KEYWORDS` peut être mis à un dans le troisième champ si " +"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, " +"la fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un " +"dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` " +"pour analyser les arguments d'une telle fonction." #: ../Doc/extending/extending.rst:337 msgid "" diff --git a/faq/extending.po b/faq/extending.po index 8637bb06..3b379c04 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -30,10 +30,15 @@ msgid "" "exceptions and even new types in C. This is explained in the document :ref:" "`extending-index`." msgstr "" +"Oui, vous pouvez créer des modules intégrés contenant des fonctions, des " +"variables, des exceptions et même de nouveaux types en C. Ceci est expliqué " +"dans le document :ref:`extending-index`." #: ../Doc/faq/extending.rst:19 msgid "Most intermediate or advanced Python books will also cover this topic." msgstr "" +"La plupart des livres Python intermédiaires ou avancés couvrent également ce " +"sujet." #: ../Doc/faq/extending.rst:23 msgid "Can I create my own functions in C++?" @@ -96,6 +101,7 @@ msgstr "" #: ../Doc/faq/extending.rst:64 msgid "How can I execute arbitrary Python statements from C?" msgstr "" +"Comment puis-je exécuter des instructions quelconques Python à partir de C ?" #: ../Doc/faq/extending.rst:66 msgid "" @@ -110,6 +116,7 @@ msgstr "" #: ../Doc/faq/extending.rst:75 msgid "How can I evaluate an arbitrary Python expression from C?" msgstr "" +"Comment puis-je évaluer une expression quelconque de Python à partir de C ?" #: ../Doc/faq/extending.rst:77 msgid "" @@ -117,10 +124,13 @@ msgid "" "start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it " "and returns its value." msgstr "" +"Appelez la fonction :c:func:`PyRun_String` de la question précédente avec le " +"symbole de départ :c:data:`Py_eval_input` ; il analyse une expression, " +"l'évalue et renvoie sa valeur." #: ../Doc/faq/extending.rst:83 msgid "How do I extract C values from a Python object?" -msgstr "" +msgstr "Comment puis-je extraire des donnés en C d'un objet Python ?" #: ../Doc/faq/extending.rst:85 msgid "" @@ -129,6 +139,10 @@ msgid "" "specified index. Lists have similar functions, :c:func:`PyListSize` and :c:" "func:`PyList_GetItem`." msgstr "" +"Cela dépend du type d'objet. Si c'est un tuple, :c:func:`PyTuple_Size` " +"renvoie sa longueur et :c:func:`PyTuple_GetItem` renvoie l'élément à l'index " +"spécifié. Les listes ont des fonctions similaires, :c:func:`PyListSize` et :" +"c:func:`PyList_GetItem`." #: ../Doc/faq/extending.rst:90 msgid "" @@ -156,6 +170,7 @@ msgstr "" #: ../Doc/faq/extending.rst:105 msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?" msgstr "" +"Comment utiliser Py_BuildValue() pour créer un tuple de longueur définie ?" #: ../Doc/faq/extending.rst:107 msgid "" @@ -170,7 +185,7 @@ msgstr "" #: ../Doc/faq/extending.rst:116 msgid "How do I call an object's method from C?" -msgstr "" +msgstr "Comment puis-je appeler la méthode d'un objet à partir de C ?" #: ../Doc/faq/extending.rst:118 msgid "" @@ -179,6 +194,10 @@ msgid "" "to call, a format string like that used with :c:func:`Py_BuildValue`, and " "the argument values::" msgstr "" +"La fonction :c:func:`PyObject_CallMethod` peut être utilisée pour appeler la " +"méthode d'un objet. Les paramètres sont l'objet, le nom de la méthode à " +"appeler, une chaîne de caractères comme celle utilisée pour :c:func:" +"`Py_BuildValue` et les valeurs des arguments ::" #: ../Doc/faq/extending.rst:127 msgid "" @@ -186,12 +205,17 @@ msgid "" "defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the " "return value." msgstr "" +"Cela fonctionne pour tous les objets qui ont des méthodes — qu'elles soient " +"intégrées ou définies par l'utilisateur. Vous êtes responsable de « :c:func:" +"`Py_DECREF`\\ *er* » la valeur de retour à la fin." #: ../Doc/faq/extending.rst:130 msgid "" "To call, e.g., a file object's \"seek\" method with arguments 10, 0 " "(assuming the file object pointer is \"f\")::" msgstr "" +"Pour appeler, p. ex., la méthode *seek* d'un objet *file* avec les arguments " +"10, 0 (en supposant que le pointeur de l'objet fichier est *f*) ::" #: ../Doc/faq/extending.rst:141 msgid "" @@ -200,12 +224,18 @@ msgid "" "format, and to call a function with one argument, surround the argument in " "parentheses, e.g. \"(i)\"." msgstr "" +"Notez que :c:func:`PyObject_CallObject` veut *toujours* un tuple comme liste " +"d'arguments. Aussi, pour appeler une fonction sans arguments, utilisez " +"\"()\" pour être conforme au type et, pour appeler une fonction avec un " +"paramètre, entourez-le de parenthèses, p. ex. \"(i)\"." #: ../Doc/faq/extending.rst:148 msgid "" "How do I catch the output from PyErr_Print() (or anything that prints to " "stdout/stderr)?" msgstr "" +"Comment puis-je récupérer la sortie de ``PyErr_Print()`` (ou tout ce qui " +"s'affiche sur *stdout*/*stderr*) ?" #: ../Doc/faq/extending.rst:150 msgid "" @@ -214,6 +244,11 @@ msgid "" "print_error, or just allow the standard traceback mechanism to work. Then, " "the output will go wherever your ``write()`` method sends it." msgstr "" +"Dans le code Python, définissez un objet qui possède la méthode ``write()``. " +"Affectez cet objet à :data:`sys.stdout` et :data:`sys.stderr`. Appelez " +"*print_error* ou faites simplement en sorte que le mécanisme standard de " +"remontée des erreurs fonctionne. Ensuite, la sortie sera dirigée vers " +"l'endroit où votre méthode ``write()`` écrit." #: ../Doc/faq/extending.rst:155 msgid "" @@ -227,11 +262,11 @@ msgstr "" #: ../Doc/faq/extending.rst:177 msgid "How do I access a module written in Python from C?" -msgstr "" +msgstr "Comment accéder à un module écrit en Python à partir de C ?" #: ../Doc/faq/extending.rst:179 msgid "You can get a pointer to the module object as follows::" -msgstr "" +msgstr "Vous pouvez obtenir un pointeur sur l'objet module comme suit ::" #: ../Doc/faq/extending.rst:183 msgid "" @@ -241,22 +276,32 @@ msgid "" "module into any namespace -- it only ensures it has been initialized and is " "stored in :data:`sys.modules`." msgstr "" +"Si le module n'a pas encore été importé (c.-à-d. qu'il n'est pas encore " +"présent dans :data:`sys.modules`), cela initialise le module ; sinon il " +"renvoie simplement la valeur de ``sys.modules[\"\"]``. Notez " +"qu'il n'inscrit le module dans aucun espace de nommage — il s'assure " +"seulement qu'il a été initialisé et qu'il est stocké dans :data:`sys." +"modules`." #: ../Doc/faq/extending.rst:189 msgid "" "You can then access the module's attributes (i.e. any name defined in the " "module) as follows::" msgstr "" +"Vous pouvez alors accéder aux attributs du module (c.-à-d. à tout nom défini " +"dans le module) comme suit ::" #: ../Doc/faq/extending.rst:194 msgid "" "Calling :c:func:`PyObject_SetAttrString` to assign to variables in the " "module also works." msgstr "" +"Appeler :c:func:`PyObject_SetAttrString` pour assigner des valeurs aux " +"variables du module fonctionne également." #: ../Doc/faq/extending.rst:199 msgid "How do I interface to C++ objects from Python?" -msgstr "" +msgstr "Comment s'interfacer avec les objets C++ depuis Python ?" #: ../Doc/faq/extending.rst:201 msgid "" @@ -267,14 +312,22 @@ msgid "" "building a new Python type around a C structure (pointer) type will also " "work for C++ objects." msgstr "" +"Selon vos besoins, de nombreuses approches sont possibles. Pour le faire " +"manuellement, commencez par lire :ref:`le document \"Extension et intégration" +"\" `. Sachez que pour le système d'exécution Python, il n'y " +"a pas beaucoup de différence entre C et C++ — donc la méthode pour " +"construire un nouveau type Python à partir d'une structure C (pointeur) " +"fonctionne également avec des objets en C++." #: ../Doc/faq/extending.rst:207 msgid "For C++ libraries, see :ref:`c-wrapper-software`." -msgstr "" +msgstr "Pour les bibliothèques C++, voir :ref:`c-wrapper-software`." #: ../Doc/faq/extending.rst:211 msgid "I added a module using the Setup file and the make fails; why?" msgstr "" +"J'ai ajouté un module en utilisant le fichier *Setup* et la compilation " +"échoue ; pourquoi ?" #: ../Doc/faq/extending.rst:213 msgid "" @@ -282,30 +335,40 @@ msgid "" "fails. (Fixing this requires some ugly shell script hackery, and this bug " "is so minor that it doesn't seem worth the effort.)" msgstr "" +"Le fichier *Setup* doit se terminer par une ligne vide, s'il n'y a pas de " +"ligne vide, le processus de compilation échoue (ce problème peut se régler " +"en bidouillant un script shell, et ce bogue est si mineur qu'il ne mérite " +"pas qu'on s'y attarde)." #: ../Doc/faq/extending.rst:219 msgid "How do I debug an extension?" -msgstr "" +msgstr "Comment déboguer une extension ?" #: ../Doc/faq/extending.rst:221 msgid "" "When using GDB with dynamically loaded extensions, you can't set a " "breakpoint in your extension until your extension is loaded." msgstr "" +"Lorsque vous utilisez GDB avec des extensions chargées dynamiquement, vous " +"ne pouvez pas placer de point d'arrêt dans votre extension tant que celle-ci " +"n'est pas chargée." #: ../Doc/faq/extending.rst:224 msgid "In your ``.gdbinit`` file (or interactively), add the command:" msgstr "" +"Dans votre fichier ``.gdbinit`` (ou manuellement), ajoutez la commande :" #: ../Doc/faq/extending.rst:230 msgid "Then, when you run GDB:" -msgstr "" +msgstr "Ensuite, lorsque vous exécutez GDB :" #: ../Doc/faq/extending.rst:242 msgid "" "I want to compile a Python module on my Linux system, but some files are " "missing. Why?" msgstr "" +"Je veux compiler un module Python sur mon système Linux, mais il manque " +"certains fichiers. Pourquoi ?" #: ../Doc/faq/extending.rst:244 msgid "" @@ -313,14 +376,19 @@ msgid "" "{x}/config/` directory, which contains various files required for compiling " "Python extensions." msgstr "" +"La plupart des versions pré-compilées de Python n'incluent pas le " +"répertoire :file:`/usr/lib/python2.{x}/config/`, qui contient les différents " +"fichiers nécessaires à la compilation des extensions Python." #: ../Doc/faq/extending.rst:248 msgid "For Red Hat, install the python-devel RPM to get the necessary files." msgstr "" +"Pour Red Hat, installez le RPM *python-devel* pour obtenir les fichiers " +"nécessaires." #: ../Doc/faq/extending.rst:250 msgid "For Debian, run ``apt-get install python-dev``." -msgstr "" +msgstr "Pour Debian, exécutez ``apt-get install python-dev``." #: ../Doc/faq/extending.rst:254 msgid "" @@ -347,6 +415,8 @@ msgstr "" #: ../Doc/faq/extending.rst:268 msgid "How do I tell \"incomplete input\" from \"invalid input\"?" msgstr "" +"Comment distinguer une « entrée incomplète » (*incomplete input*) d'une " +"« entrée invalide » (*invalid input*) ?" #: ../Doc/faq/extending.rst:270 msgid "" @@ -356,12 +426,19 @@ msgid "" "parentheses or triple string quotes), but it gives you a syntax error " "message immediately when the input is invalid." msgstr "" +"Parfois vous souhaitez émuler le comportement de l'interpréteur interactif " +"Python, quand il vous donne une invite de continuation lorsque l'entrée est " +"incomplète (par exemple, vous avez tapé le début d'une instruction \"if\" ou " +"vous n'avez pas fermé vos parenthèses ou triple guillemets) mais il vous " +"renvoie immédiatement une erreur syntaxique quand la saisie est incorrecte." #: ../Doc/faq/extending.rst:276 msgid "" "In Python you can use the :mod:`codeop` module, which approximates the " "parser's behavior sufficiently. IDLE uses this, for example." msgstr "" +"En Python, vous pouvez utiliser le module :mod:`codeop`, qui se rapproche " +"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise." #: ../Doc/faq/extending.rst:279 msgid "" @@ -371,6 +448,12 @@ msgid "" "to point at your custom input function. See ``Modules/readline.c`` and " "``Parser/myreadline.c`` for more hints." msgstr "" +"La façon la plus simple de le faire en C est d'appeler :c:func:" +"`PyRun_InteractiveLoop` (peut-être dans un autre fil d'exécution) et laisser " +"l'interpréteur Python gérer l'entrée pour vous. Vous pouvez également " +"définir :c:func:`PyOS_ReadlineFunctionPointer` pour pointer vers votre " +"fonction d'entrée personnalisée. Voir ``Modules/readline.c`` et ``Parser/" +"myreadline.c`` pour plus de conseils." #: ../Doc/faq/extending.rst:285 msgid "" @@ -393,10 +476,21 @@ msgid "" "\". Here is a complete example using the GNU readline library (you may want " "to ignore **SIGINT** while calling readline())::" msgstr "" +"Une autre solution est d'essayer de compiler la chaîne reçue avec :c:func:" +"`Py_CompileString`. Si cela se compile sans erreur, essayez d'exécuter " +"l'objet code renvoyé en appelant :c:func:`PyEval_EvalCode`. Sinon, " +"enregistrez l'entrée pour plus tard. Si la compilation échoue, vérifiez s'il " +"s'agit d'une erreur ou s'il faut juste plus de données — en extrayant la " +"chaîne de message du tuple d'exception et en la comparant à la chaîne *" +"\"unexpected EOF while parsing\"*. Voici un exemple complet d'utilisation de " +"la bibliothèque *readline* de GNU (il vous est possible d'ignorer **SIGINT** " +"lors de l'appel à ``readline()``) ::" #: ../Doc/faq/extending.rst:439 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" msgstr "" +"Comment puis-je trouver les symboles g++ indéfinis ``__builtin_new`` ou " +"``__pure_virtual`` ?" #: ../Doc/faq/extending.rst:441 msgid "" @@ -404,18 +498,27 @@ msgid "" "it using g++ (change LINKCC in the Python Modules Makefile), and link your " "extension module using g++ (e.g., ``g++ -shared -o mymodule.so mymodule.o``)." msgstr "" +"Pour charger dynamiquement les modules d'extension g++, vous devez " +"recompiler Python, effectuer l'édition de liens en utilisant g++ (modifiez " +"*LINKCC* dans le *Python Modules Makefile*), et effectuer l'édition de liens " +"de votre module d'extension avec g++ (par exemple, ``g++ -shared -o mymodule." +"so mymodule.o``)." #: ../Doc/faq/extending.rst:447 msgid "" "Can I create an object class with some methods implemented in C and others " "in Python (e.g. through inheritance)?" msgstr "" +"Puis-je créer une classe d'objets avec certaines méthodes implémentées en C " +"et d'autres en Python (p. ex. en utilisant l'héritage) ?" #: ../Doc/faq/extending.rst:449 msgid "" "Yes, you can inherit from built-in classes such as :class:`int`, :class:" "`list`, :class:`dict`, etc." msgstr "" +"Oui, vous pouvez hériter de classes intégrées telles que :class:`int`, :" +"class:`list`, :class:`dict`, etc." #: ../Doc/faq/extending.rst:452 msgid "" @@ -423,6 +526,9 @@ msgid "" "html) provides a way of doing this from C++ (i.e. you can inherit from an " "extension class written in C++ using the BPL)." msgstr "" +"La bibliothèque *Boost Python Library* (BPL, http://www.boost.org/libs/" +"python/doc/index.html) fournit un moyen de le faire depuis C++ (c.-à-d. que " +"vous pouvez hériter d'une classe d'extension écrite en C++ en utilisant BPL)." #: ../Doc/faq/extending.rst:458 msgid "" diff --git a/faq/gui.po b/faq/gui.po index 7b043eb8..01a22fb1 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -53,6 +53,11 @@ msgid "" "targets. Language bindings are available for a number of languages " "including Python, Perl, Ruby, etc." msgstr "" +"`wxWidgets` (https://www.wxwidgets.org) est une librairie de classe IUG " +"portable et gratuite écrite en C++ qui fournit une apparence native sur un " +"certain nombre de plates-formes, elle est notamment en version stable pour " +"Windows, Mac OS X, GTK et X11. Des clients sont disponibles pour un certain " +"nombre de langages, y compris Python, Perl, Ruby, etc." #: ../Doc/faq/gui.rst:36 msgid "" @@ -74,10 +79,14 @@ msgid "" "licences that allow their use in commercial products as well as in freeware " "or shareware." msgstr "" +"*wxWidgets* et *wxPython* sont tous deux des logiciels libres, open source, " +"avec des licences permissives qui permettent leur utilisation dans des " +"produits commerciaux ainsi que dans des logiciels gratuits ou contributifs " +"(*shareware*)." #: ../Doc/faq/gui.rst:48 msgid "Qt" -msgstr "" +msgstr "*Qt*" #: ../Doc/faq/gui.rst:50 msgid "" @@ -89,16 +98,26 @@ msgid "" "com/commercial/license-faq>`_ if you want to write proprietary " "applications. PySide is free for all applications." msgstr "" +"Il existe des liens disponibles pour la boîte à outils *Qt* (en utilisant " +"soit `PyQt `_ ou `PySide " +"`_) et pour *KDE* (`PyKDE4 `__). *PyQt* est actuellement plus mûre " +"que *PySide*, mais*PyQt* nécessite d'acheter une licence de `Riverbank " +"Computing `_ si " +"vous voulez écrire des applications propriétaires. *PySide* est gratuit " +"pour toutes les applications." #: ../Doc/faq/gui.rst:57 msgid "" "Qt 4.5 upwards is licensed under the LGPL license; also, commercial licenses " "are available from `The Qt Company `_." msgstr "" +"*Qt >= 4.5* est sous licence LGPL ; de plus, des licences commerciales sont " +"disponibles auprès de `The Qt Company `_." #: ../Doc/faq/gui.rst:61 msgid "Gtk+" -msgstr "" +msgstr "*Gtk+*" #: ../Doc/faq/gui.rst:63 msgid "" @@ -108,7 +127,7 @@ msgstr "" #: ../Doc/faq/gui.rst:67 msgid "FLTK" -msgstr "" +msgstr "*FLTK*" #: ../Doc/faq/gui.rst:69 msgid "" @@ -116,6 +135,9 @@ msgid "" "powerful and mature cross-platform windowing system, are available from `the " "PyFLTK project `_." msgstr "" +"Les liaisons Python pour `the FLTK toolkit `_, un " +"système de fenêtrage multi-plateformes simple mais puissant et mûr, sont " +"disponibles auprès de `the PyFLTK project `_." #: ../Doc/faq/gui.rst:75 msgid "FOX" @@ -130,15 +152,18 @@ msgstr "" #: ../Doc/faq/gui.rst:83 msgid "OpenGL" -msgstr "" +msgstr "*OpenGL*" #: ../Doc/faq/gui.rst:85 msgid "For OpenGL bindings, see `PyOpenGL `_." msgstr "" +"Pour les clients OpenGL, voir `PyOpenGL `_." #: ../Doc/faq/gui.rst:89 msgid "What platform-specific GUI toolkits exist for Python?" msgstr "" +"Quelles boîtes à outils IUG spécifiques à la plate-forme existent pour " +"Python ?" #: ../Doc/faq/gui.rst:91 msgid "" @@ -152,14 +177,17 @@ msgid "" "Microsoft Foundation Classes and a Python programming environment that's " "written mostly in Python using the MFC classes." msgstr "" +":ref:`Pythonwin ` de Mark Hammond inclut une interface vers les " +"classes `Microsoft Foundation Classes` et un environnement de programmation " +"Python qui est écrit principalement en Python utilisant les classes *MFC*." #: ../Doc/faq/gui.rst:101 msgid "Tkinter questions" -msgstr "" +msgstr "Questions à propos de *Tkinter*" #: ../Doc/faq/gui.rst:104 msgid "How do I freeze Tkinter applications?" -msgstr "" +msgstr "Comment puis-je geler (*freezer*) les applications *Tkinter* ?" #: ../Doc/faq/gui.rst:106 msgid "" @@ -167,6 +195,10 @@ msgid "" "applications, the applications will not be truly stand-alone, as the " "application will still need the Tcl and Tk libraries." msgstr "" +"*Freeze* est un outil pour créer des applications autonomes. Lors du " +"*freezage* des applications Tkinter, les applications ne seront pas vraiment " +"autonomes, car l'application aura toujours besoin des bibliothèques Tcl et " +"Tk." #: ../Doc/faq/gui.rst:110 msgid "" @@ -174,6 +206,9 @@ msgid "" "point to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:" "`TK_LIBRARY` environment variables." msgstr "" +"Une solution consiste à empaqueter les bibliothèques *Tcl* et *Tk* dans " +"l'application et de les retrouver à l'exécution en utilisant les variables " +"d'environnement :envvar:`TCL_LIBRARY` et :envvar:`TK_LIBRARY`." #: ../Doc/faq/gui.rst:114 msgid "" @@ -182,6 +217,10 @@ msgid "" "is SAM (stand-alone modules), which is part of the Tix distribution (http://" "tix.sourceforge.net/)." msgstr "" +"Pour obtenir des applications vraiment autonomes, les scripts *Tcl* qui " +"forment la bibliothèque doivent également être intégrés dans l'application. " +"Un outil supportant cela est *SAM* (modules autonomes), qui fait partie de " +"la distribution *Tix* (http://tix.sourceforge.net/)." #: ../Doc/faq/gui.rst:119 msgid "" @@ -189,10 +228,14 @@ msgid "" "`Tclsam_init`, etc. inside Python's :file:`Modules/tkappinit.c`, and link " "with libtclsam and libtksam (you might include the Tix libraries as well)." msgstr "" +"Compilez Tix avec SAM activé, exécutez l'appel approprié à :c:func:" +"`Tclsam_init`, etc. dans le fichier :file:`Modules/tkappinit.c` de Python, " +"et liez avec *libtclsam* et *libtksam* (il est également possible d'inclure " +"les bibliothèques *Tix*)." #: ../Doc/faq/gui.rst:126 msgid "Can I have Tk events handled while waiting for I/O?" -msgstr "" +msgstr "Puis-je modifier des événements *Tk* pendant l'écoute des *E/S* ?" #: ../Doc/faq/gui.rst:128 msgid "" @@ -202,10 +245,18 @@ msgid "" "function which will be called from the Tk mainloop when I/O is possible on a " "file descriptor. See :ref:`tkinter-file-handlers`." msgstr "" +"Sur d'autres plates-formes que Windows, oui, et vous n'avez même pas besoin " +"de fils d'exécution multiples ! Mais vous devrez restructurer un peu votre " +"code *E/S*. *Tk* possède l'équivalent de l'appel :c:func:`XtAddInput()` de " +"*Xt*, qui vous permet d'enregistrer une fonction de *callback* qui sera " +"appelée par la boucle principale *Tk* lorsque des *E/S* sont disponibles sur " +"un descripteur de fichier. Voir :ref:`tkinter-file-handlers`." #: ../Doc/faq/gui.rst:136 msgid "I can't get key bindings to work in Tkinter: why?" msgstr "" +"Je n'arrive pas à faire fonctionner les raccourcis clavier dans *Tkinter* : " +"pourquoi ?" #: ../Doc/faq/gui.rst:138 msgid "" @@ -213,6 +264,9 @@ msgid "" "meth:`bind` method don't get handled even when the appropriate key is " "pressed." msgstr "" +"Une raison récurrente est que les gestionnaires d’évènements liés à des " +"évènements avec la méthode :meth:`bind` ne sont pas pris en charge même " +"lorsque la touche appropriée est activée." #: ../Doc/faq/gui.rst:141 msgid "" @@ -221,3 +275,8 @@ msgid "" "focus command. Usually a widget is given the keyboard focus by clicking in " "it (but not for labels; see the takefocus option)." msgstr "" +"La cause la plus fréquente est que l'objet graphique auquel s'applique la " +"liaison n'a pas de « focus clavier ». Consultez la documentation *Tk* pour " +"la commande *focus*. Habituellement, un objet graphique reçoit le focus du " +"clavier en cliquant dessus (mais pas pour les étiquettes ; voir l'option " +"*takefocus*)." diff --git a/faq/library.po b/faq/library.po index 05649248..3cf7d8df 100644 --- a/faq/library.po +++ b/faq/library.po @@ -36,6 +36,9 @@ msgid "" "relevant standard library module. (Eventually you'll learn what's in the " "standard library and will be able to skip this step.)" msgstr "" +"Regardez si la :ref:`bibliothèque standard ` contient un " +"module approprié (avec l'expérience, vous connaitrez le contenu de la " +"bibliothèque standard et pourrez sauter cette étape)." #: ../Doc/faq/library.rst:21 msgid "" @@ -58,6 +61,12 @@ msgid "" "file:`mathmodule.c`, somewhere in a C source directory (not on the Python " "Path)." msgstr "" +"Si vous ne parvenez pas à trouver le fichier source d'un module, c'est peut-" +"être parce que celui-ci est un module natif ou bien un module implémenté en " +"C, C++, ou autre langage compilé, qui est chargé dynamiquement. Dans ce cas, " +"vous ne possédez peut-être pas le fichier source ou celui-ci est en réalité " +"stocké quelque part dans un dossier de fichiers source C (qui ne sera pas " +"dans le chemin Python), comme par exemple :file:`mathmodule.c`." #: ../Doc/faq/library.rst:35 msgid "There are (at least) three kinds of modules in Python:" @@ -79,10 +88,12 @@ msgid "" "modules written in C and linked with the interpreter; to get a list of " "these, type::" msgstr "" +"les modules écrits en C et liés à l'interpréteur ; pour obtenir leur liste, " +"entrez ::" #: ../Doc/faq/library.rst:47 msgid "How do I make a Python script executable on Unix?" -msgstr "" +msgstr "Comment rendre un script Python exécutable sous Unix ?" #: ../Doc/faq/library.rst:49 msgid "" @@ -90,24 +101,31 @@ msgid "" "first line must begin with ``#!`` followed by the path of the Python " "interpreter." msgstr "" +"Deux conditions doivent être remplies : les droits d'accès au fichier " +"doivent permettre son exécution et la première ligne du script doit " +"commencer par ``#!`` suivi du chemin vers l'interpréteur Python." #: ../Doc/faq/library.rst:53 msgid "" "The first is done by executing ``chmod +x scriptfile`` or perhaps ``chmod " "755 scriptfile``." msgstr "" +"La première condition est remplie en exécutant ``chmod +x scriptfile`` ou " +"``chmod 755 scriptfile``." #: ../Doc/faq/library.rst:56 msgid "" "The second can be done in a number of ways. The most straightforward way is " "to write ::" msgstr "" +"Il y a plusieurs façons de remplir la seconde. La plus simple consiste à " +"écrire au tout début du fichier ::" #: ../Doc/faq/library.rst:61 msgid "" "as the very first line of your file, using the pathname for where the Python " "interpreter is installed on your platform." -msgstr "" +msgstr "en utilisant le chemin de l'interpréteur Python sur votre machine." #: ../Doc/faq/library.rst:64 msgid "" @@ -116,6 +134,11 @@ msgid "" "variants support the following, assuming the Python interpreter is in a " "directory on the user's :envvar:`PATH`::" msgstr "" +"Pour rendre ce script indépendant de la localisation de l'interpréteur " +"Python, il faut utiliser le programme :program:`env`. La ligne ci-dessous " +"fonctionne sur la quasi-totalité des dérivés de Unix, à condition que " +"l'interpréteur Python soit dans un dossier référencé dans la variable :" +"envvar:`PATH` de l'utilisateur ::" #: ../Doc/faq/library.rst:71 msgid "" @@ -123,6 +146,9 @@ msgid "" "scripts is often very minimal, so you need to use the actual absolute " "pathname of the interpreter." msgstr "" +"Ne faites *pas* ceci pour des scripts CGI. La variable :envvar:`PATH` des " +"scripts CGI est souvent très succincte, il faut par conséquent préciser le " +"chemin absolu réel de l'interpréteur." #: ../Doc/faq/library.rst:75 msgid "" @@ -136,10 +162,12 @@ msgid "" "The minor disadvantage is that this defines the script's __doc__ string. " "However, you can fix that by adding ::" msgstr "" +"Le léger inconvénient est que cela définit la variable *__doc__* du script. " +"Cependant, il est possible de corriger cela en ajoutant ::" #: ../Doc/faq/library.rst:92 msgid "Is there a curses/termcap package for Python?" -msgstr "" +msgstr "Existe-t'il un module *curse* ou *termcap* en Python ?" #: ../Doc/faq/library.rst:96 msgid "" @@ -158,44 +186,57 @@ msgid "" "but there don't seem to be any currently maintained OSes that fall into this " "category." msgstr "" +"Le module :mod:`curses` comprend les fonctionnalités de base de *curses* et " +"beaucoup de fonctionnalités supplémentaires provenant de *ncurses* et de " +"*SYSV curses* comme la couleur, la gestion des ensembles de caractères " +"alternatifs, la prise en charge du pavé tactile et de la souris. Cela " +"implique que le module n'est pas compatible avec des systèmes d'exploitation " +"qui n'ont que le *curses* de BSD mais, de nos jours, de tels systèmes " +"d'exploitation ne semblent plus exister ou être maintenus." #: ../Doc/faq/library.rst:107 msgid "" "For Windows: use `the consolelib module `_." msgstr "" +"Pour Windows : utilisez le module `consolelib `_." #: ../Doc/faq/library.rst:112 msgid "Is there an equivalent to C's onexit() in Python?" -msgstr "" +msgstr "Existe-t'il un équivalent à la fonction C ``onexit()`` en Python ?" #: ../Doc/faq/library.rst:114 msgid "" "The :mod:`atexit` module provides a register function that is similar to " "C's :c:func:`onexit`." msgstr "" +"Le module :mod:`atexit` fournit une fonction d'enregistrement similaire à la " +"fonction C :c:func:`onexit`." #: ../Doc/faq/library.rst:119 msgid "Why don't my signal handlers work?" -msgstr "" +msgstr "Pourquoi mes gestionnaires de signaux ne fonctionnent-t'ils pas ?" #: ../Doc/faq/library.rst:121 msgid "" "The most common problem is that the signal handler is declared with the " "wrong argument list. It is called as ::" msgstr "" +"Le problème le plus courant est d'appeler le gestionnaire de signaux avec " +"les mauvais arguments. Un gestionnaire est appelé de la façon suivante ::" #: ../Doc/faq/library.rst:126 msgid "so it should be declared with two arguments::" -msgstr "" +msgstr "donc il doit être déclaré avec deux paramètres ::" #: ../Doc/faq/library.rst:133 msgid "Common tasks" -msgstr "" +msgstr "Tâches fréquentes" #: ../Doc/faq/library.rst:136 msgid "How do I test a Python program or component?" -msgstr "" +msgstr "Comment tester un programme ou un composant Python ?" #: ../Doc/faq/library.rst:138 msgid "" @@ -203,12 +244,17 @@ msgid "" "examples in the docstrings for a module and runs them, comparing the output " "with the expected output given in the docstring." msgstr "" +"Python fournit deux cadriciels de test. Le module :mod:`doctest` cherche des " +"exemples dans les *docstrings* d'un module et les exécute. Il compare alors " +"la sortie avec la sortie attendue, telle que définie dans la *docstring*." #: ../Doc/faq/library.rst:142 msgid "" "The :mod:`unittest` module is a fancier testing framework modelled on Java " "and Smalltalk testing frameworks." msgstr "" +"Le module :mod:`unittest` est un cadriciel un peu plus élaboré basé sur les " +"cadriciels de test de Java et de Smalltalk." #: ../Doc/faq/library.rst:145 msgid "" @@ -220,14 +266,23 @@ msgid "" "avoid depending on mutating global variables, since this makes testing much " "more difficult to do." msgstr "" +"Pour rendre le test plus aisé, il est nécessaire de bien découper le code " +"d'un programme. Votre programme doit avoir la quasi-totalité des " +"fonctionnalités dans des fonctions ou des classes — et ceci a parfois " +"l'avantage aussi plaisant qu'inattendu de rendre le programme plus rapide, " +"les accès aux variables locales étant en effet plus rapides que les accès " +"aux variables globales. De plus le programme doit éviter au maximum de " +"manipuler des variables globales, car ceci rend le test beaucoup plus " +"difficile." #: ../Doc/faq/library.rst:153 msgid "The \"global main logic\" of your program may be as simple as ::" msgstr "" +"La « logique générale » d'un programme devrait être aussi simple que ::" #: ../Doc/faq/library.rst:158 msgid "at the bottom of the main module of your program." -msgstr "" +msgstr "à la fin du module principal du programme." #: ../Doc/faq/library.rst:160 msgid "" @@ -240,12 +295,24 @@ msgid "" "the \"production code\", since this makes it easy to find bugs and even " "design flaws earlier." msgstr "" +"Une fois que la logique du programme est implémentée par un ensemble de " +"fonctions et de comportements de classes, il faut écrire des fonctions de " +"test qui vont éprouver cette logique. À chaque module, il est possible " +"d'associer une suite de tests qui joue de manière automatique un ensemble de " +"tests. Au premier abord, il semble qu'il faille fournir un effort " +"conséquent, mais comme Python est un langage concis et flexible, c'est " +"surprenamment aisé. Écrire simultanément le code « de production » et les " +"fonctions de test associées rend le développement plus agréable et plus " +"amusant, car ceci permet de trouver des bogues, voire des défauts de " +"conception, plus facilement." #: ../Doc/faq/library.rst:168 msgid "" "\"Support modules\" that are not intended to be the main module of a program " "may include a self-test of the module. ::" msgstr "" +"Les « modules auxiliaires » qui n'ont pas vocation à être le module " +"principal du programme peuvent inclure un test pour se vérifier eux-mêmes. ::" #: ../Doc/faq/library.rst:174 msgid "" @@ -253,10 +320,13 @@ msgid "" "when the external interfaces are unavailable by using \"fake\" interfaces " "implemented in Python." msgstr "" +"Les programmes qui interagissent avec des interfaces externes complexes " +"peuvent être testés même quand ces interfaces ne sont pas disponibles, en " +"utilisant des interfaces « simulacres » implémentées en Python." #: ../Doc/faq/library.rst:180 msgid "How do I create documentation from doc strings?" -msgstr "" +msgstr "Comment générer la documentation à partir des *docstrings* ?" #: ../Doc/faq/library.rst:182 msgid "" @@ -265,10 +335,15 @@ msgid "" "docstrings is `epydoc `_. `Sphinx `_ can also include docstring content." msgstr "" +"Le module :mod:`pydoc` peut générer du HTML à partir des *docstrings* du " +"code source Python. Il est aussi possible de documenter une API uniquement à " +"partir des *docstrings* à l'aide de `epydoc `_. `Sphinx `_ peut également inclure du contenu " +"provenant de *docstrings*." #: ../Doc/faq/library.rst:189 msgid "How do I get a single keypress at a time?" -msgstr "" +msgstr "Comment détecter qu'une touche est pressée ?" #: ../Doc/faq/library.rst:191 msgid "" @@ -294,11 +369,11 @@ msgstr "" #: ../Doc/faq/library.rst:227 msgid "Threads" -msgstr "" +msgstr "Fils d'exécution" #: ../Doc/faq/library.rst:230 msgid "How do I program using threads?" -msgstr "" +msgstr "Comment programmer avec des fils d'exécution ?" #: ../Doc/faq/library.rst:234 msgid "" @@ -312,22 +387,29 @@ msgid "" "Aahz has a set of slides from his threading tutorial that are helpful; see " "http://www.pythoncraft.com/OSCON2001/." msgstr "" +"Un ensemble de diapositives issues du didacticiel de Aahz sur les fils " +"d'exécution est disponible à http://www.pythoncraft.com/OSCON2001/." #: ../Doc/faq/library.rst:243 msgid "None of my threads seem to run: why?" -msgstr "" +msgstr "Aucun de mes fils ne semble s'exécuter : pourquoi ?" #: ../Doc/faq/library.rst:245 msgid "" "As soon as the main thread exits, all threads are killed. Your main thread " "is running too quickly, giving the threads no time to do any work." msgstr "" +"Dès que le fil d'exécution principal se termine, tous les fils sont tués. Le " +"fil principal s'exécute trop rapidement, sans laisser le temps aux autres " +"fils de faire quoi que ce soit." #: ../Doc/faq/library.rst:248 msgid "" "A simple fix is to add a sleep to the end of the program that's long enough " "for all the threads to finish::" msgstr "" +"Une correction simple consiste à ajouter un temps d'attente suffisamment " +"long à la fin du programme pour que tous les fils puissent se terminer ::" #: ../Doc/faq/library.rst:262 msgid "" @@ -335,10 +417,16 @@ msgid "" "run sequentially, one at a time! The reason is that the OS thread scheduler " "doesn't start a new thread until the previous thread is blocked." msgstr "" +"Mais à présent, sur beaucoup de plates-formes, les fils ne s'exécutent pas " +"en parallèle, mais semblent s'exécuter de manière séquentielle, l'un après " +"l'autre ! En réalité, l'ordonnanceur de fils du système d'exploitation ne " +"démarre pas de nouveau fil avant que le précédent ne soit bloqué." #: ../Doc/faq/library.rst:266 msgid "A simple fix is to add a tiny sleep to the start of the run function::" msgstr "" +"Une correction simple consiste à ajouter un petit temps d'attente au début " +"de la fonction ::" #: ../Doc/faq/library.rst:278 msgid "" @@ -352,6 +440,8 @@ msgstr "" #: ../Doc/faq/library.rst:286 msgid "How do I parcel out work among a bunch of worker threads?" msgstr "" +"Comment découper et répartir une tâche au sein d'un ensemble de fils " +"d'exécutions ?" #: ../Doc/faq/library.rst:288 msgid "" @@ -364,11 +454,11 @@ msgstr "" #: ../Doc/faq/library.rst:294 msgid "Here's a trivial example::" -msgstr "" +msgstr "Voici un exemple trivial ::" #: ../Doc/faq/library.rst:332 msgid "When run, this will produce the following output:" -msgstr "" +msgstr "Quand celui-ci est exécuté, il produit la sortie suivante :" #: ../Doc/faq/library.rst:350 msgid "" @@ -379,6 +469,8 @@ msgstr "" #: ../Doc/faq/library.rst:355 msgid "What kinds of global value mutation are thread-safe?" msgstr "" +"Quels types de mutations sur des variables globales sont compatibles avec " +"les programmes à fils d'exécution multiples ? sécurisé ?" #: ../Doc/faq/library.rst:357 msgid "" @@ -397,16 +489,24 @@ msgid "" "shared variables of built-in data types (ints, lists, dicts, etc) that " "\"look atomic\" really are." msgstr "" +"En théorie, cela veut dire qu'un décompte exact nécessite une connaissance " +"parfaite de l'implémentation de la MVP. En pratique, cela veut dire que les " +"opérations sur des variables partagées de type natif (les entier, les " +"listes, les dictionnaires etc.) qui « semblent atomiques » le sont " +"réellement." #: ../Doc/faq/library.rst:369 msgid "" "For example, the following operations are all atomic (L, L1, L2 are lists, " "D, D1, D2 are dicts, x, y are objects, i, j are ints)::" msgstr "" +"Par exemple, les opérations suivantes sont toutes atomiques (*L*, *L1* et " +"*L2* sont des listes, *D*, *D1* et *D2* sont des dictionnaires, *x* et *y* " +"sont des objets, *i* et *j* des entiers) ::" #: ../Doc/faq/library.rst:384 msgid "These aren't::" -msgstr "" +msgstr "Les suivantes ne le sont pas ::" #: ../Doc/faq/library.rst:391 msgid "" @@ -415,10 +515,15 @@ msgid "" "affect things. This is especially true for the mass updates to dictionaries " "and lists. When in doubt, use a mutex!" msgstr "" +"Les opérations qui remplacent d'autres objets peuvent invoquer la méthode :" +"meth:`__del__` de ces objets quand leur compteur de référence passe à zéro, " +"et cela peut avoir de l'impact. C'est tout particulièrement vrai pour les " +"des changements massifs sur des dictionnaires ou des listes. En cas de " +"doute, il vaut mieux utiliser un mutex." #: ../Doc/faq/library.rst:398 msgid "Can't we get rid of the Global Interpreter Lock?" -msgstr "" +msgstr "Pourquoi ne pas se débarrasser du verrou global de l'interpréteur ?" #: ../Doc/faq/library.rst:403 msgid "" @@ -427,6 +532,12 @@ msgid "" "multi-threaded Python program effectively only uses one CPU, due to the " "insistence that (almost) all Python code can only run while the GIL is held." msgstr "" +"Le :term:`verrou global de l'interpréteur ` (GIL) " +"est souvent vu comme un obstacle au déploiement de code Python sur des " +"serveurs puissants avec de nombreux processeurs, car un programme Python à " +"fils d'exécutions multiples n'utilise en réalité qu'un seul processeur. " +"Presque tout le code Python ne peut en effet être exécuté qu'avec le GIL " +"acquis." #: ../Doc/faq/library.rst:408 msgid "" @@ -468,6 +579,15 @@ msgid "" "types have their own free list; these free lists would have to be moved to " "the interpreter state. And so on." msgstr "" +"On a déjà proposé de restreindre le GIL par interpréteur, et non plus d'être " +"complétement global ; les interpréteurs ne seraient plus en mesure de " +"partager des objets. Malheureusement, cela n'a pas beaucoup de chance non " +"plus d'arriver. Cela nécessiterait un travail considérable, car la façon " +"dont beaucoup d'objets sont implémentés rend leur état global. Par exemple, " +"les entiers et les chaînes de caractères courts sont mis en cache ; ces " +"caches devraient être déplacés au niveau de l'interpréteur. D'autres objets " +"ont leur propre liste de suppression, ces listes devraient être déplacées au " +"niveau de l'interpréteur et ainsi de suite." #: ../Doc/faq/library.rst:436 msgid "" @@ -476,12 +596,19 @@ msgid "" "extensions are being written at a faster rate than you can convert them to " "store all their global state in the interpreter state." msgstr "" +"C'est une tâche sans fin, car les extensions tierces ont le même problème, " +"et il est probable que les extensions tierces soient développées plus vite " +"qu'il ne soit possible de les corriger pour les faire stocker leur état au " +"niveau de l'interpréteur et non plus au niveau global." #: ../Doc/faq/library.rst:441 msgid "" "And finally, once you have multiple interpreters not sharing any state, what " "have you gained over running each interpreter in a separate process?" msgstr "" +"Et enfin, quel intérêt y-a t'il à avoir plusieurs interpréteurs qui ne " +"partagent pas d'état, par rapport à faire tourner chaque interpréteur dans " +"un processus différent ?" #: ../Doc/faq/library.rst:446 msgid "Input and Output" @@ -489,7 +616,7 @@ msgstr "Les entrées/sorties" #: ../Doc/faq/library.rst:449 msgid "How do I delete a file? (And other file questions...)" -msgstr "" +msgstr "Comment supprimer un fichier ? (et autres questions sur les fichiers…)" #: ../Doc/faq/library.rst:451 msgid "" @@ -506,10 +633,16 @@ msgid "" "directories as long as they're empty; if you want to delete an entire " "directory tree and its contents, use :func:`shutil.rmtree`." msgstr "" +"Utilisez :func:`os.rmdir` pour supprimer un dossier et :func:`os.mkdir` pour " +"en créer un nouveau. ``os.makedirs(chemin)`` crée les dossiers " +"intermédiaires de ``chemin`` qui n'existent pas et ``os.removedirs(chemin)`` " +"supprime les dossiers intermédiaires si ceux-ci sont vides. Pour supprimer " +"une arborescence et tout son contenu, utilisez :func:`shutil.rmtree`." #: ../Doc/faq/library.rst:461 msgid "To rename a file, use ``os.rename(old_path, new_path)``." msgstr "" +"``os.rename(ancien_chemin, nouveau_chemin)`` permet de renommer un fichier." #: ../Doc/faq/library.rst:463 msgid "" @@ -525,20 +658,26 @@ msgid "" "files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :" "func:`~shutil.rmtree`." msgstr "" +"Le module :mod:`shutil` propose aussi un grand nombre de fonctions pour " +"effectuer des opérations sur des fichiers comme :func:`~shutil.copyfile`, :" +"func:`~shutil.copytree` et :func:`~shutil.rmtree`." #: ../Doc/faq/library.rst:474 msgid "How do I copy a file?" -msgstr "" +msgstr "Comment copier un fichier ?" #: ../Doc/faq/library.rst:476 msgid "" "The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note " "that on MacOS 9 it doesn't copy the resource fork and Finder info." msgstr "" +"Le module :mod:`shutil` fournit la fonction :func:`~shutil.copyfile`. Sous " +"MacOS 9, celle-ci ne copie pas le clonage de ressources ni les informations " +"du chercheur." #: ../Doc/faq/library.rst:481 msgid "How do I read (or write) binary data?" -msgstr "" +msgstr "Comment lire (ou écrire) des données binaires ?" #: ../Doc/faq/library.rst:483 msgid "" @@ -546,12 +685,18 @@ msgid "" "`struct` module. It allows you to take a string containing binary data " "(usually numbers) and convert it to Python objects; and vice versa." msgstr "" +"Pour lire ou écrire des formats de données complexes en binaire, il est " +"recommandé d'utiliser le module :mod:`struct`. Celui-ci permet de convertir " +"une chaîne de caractères qui contient des données binaires, souvent des " +"nombres, en objets Python, et vice-versa." #: ../Doc/faq/library.rst:487 msgid "" "For example, the following code reads two 2-byte integers and one 4-byte " "integer in big-endian format from a file::" msgstr "" +"Par exemple, le code suivant lit, depuis un fichier, deux entiers codés sur " +"2 octets et un entier codé sur 4 octets, en format gros-boutiste ::" #: ../Doc/faq/library.rst:496 msgid "" @@ -559,16 +704,24 @@ msgid "" "one \"short integer\" (2 bytes), and 'l' reads one \"long integer\" (4 " "bytes) from the string." msgstr "" +"« > » dans la chaîne de formatage indique que la donnée doit être lue en " +"mode gros-boutiste, la lettre « h » indique un entier court (2 octets) et la " +"lettre « l » indique un entier long (4 octets)." #: ../Doc/faq/library.rst:500 msgid "" "For data that is more regular (e.g. a homogeneous list of ints or floats), " "you can also use the :mod:`array` module." msgstr "" +"Pour une donnée plus régulière (p. ex. une liste homogène d'entiers ou de " +"nombres à virgule flottante), il est possible d'utiliser le module :mod:" +"`array`." #: ../Doc/faq/library.rst:505 msgid "I can't seem to use os.read() on a pipe created with os.popen(); why?" msgstr "" +"Il me semble impossible d'utiliser ``os.read()`` sur un tube créé avec ``os." +"popen()`` ; pourquoi ?" #: ../Doc/faq/library.rst:507 msgid "" @@ -578,6 +731,12 @@ msgid "" "function. Thus, to read *n* bytes from a pipe *p* created with :func:`os." "popen`, you need to use ``p.read(n)``." msgstr "" +":func:`os.read` est une fonction de bas niveau qui prend en paramètre un " +"descripteur de fichier — un entier court qui représente le fichier ouvert. :" +"func:`os.popen` crée un objet fichier de haut niveau, du même type que celui " +"renvoyé par la fonction native :func:`open`. Par conséquent, pour lire *n* " +"octets d'un tube *p* créé avec :func:`os.popen`, il faut utiliser ``p." +"read(n)``." #: ../Doc/faq/library.rst:515 msgid "" @@ -642,27 +801,30 @@ msgstr "" #: ../Doc/faq/library.rst:592 msgid "How do I access the serial (RS232) port?" -msgstr "" +msgstr "Comment accéder au port de transmission en série (RS-232) ?" #: ../Doc/faq/library.rst:594 msgid "For Win32, POSIX (Linux, BSD, etc.), Jython:" -msgstr "" +msgstr "Pour Win32, POSIX (Linux, BSD, etc.) et Jython :" #: ../Doc/faq/library.rst:596 msgid "http://pyserial.sourceforge.net" -msgstr "" +msgstr "http://pyserial.sourceforge.net" #: ../Doc/faq/library.rst:598 msgid "For Unix, see a Usenet post by Mitch Chapman:" msgstr "" +"Pour Unix, référez-vous à une publication sur Usenet de Mitch Chapman :" #: ../Doc/faq/library.rst:600 msgid "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com" -msgstr "" +msgstr "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com" #: ../Doc/faq/library.rst:604 msgid "Why doesn't closing sys.stdout (stdin, stderr) really close it?" msgstr "" +"Pourquoi fermer *sys.stdout*, *sys.stdin*, *sys.stderr* ne les ferme pas " +"réellement ?" #: ../Doc/faq/library.rst:606 msgid "" @@ -697,11 +859,11 @@ msgstr "" #: ../Doc/faq/library.rst:631 msgid "Network/Internet Programming" -msgstr "" +msgstr "Programmation réseau et Internet" #: ../Doc/faq/library.rst:634 msgid "What WWW tools are there for Python?" -msgstr "" +msgstr "Quels sont les outils Python dédiés à la Toile ?" #: ../Doc/faq/library.rst:636 msgid "" @@ -709,28 +871,38 @@ msgid "" "Reference Manual. Python has many modules that will help you build server-" "side and client-side web systems." msgstr "" +"Référez-vous aux chapitres intitulés :ref:`internet` et :ref:`netdata` dans " +"le manuel de référence de la bibliothèque. Python a de nombreux modules pour " +"construire des applications de Toile côté client comme côté serveur." #: ../Doc/faq/library.rst:642 msgid "" "A summary of available frameworks is maintained by Paul Boddie at https://" "wiki.python.org/moin/WebProgramming\\ ." msgstr "" +"Un résumé des cadriciels disponibles est maintenu par Paul Boddie à " +"l'adresse https://wiki.python.org/moin/WebProgramming\\ ." #: ../Doc/faq/library.rst:645 msgid "" "Cameron Laird maintains a useful set of pages about Python web technologies " "at http://phaseit.net/claird/comp.lang.python/web_python." msgstr "" +"Cameron Laird maintient un ensemble intéressant d'articles sur les " +"technologies Python dédiées à la Toile à l'adresse http://phaseit.net/claird/" +"comp.lang.python/web_python." #: ../Doc/faq/library.rst:650 msgid "How can I mimic CGI form submission (METHOD=POST)?" -msgstr "" +msgstr "Comment reproduire un envoi de formulaire CGI (METHOD=POST) ?" #: ../Doc/faq/library.rst:652 msgid "" "I would like to retrieve web pages that are the result of POSTing a form. Is " "there existing code that would let me do this easily?" msgstr "" +"J'aimerais récupérer la page de retour d'un envoi de formulaire sur la " +"Toile. Existe-t'il déjà du code qui pourrait m'aider à le faire facilement ?" #: ../Doc/faq/library.rst:655 msgid "Yes. Here's a simple example that uses httplib::" @@ -745,27 +917,31 @@ msgstr "" #: ../Doc/faq/library.rst:689 msgid "What module should I use to help with generating HTML?" -msgstr "" +msgstr "Quel module utiliser pour générer du HTML ?" #: ../Doc/faq/library.rst:693 msgid "" "You can find a collection of useful links on the `Web Programming wiki page " "`_." msgstr "" +"La `page wiki de la programmation Toile `_ (en anglais) répertorie un ensemble de liens pertinents." #: ../Doc/faq/library.rst:698 msgid "How do I send mail from a Python script?" -msgstr "" +msgstr "Comment envoyer un courriel avec un script Python ?" #: ../Doc/faq/library.rst:700 msgid "Use the standard library module :mod:`smtplib`." -msgstr "" +msgstr "Utilisez le module :mod:`smtplib` de la bibliothèque standard." #: ../Doc/faq/library.rst:702 msgid "" "Here's a very simple interactive mail sender that uses it. This method will " "work on any host that supports an SMTP listener. ::" msgstr "" +"Voici un exemple très simple d'un envoyeur de courriel qui l'utilise. Cette " +"méthode fonctionne sur tous les serveurs qui implémentent SMTP. ::" #: ../Doc/faq/library.rst:722 msgid "" @@ -774,10 +950,16 @@ msgid "" "usr/sbin/sendmail``. The sendmail manual page will help you out. Here's " "some sample code::" msgstr "" +"Sous Unix, il est possible d'utiliser *sendmail*. La localisation de " +"l'exécutable *sendmail* dépend du système ; cela peut-être ``/usr/lib/" +"sendmail`` ou ``/usr/sbin/sendmail``, la page de manuel de *sendmail* peut " +"vous aider. Par exemple ::" #: ../Doc/faq/library.rst:742 msgid "How do I avoid blocking in the connect() method of a socket?" msgstr "" +"Comment éviter de bloquer dans la méthode ``connect()`` d'un connecteur " +"réseau ?" #: ../Doc/faq/library.rst:744 msgid "" @@ -793,6 +975,13 @@ msgid "" "progress, but hasn't finished yet. Different OSes will return different " "values, so you're going to have to check what's returned on your system." msgstr "" +"Pour empêcher une connexion TCP de se bloquer, il est possible de mettre le " +"connecteur en mode lecture seule. Avec cela, au moment du ``connect()``, la " +"connexion pourra être immédiate (peu probable) ou bien vous obtiendrez une " +"exception qui contient le numéro d'erreur dans ``.errno``. ``errno." +"EINPROGRESS`` indique que la connexion est en cours, mais qu'elle n'a pas " +"encore aboutie. La valeur dépend du système d'exploitation, donc renseignez-" +"vous sur la valeur utilisée par votre système." #: ../Doc/faq/library.rst:753 msgid "" @@ -804,11 +993,12 @@ msgstr "" #: ../Doc/faq/library.rst:760 msgid "Databases" -msgstr "" +msgstr "Bases de données" #: ../Doc/faq/library.rst:763 msgid "Are there any interfaces to database packages in Python?" msgstr "" +"Existe-t'il des modules Python pour s'interfacer avec des bases de données ?" #: ../Doc/faq/library.rst:765 msgid "Yes." @@ -827,10 +1017,13 @@ msgid "" "`DatabaseProgramming wiki page `_ for details." msgstr "" +"La gestion de la plupart des bases de données relationnelles est assurée. " +"Voir la page wiki `DatabaseProgramming `_ pour plus de détails." #: ../Doc/faq/library.rst:779 msgid "How do you implement persistent objects in Python?" -msgstr "" +msgstr "Comment implémenter la persistance d'objets en Python ?" #: ../Doc/faq/library.rst:781 msgid "" @@ -919,54 +1112,65 @@ msgstr "" #: ../Doc/faq/library.rst:842 msgid "Mathematics and Numerics" -msgstr "" +msgstr "Mathématiques et calcul numérique" #: ../Doc/faq/library.rst:845 msgid "How do I generate random numbers in Python?" -msgstr "" +msgstr "Comment générer des nombres aléatoires en Python ?" #: ../Doc/faq/library.rst:847 msgid "" "The standard module :mod:`random` implements a random number generator. " "Usage is simple::" msgstr "" +"Le module :mod:`random` de la bibliothèque standard comprend un générateur " +"de nombres aléatoires. Son utilisation est simple ::" #: ../Doc/faq/library.rst:853 msgid "This returns a random floating point number in the range [0, 1)." msgstr "" +"Le code précédent renvoie un nombre à virgule flottante aléatoire dans " +"l'intervalle [0, 1[." #: ../Doc/faq/library.rst:855 msgid "" "There are also many other specialized generators in this module, such as:" -msgstr "" +msgstr "Ce module fournit beaucoup d'autres générateurs spécialisés comme :" #: ../Doc/faq/library.rst:857 msgid "``randrange(a, b)`` chooses an integer in the range [a, b)." -msgstr "" +msgstr "``randrange(a, b)`` génère un entier dans l'intervalle [a, b[." #: ../Doc/faq/library.rst:858 msgid "``uniform(a, b)`` chooses a floating point number in the range [a, b)." msgstr "" +"``uniform(a, b)`` génère un nombre à virgule flottante aléatoire dans " +"l'intervalle [a, b[." #: ../Doc/faq/library.rst:859 msgid "" "``normalvariate(mean, sdev)`` samples the normal (Gaussian) distribution." -msgstr "" +msgstr "``normalvariate(mean, sdev)`` simule la loi normale (Gaussienne)." #: ../Doc/faq/library.rst:861 msgid "Some higher-level functions operate on sequences directly, such as:" msgstr "" +"Des fonctions de haut niveau opèrent directement sur des séquences comme :" #: ../Doc/faq/library.rst:863 msgid "``choice(S)`` chooses random element from a given sequence" -msgstr "" +msgstr "``choice(S)`` sélectionne au hasard un élément d'une séquence donnée" #: ../Doc/faq/library.rst:864 msgid "``shuffle(L)`` shuffles a list in-place, i.e. permutes it randomly" msgstr "" +"``shuffle(L)`` mélange une liste en-place, c-à-d lui applique une " +"permutation aléatoire" #: ../Doc/faq/library.rst:866 msgid "" "There's also a ``Random`` class you can instantiate to create independent " "multiple random number generators." msgstr "" +"Il existe aussi une classe ``Random`` qu'il est possible d'instancier pour " +"créer des générateurs aléatoires indépendants." diff --git a/faq/programming.po b/faq/programming.po index d09ba75a..56dd5d39 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -18,17 +18,19 @@ msgstr "" #: ../Doc/faq/programming.rst:5 msgid "Programming FAQ" -msgstr "" +msgstr "FAQ de programmation" #: ../Doc/faq/programming.rst:12 msgid "General Questions" -msgstr "" +msgstr "Questions générales" #: ../Doc/faq/programming.rst:15 msgid "" "Is there a source code level debugger with breakpoints, single-stepping, " "etc.?" msgstr "" +"Existe-t'il un débogueur de code source avec points d'arrêts, exécution pas-" +"à-pas, etc. ?" #: ../Doc/faq/programming.rst:17 ../Doc/faq/programming.rst:60 msgid "Yes." @@ -41,6 +43,10 @@ msgid "" "Library Reference Manual `. You can also write your own debugger by " "using the code for pdb as an example." msgstr "" +"Le module pdb est un débogueur console simple, mais parfaitement adapté à " +"Python. Il fait partie de la bibliothèque standard de Python, sa " +"documentation se trouve dans le :mod:`manuel de référence `. Vous " +"pouvez vous inspirer du code de pdb pour écrire votre propre débogueur." #: ../Doc/faq/programming.rst:24 msgid "" @@ -48,6 +54,9 @@ msgid "" "Python distribution (normally available as Tools/scripts/idle), includes a " "graphical debugger." msgstr "" +"L'environnement de développement interactif IDLE, qui est fourni avec la " +"distribution standard de Python (normalement disponible dans Tools/scripts/" +"idle) contient un débogueur graphique." #: ../Doc/faq/programming.rst:28 msgid "" @@ -58,6 +67,13 @@ msgid "" ">`__ project and as a part of the ActivePython distribution (see https://www." "activestate.com/activepython\\ )." msgstr "" +"PythonWin est un environnement de développement intégré (EDI) Python qui " +"embarque un débogueur graphique basé sur pdb. Le débogueur PythonWin colore " +"les points d'arrêts et possède quelques fonctionnalités sympathiques, comme " +"la possibilité de déboguer des programmes développés sans PythonWin. " +"PythonWin est disponible dans le projet `Extensions Python pour Windows " +"`__ et fait partie de la " +"distribution ActivePython (voir https://www.activestate.com/activepython\\ )." #: ../Doc/faq/programming.rst:35 msgid "" @@ -67,12 +83,21 @@ msgid "" "browsers, inheritance hierarchies, doc string generated html documentation, " "an advanced debugger, integrated help, and Zope support." msgstr "" +"`Boa Constructor `_ est un EDI et " +"un constructeur d'interface homme-machine basé sur wxWidgets. Il propose la " +"création et la manipulation de fenêtres, un inspecteur d'objets, de " +"nombreuses façons de visualiser des sources comme un navigateur d'objets, " +"les hiérarchies d'héritage, la documentation html générée par les " +"docstrings, un débogueur avancé, une aide intégrée et la prise en charge de " +"Zope." #: ../Doc/faq/programming.rst:41 msgid "" "`Eric `_ is an IDE built on PyQt and " "the Scintilla editing component." msgstr "" +"`Eric `_ est un EDI basé sur PyQt et " +"l'outil d'édition Scintilla." #: ../Doc/faq/programming.rst:44 msgid "" @@ -81,28 +106,36 @@ msgid "" "can be found at http://bashdb.sourceforge.net/pydb/ and DDD can be found at " "https://www.gnu.org/software/ddd." msgstr "" +"Pydb est une version du débogueur standard Python pdb, modifié pour être " +"utilisé avec DDD (Data Display Debugger), un célèbre débogueur graphique. " +"Pydb est disponible sur http://bashdb.sourceforge.net/pydb/ et DDD est " +"disponible sur https://www.gnu.org/software/ddd." #: ../Doc/faq/programming.rst:49 msgid "" "There are a number of commercial Python IDEs that include graphical " "debuggers. They include:" msgstr "" +"Il existe de nombreux EDI Python propriétaires qui embarquent un débogueur " +"graphique. Notamment :" #: ../Doc/faq/programming.rst:52 msgid "Wing IDE (https://wingware.com/)" -msgstr "" +msgstr "Wing IDE (https://wingware.com/)" #: ../Doc/faq/programming.rst:53 msgid "Komodo IDE (https://komodoide.com/)" -msgstr "" +msgstr "Komodo IDE (https://komodoide.com/)" #: ../Doc/faq/programming.rst:54 msgid "PyCharm (https://www.jetbrains.com/pycharm/)" -msgstr "" +msgstr "PyCharm (https://www.jetbrains.com/pycharm/)" #: ../Doc/faq/programming.rst:58 msgid "Is there a tool to help find bugs or perform static analysis?" msgstr "" +"Existe-t'il des outils pour aider à trouver des bogues ou faire de l'analyse " +"statique de code ?" #: ../Doc/faq/programming.rst:62 msgid "" @@ -110,6 +143,10 @@ msgid "" "and warns about code complexity and style. You can get PyChecker from " "http://pychecker.sourceforge.net/." msgstr "" +"PyChecker est un outil d'analyse statique qui trouve les bogues dans le code " +"source Python et émet des avertissements relatifs à la complexité et au " +"style du code. PyChecker est disponible sur http://pychecker.sourceforge." +"net/." #: ../Doc/faq/programming.rst:66 msgid "" @@ -121,10 +158,18 @@ msgid "" "standard, whether declared interfaces are fully implemented, and more. " "https://docs.pylint.org/ provides a full list of Pylint's features." msgstr "" +"Pylint `_ est un autre outil qui vérifie si un " +"module satisfait aux normes de développement, et qui permet en plus d'écrire " +"des greffons pour ajouter des fonctionnalités personnalisées. En plus de la " +"vérification des bogues effectuée par PyChecker, Pylint effectue quelques " +"vérifications supplémentaires comme la longueur des lignes, les conventions " +"de nommage des variables, que les interfaces déclarées sont implémentées en " +"totalité, et plus encore. https://docs.pylint.org/ fournit la liste complète " +"des fonctionnalités de Pylint." #: ../Doc/faq/programming.rst:76 msgid "How can I create a stand-alone binary from a Python script?" -msgstr "" +msgstr "Comment créer un binaire autonome à partir d'un script Python ?" #: ../Doc/faq/programming.rst:78 msgid "" @@ -134,6 +179,12 @@ msgid "" "determine the set of modules required by a program and bind these modules " "together with a Python binary to produce a single executable." msgstr "" +"Pour créer un programme autonome, c'est-à-dire un programme que n'importe " +"qui peut télécharger et exécuter sans avoir à installer une distribution " +"Python au préalable, il n'est pas nécessaire de compiler du code Python en " +"code C. Il existe en effet plusieurs outils qui déterminent les modules " +"requis par un programme et lient ces modules avec un binaire Python pour " +"produire un seul exécutable." #: ../Doc/faq/programming.rst:84 msgid "" @@ -142,6 +193,11 @@ msgid "" "you can embed all your modules into a new program, which is then linked with " "the standard Python modules." msgstr "" +"Un de ces outils est freeze, qui se trouve dans ``Tools/freeze`` de " +"l'arborescence des sources de Python. Il convertit le code intermédiaire " +"(*bytecode*) Python en tableaux C ; un compilateur C permet d'intégrer tous " +"vos modules dans un nouveau programme, qui est ensuite lié aux modules " +"standards Python." #: ../Doc/faq/programming.rst:89 msgid "" @@ -155,16 +211,29 @@ msgid "" "rest of the Python interpreter to form a self-contained binary which acts " "exactly like your script." msgstr "" +"Il fonctionne en cherchant de manière récursive les instructions d'import " +"(sous les deux formes) dans le code source et en recherchant ces modules " +"dans le chemin Python standard ainsi que dans le répertoire source (pour les " +"modules natifs). Il transforme ensuite le code intermédiaire des modules " +"écrits en Python en code C (des tableaux pré-remplis qui peuvent être " +"transformés en objets code à l'aide du module *marshal*) et crée un fichier " +"de configuration personnalisé qui contient uniquement les modules natifs qui " +"sont réellement utilisés dans le programme. Il compile ensuite le code C " +"généré et le lie au reste de l'interpréteur Python pour former un binaire " +"autonome qui fait exactement la même chose que le script." #: ../Doc/faq/programming.rst:98 msgid "" "Obviously, freeze requires a C compiler. There are several other utilities " "which don't. One is Thomas Heller's py2exe (Windows only) at" msgstr "" +"Bien évidemment, freeze nécessite un compilateur C. Il existe d'autres " +"outils qui peuvent s'en passer. Un de ceux-ci est py2exe de Thomas Heller " +"(pour Windows uniquement) disponible sur" #: ../Doc/faq/programming.rst:101 msgid "http://www.py2exe.org/" -msgstr "" +msgstr "http://www.py2exe.org/" #: ../Doc/faq/programming.rst:103 msgid "" @@ -175,16 +244,20 @@ msgstr "" #: ../Doc/faq/programming.rst:107 msgid "Are there coding standards or a style guide for Python programs?" msgstr "" +"Existe-t'il des normes de développement ou un guide de style pour écrire des " +"programmes Python ?" #: ../Doc/faq/programming.rst:109 msgid "" "Yes. The coding style required for standard library modules is documented " "as :pep:`8`." msgstr "" +"Oui. Le style de développement que les modules de la bibliothèque standard " +"doivent obligatoirement respecter est documenté dans la :pep:`8`." #: ../Doc/faq/programming.rst:114 msgid "My program is too slow. How do I speed it up?" -msgstr "" +msgstr "Mon programme est trop lent. Comment l'accélérer ?" #: ../Doc/faq/programming.rst:116 msgid "" @@ -373,11 +446,12 @@ msgstr "" #: ../Doc/faq/programming.rst:275 msgid "Core Language" -msgstr "" +msgstr "Fondamentaux" #: ../Doc/faq/programming.rst:278 msgid "Why am I getting an UnboundLocalError when the variable has a value?" msgstr "" +"Pourquoi une UnboundLocalError est levée alors qu'une variable a une valeur ?" #: ../Doc/faq/programming.rst:280 msgid "" @@ -385,18 +459,21 @@ msgid "" "when it is modified by adding an assignment statement somewhere in the body " "of a function." msgstr "" +"Il est parfois surprenant d'obtenir une UnboundLocalError dans du code " +"jusqu'à présent correct, quand celui-ci est modifié en ajoutant une " +"instruction d'affectation quelque part dans le corps d'une fonction." #: ../Doc/faq/programming.rst:284 msgid "This code:" -msgstr "" +msgstr "Le code suivant :" #: ../Doc/faq/programming.rst:292 msgid "works, but this code:" -msgstr "" +msgstr "fonctionne, mais le suivant :" #: ../Doc/faq/programming.rst:299 msgid "results in an UnboundLocalError:" -msgstr "" +msgstr "lève une UnboundLocalError :" #: ../Doc/faq/programming.rst:306 msgid "" @@ -413,6 +490,8 @@ msgid "" "In the example above you can access the outer scope variable by declaring it " "global:" msgstr "" +"Dans l'exemple ci-dessus, la variable du contexte appelant reste accessible " +"en la déclarant globale :" #: ../Doc/faq/programming.rst:324 msgid "" @@ -420,10 +499,15 @@ msgid "" "the superficially analogous situation with class and instance variables) you " "are actually modifying the value of the variable in the outer scope:" msgstr "" +"Cette déclaration explicite est obligatoire pour se rappeler que " +"(contrairement au cas à peu près similaire avec des variables de classe et " +"d'instance), c'est la valeur de la variable du contexte appelant qui est " +"modifiée :" #: ../Doc/faq/programming.rst:333 msgid "What are the rules for local and global variables in Python?" msgstr "" +"Quelles sont les règles pour les variables locales et globales en Python ?" #: ../Doc/faq/programming.rst:335 msgid "" @@ -432,6 +516,10 @@ msgid "" "function's body, it's assumed to be a local unless explicitly declared as " "global." msgstr "" +"En Python, si une variable n'est pas modifiée dans une fonction mais " +"seulement lue, elle est implicitement considérée comme globale. Si une " +"valeur lui est affectée, elle est considérée locale (sauf si elle est " +"explicitement déclarée globale)." #: ../Doc/faq/programming.rst:339 msgid "" @@ -443,18 +531,30 @@ msgid "" "a component of an imported module. This clutter would defeat the usefulness " "of the ``global`` declaration for identifying side-effects." msgstr "" +"Bien que surprenant au premier abord, ce choix s'explique facilement. D'une " +"part, exiger :keyword:`global` pour des variables affectées est une " +"protection contre des effets de bord inattendus. D'autre part, si ``global`` " +"était obligatoire pour toutes les références à des objets globaux, il " +"faudrait mettre ``global`` partout, car il faudrait dans ce cas déclarer " +"globale chaque référence à une fonction native ou à un composant d'un module " +"importé. Le codé serait alors truffé de déclarations ``global``, ce qui " +"nuirait à leur raison d'être : identifier les effets de bords." #: ../Doc/faq/programming.rst:349 msgid "" "Why do lambdas defined in a loop with different values all return the same " "result?" msgstr "" +"Pourquoi des expressions lambda définies dans une boucle avec des valeurs " +"différentes retournent-elles le même résultat ?" #: ../Doc/faq/programming.rst:351 msgid "" "Assume you use a for loop to define a few different lambdas (or even plain " "functions), e.g.::" msgstr "" +"Supposons que l'on utilise une boucle itérative pour définir des expressions " +"lambda (voire même des fonctions) différentes, par exemple ::" #: ../Doc/faq/programming.rst:358 msgid "" @@ -463,6 +563,9 @@ msgid "" "``1``, ``4``, ``9``, and ``16``. However, when you actually try you will " "see that they all return ``16``::" msgstr "" +"Le code précédent crée une liste de 5 expressions lambda qui calculent " +"chacune ``x**2``. En les exécutant, on pourrait s'attendre à obtenir ``0``, " +"``1``, ``4``, ``9`` et ``16``. Elles renvoient en réalité toutes ``16`` :" #: ../Doc/faq/programming.rst:368 msgid "" @@ -472,12 +575,21 @@ msgid "" "the functions now return ``4**2``, i.e. ``16``. You can also verify this by " "changing the value of ``x`` and see how the results of the lambdas change::" msgstr "" +"Ceci s'explique par le fait que ``x`` n'est pas une variable locale aux " +"expressions, mais est définie dans le contexte appelant. Elle est lue à " +"l'appel de l'expression lambda – et non au moment où cette expression est " +"définie. À la fin de la boucle, ``x`` vaut ``4``, donc toutes les fonctions " +"renvoient ``4*2``, i.e. ``16``. Ceci se vérifie également en changeant la " +"valeur de ``x`` et en constatant que les résultats sont modifiés :" #: ../Doc/faq/programming.rst:378 msgid "" "In order to avoid this, you need to save the values in variables local to " "the lambdas, so that they don't rely on the value of the global ``x``::" msgstr "" +"Pour éviter ce phénomène, les valeurs doivent être stockées dans des " +"variables locales aux expressions lambda pour que celles-ci ne se basent " +"plus sur la variable globale ``x`` :" #: ../Doc/faq/programming.rst:385 msgid "" @@ -487,16 +599,24 @@ msgid "" "the first lambda, ``1`` in the second, ``2`` in the third, and so on. " "Therefore each lambda will now return the correct result::" msgstr "" +"Dans ce code, ``n=x`` crée une nouvelle variable ``n``, locale à " +"l'expression. Cette variable est évaluée quand l'expression est définie donc " +"``n`` a la même valeur que ``x`` à ce moment. La valeur de ``n`` est donc " +"``0`` dans la première lambda, ``1`` dans la deuxième, ``2`` dans la " +"troisième et ainsi de suite. Chaque expression lambda renvoie donc le " +"résultat correct :" #: ../Doc/faq/programming.rst:396 msgid "" "Note that this behaviour is not peculiar to lambdas, but applies to regular " "functions too." msgstr "" +"Ce comportement n'est pas propre aux expressions lambda, mais s'applique " +"aussi aux fonctions normales." #: ../Doc/faq/programming.rst:401 msgid "How do I share global variables across modules?" -msgstr "" +msgstr "Comment partager des variables globales entre modules ?" #: ../Doc/faq/programming.rst:403 msgid "" @@ -507,28 +627,37 @@ msgid "" "each module, any changes made to the module object get reflected " "everywhere. For example:" msgstr "" +"La manière standard de partager des informations entre modules d'un même " +"programme est de créer un module spécial (souvent appelé *config* ou *cfg*) " +"et de l'importer dans tous les modules de l'application ; le module devient " +"accessible depuis l'espace de nommage global. Vu qu'il n'y a qu'une instance " +"de chaque module, tout changement dans l'instance est propagé partout. Par " +"exemple :" #: ../Doc/faq/programming.rst:409 msgid "config.py::" -msgstr "" +msgstr "*config.py* ::" #: ../Doc/faq/programming.rst:413 msgid "mod.py::" -msgstr "" +msgstr "*mod.py* ::" #: ../Doc/faq/programming.rst:418 msgid "main.py::" -msgstr "" +msgstr "*main.py* ::" #: ../Doc/faq/programming.rst:424 msgid "" "Note that using a module is also the basis for implementing the Singleton " "design pattern, for the same reason." msgstr "" +"Pour les mêmes raisons, l'utilisation d'un module est aussi à la base de " +"l'implémentation du patron de conception singleton." #: ../Doc/faq/programming.rst:429 msgid "What are the \"best practices\" for using import in a module?" msgstr "" +"Quelles sont les « bonnes pratiques » pour utiliser import dans un module ?" #: ../Doc/faq/programming.rst:431 msgid "" @@ -536,6 +665,9 @@ msgid "" "importer's namespace, and makes it much harder for linters to detect " "undefined names." msgstr "" +"De manière générale, il ne faut pas faire ``from modulename import *``. Ceci " +"encombre l'espace de nommage de l'importateur et rend la détection de noms " +"non-définis beaucoup plus ardue pour les analyseurs de code." #: ../Doc/faq/programming.rst:435 msgid "" @@ -544,24 +676,33 @@ msgid "" "is in scope. Using one import per line makes it easy to add and delete " "module imports, but using multiple imports per line uses less screen space." msgstr "" +"Les modules doivent être importés au début d'un fichier. Ceci permet " +"d'afficher clairement de quels modules le code à besoin et évite de se " +"demander si le module est dans le contexte. Faire un seul `import` par ligne " +"rend l'ajout et la suppression d'une importation de module plus aisé, mais " +"importer plusieurs modules sur une même ligne prend moins d'espace." #: ../Doc/faq/programming.rst:440 msgid "It's good practice if you import modules in the following order:" -msgstr "" +msgstr "Il est recommandé d'importer les modules dans l'ordre suivant :" #: ../Doc/faq/programming.rst:442 msgid "standard library modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``" msgstr "" +"les modules de la bibliothèque standard — e.g. ``sys``, ``os``, ``getopt``, " +"``re``" #: ../Doc/faq/programming.rst:443 msgid "" "third-party library modules (anything installed in Python's site-packages " "directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc." msgstr "" +"les modules externes (tout ce qui est installé dans le dossier *site-" +"packages* de Python) — e.g. *mx.DateTime, ZODB, PIL.Image*, etc." #: ../Doc/faq/programming.rst:445 msgid "locally-developed modules" -msgstr "" +msgstr "les modules développés en local" #: ../Doc/faq/programming.rst:447 msgid "" @@ -576,6 +717,9 @@ msgid "" "It is sometimes necessary to move imports to a function or class to avoid " "problems with circular imports. Gordon McMillan says:" msgstr "" +"Il est parfois nécessaire de déplacer des importations dans une fonction ou " +"une classe pour éviter les problèmes d'importations circulaires. Comme le " +"souligne Gordon McMillan :" #: ../Doc/faq/programming.rst:455 msgid "" @@ -585,6 +729,12 @@ msgid "" "That's because names in the 1st are not yet available, because the first " "module is busy importing the 2nd." msgstr "" +"Il n'y a aucun souci à faire des importations circulaires tant que les deux " +"modules utilisent la forme \"import \" . Ça ne pose problème que si " +"le second module cherche à récupérer un nom du premier module (*\"from " +"module import name\"*) et que l'importation est dans l'espace de nommage du " +"fichier. Les noms du premier module ne sont en effet pas encore disponibles " +"car le premier module est occupé à importer le second." #: ../Doc/faq/programming.rst:461 msgid "" @@ -593,6 +743,10 @@ msgid "" "called, the first module will have finished initializing, and the second " "module can do its import." msgstr "" +"Dans ce cas, si le second module n'est utilisé que dans une fonction, " +"l'importation peut facilement être déplacée dans cette fonction. Au moment " +"où l'importation sera appelée, le premier module aura fini de s'initialiser " +"et le second pourra faire son importation." #: ../Doc/faq/programming.rst:466 msgid "" @@ -602,6 +756,12 @@ msgid "" "importing the correct modules in the corresponding platform-specific code is " "a good option." msgstr "" +"Il peut parfois être nécessaire de déplacer des importations de modules hors " +"de l'espace de plus haut niveau du code si certains de ces modules dépendent " +"de la machine utilisée. Dans ce cas de figure, il est parfois impossible " +"d'importer tous les modules au début du fichier. Dans ce cas, il est " +"recommandé d'importer les modules adéquats dans le code spécifique à la " +"machine." #: ../Doc/faq/programming.rst:471 msgid "" @@ -616,16 +776,30 @@ msgid "" "only a couple of dictionary lookups. Even if the module name has gone out " "of scope, the module is probably available in :data:`sys.modules`." msgstr "" +"Les imports ne devraient être déplacés dans un espace local, comme dans la " +"définition d'une fonction, que si cela est nécessaire pour résoudre un " +"problème comme éviter des dépendances circulaires ou réduire le temps " +"d'initialisation d'un module. Cette technique est particulièrement utile si " +"la majorité des imports est superflue selon le flux d'exécution du " +"programme. Il est également pertinent de déplacer des importations dans une " +"fonction si le module n'est utilisé qu'au sein de cette fonction. Le premier " +"chargement d'un module peut être coûteux à cause du coût fixe " +"d'initialisation d'un module, mais charger un module plusieurs fois est " +"quasiment gratuit, cela ne coûte que quelques indirections dans un " +"dictionnaire. Même si le nom du module est sorti du contexte courant, le " +"module est probablement disponible dans :data:`sys.modules`." #: ../Doc/faq/programming.rst:484 msgid "Why are default values shared between objects?" -msgstr "" +msgstr "Pourquoi les arguments par défaut sont-ils partagés entre les objets ?" #: ../Doc/faq/programming.rst:486 msgid "" "This type of bug commonly bites neophyte programmers. Consider this " "function::" msgstr "" +"C'est un problème que rencontrent souvent les programmeurs débutants. " +"Examinons la fonction suivante ::" #: ../Doc/faq/programming.rst:493 msgid "" @@ -633,6 +807,9 @@ msgid "" "The second time, ``mydict`` contains two items because when ``foo()`` begins " "executing, ``mydict`` starts out with an item already in it." msgstr "" +"Au premier appel de cette fonction, ``mydict`` ne contient qu'un seul " +"élément. Au second appel, ``mydict`` contient deux éléments car quand " +"``foo()`` commence son exécution, ``mydict`` contient déjà un élément." #: ../Doc/faq/programming.rst:497 msgid "" @@ -642,6 +819,11 @@ msgid "" "dictionary in this example, subsequent calls to the function will refer to " "this changed object." msgstr "" +"On est souvent amené à croire qu'un appel de fonction créé des nouveau " +"objets pour les valeurs par défaut. Ce n'est pas le cas. Les valeurs par " +"défaut ne sont créées qu'une et une seule fois, au moment où la fonction est " +"définie. Si l'objet est modifié, comme le dictionnaire dans cet exemple, les " +"appels suivants à cette fonction font référence à l'objet ainsi modifié." #: ../Doc/faq/programming.rst:502 msgid "" @@ -649,6 +831,10 @@ msgid "" "``None``, are safe from change. Changes to mutable objects such as " "dictionaries, lists, and class instances can lead to confusion." msgstr "" +"Par définition, les objets immuables comme les nombres, les chaînes de " +"caractères, les n-uplets et ``None`` ne sont pas modifiés. Les changements " +"sur des objets muables comme les dictionnaires, les listes et les instances " +"de classe peuvent porter à confusion." #: ../Doc/faq/programming.rst:506 msgid "" @@ -657,10 +843,15 @@ msgid "" "inside the function, check if the parameter is ``None`` and create a new " "list/dictionary/whatever if it is. For example, don't write::" msgstr "" +"En raison de cette fonctionnalité, il vaut mieux ne pas utiliser d'objets " +"muables comme valeurs par défaut. Il vaut mieux utiliser ``None`` comme " +"valeur par défaut et, à l'intérieur de la fonction, vérifier si le paramètre " +"est à ``None`` et créer une nouvelle liste, dictionnaire ou autre, le cas " +"échéant. Par exemple, il ne faut pas écrire ::" #: ../Doc/faq/programming.rst:514 msgid "but::" -msgstr "" +msgstr "mais plutôt ::" #: ../Doc/faq/programming.rst:520 msgid "" @@ -670,17 +861,25 @@ msgid "" "value is requested again. This is called \"memoizing\", and can be " "implemented like this::" msgstr "" +"Cette fonctionnalité a une utilité. Il est courant de mettre en cache les " +"paramètres et la valeur de retour de chacun des appels d'une fonction " +"coûteuse à exécuter, et de renvoyer la valeur stockée en cache si le même " +"appel est ré-effectué. C'est la technique dite de « mémoïsation », qui " +"s'implémente de la manière suivante ::" #: ../Doc/faq/programming.rst:535 msgid "" "You could use a global variable containing a dictionary instead of the " "default value; it's a matter of taste." msgstr "" +"Il est possible d'utiliser une variable globale contenant un dictionnaire à " +"la place de la valeur par défaut ; ce n'est qu'une question de goût." #: ../Doc/faq/programming.rst:540 msgid "" "How can I pass optional or keyword parameters from one function to another?" msgstr "" +"Comment passer des paramètres optionnels ou nommés d'une fonction à l'autre ?" #: ../Doc/faq/programming.rst:542 msgid "" @@ -689,6 +888,11 @@ msgid "" "tuple and the keyword arguments as a dictionary. You can then pass these " "arguments when calling another function by using ``*`` and ``**``::" msgstr "" +"Il faut récupérer les arguments en utilisant les sélecteurs ``*`` et ``**`` " +"dans la liste des paramètres de la fonction ; ceci donne les arguments " +"positionnels sous la forme d'un n-uplet et les arguments nommés sous forme " +"de dictionnaire. Ces arguments peuvent être passés à une autre fonction en " +"utilisant ``*`` et ``**`` ::" #: ../Doc/faq/programming.rst:553 msgid "" @@ -698,7 +902,7 @@ msgstr "" #: ../Doc/faq/programming.rst:570 msgid "What is the difference between arguments and parameters?" -msgstr "" +msgstr "Quelle est la différence entre les arguments et les paramètres ?" #: ../Doc/faq/programming.rst:572 msgid "" @@ -708,20 +912,27 @@ msgid "" "of arguments a function can accept. For example, given the function " "definition::" msgstr "" +"Les :term:`paramètres ` sont les noms qui apparaissent dans une " +"définition de fonction, alors que les :term:`arguments ` sont les " +"valeurs qui sont réellement passées à une fonction lors de l'appel de celle-" +"ci. Les paramètres définissent les types des arguments qu'une fonction " +"accepte. Ainsi, avec la définition de fonction suivante ::" #: ../Doc/faq/programming.rst:580 msgid "" "*foo*, *bar* and *kwargs* are parameters of ``func``. However, when calling " "``func``, for example::" msgstr "" +"*foo*, *bar* et *kwargs* sont des paramètres de ``func``. Mais à l'appel de " +"``func`` avec, par exemple ::" #: ../Doc/faq/programming.rst:585 msgid "the values ``42``, ``314``, and ``somevar`` are arguments." -msgstr "" +msgstr "les valeurs ``42``, ``314``, et ``somevar`` sont des arguments." #: ../Doc/faq/programming.rst:589 msgid "Why did changing list 'y' also change list 'x'?" -msgstr "" +msgstr "Pourquoi modifier la liste 'y' modifie aussi la liste 'x' ?" #: ../Doc/faq/programming.rst:591 msgid "If you wrote code like::" @@ -731,10 +942,12 @@ msgstr "Si vous avez écrit du code comme : ::" msgid "" "you might be wondering why appending an element to ``y`` changed ``x`` too." msgstr "" +"vous vous demandez peut-être pourquoi l'ajout d'un élément à ``y`` a aussi " +"changé ``x``." #: ../Doc/faq/programming.rst:603 msgid "There are two factors that produce this result:" -msgstr "" +msgstr "Il y a deux raisons qui conduisent à ce comportement :" #: ../Doc/faq/programming.rst:605 msgid "" @@ -743,11 +956,17 @@ msgid "" "the same object ``x`` refers to. This means that there is only one object " "(the list), and both ``x`` and ``y`` refer to it." msgstr "" +"Les variables ne sont que des noms qui font référence à des objets. La ligne " +"``y = x`` ne crée pas une copie de la liste — elle crée une nouvelle " +"variable ``y`` qui pointe sur le même objet que ``x``. Ceci signifie qu'il " +"n'existe qu'un seul objet (la liste) auquel ``x`` et ``y`` font référence." #: ../Doc/faq/programming.rst:609 msgid "" "Lists are :term:`mutable`, which means that you can change their content." msgstr "" +"Les listes sont des :term:`muable`, ce qui signifie que leur contenu peut " +"être modifié." #: ../Doc/faq/programming.rst:611 msgid "" @@ -755,10 +974,14 @@ msgid "" "has changed from ``[]`` to ``[10]``. Since both the variables refer to the " "same object, using either name accesses the modified value ``[10]``." msgstr "" +"Après l'appel de :meth:`~list.append`, le contenu de l'objet muable est " +"passé de ``[]`` à ``[10]``. Vu que les deux variables font référence au même " +"objet, il est possible d'accéder à la valeur modifiée ``[10]`` avec chacun " +"des noms." #: ../Doc/faq/programming.rst:615 msgid "If we instead assign an immutable object to ``x``::" -msgstr "" +msgstr "Si au contraire, on affecte un objet immuable à ``x`` ::" #: ../Doc/faq/programming.rst:625 msgid "" @@ -770,6 +993,14 @@ msgid "" "objects (the ints ``6`` and ``5``) and two variables that refer to them " "(``x`` now refers to ``6`` but ``y`` still refers to ``5``)." msgstr "" +"on observe que ``x`` et ``y`` ne sont ici plus égales. Les entiers sont des " +"immuables (:term:`immutable`), et ``x = x + 1`` ne change pas l'entier ``5`` " +"en incrémentant sa valeur. Au contraire, un nouvel objet est créé (l'entier " +"``6``) et affecté à ``x`` (c'est à dire qu'on change l'objet auquel fait " +"référence ``x``). Après cette affectation on a deux objets (les entiers " +"``6`` et ``5``) et deux variables qui font référence à ces deux objets " +"(``x`` fait désormais référence à ``6`` mais ``y`` fait toujours référence à " +"``5``)." #: ../Doc/faq/programming.rst:633 msgid "" @@ -782,6 +1013,14 @@ msgid "" "copy of ``y``, you'll instead end up with ``None``, which will likely cause " "your program to generate an easily diagnosed error." msgstr "" +"Certaines opérations (par exemple, ``y.append(10)`` et ``y.sort()``) " +"modifient l'objet, alors que des opérations identiques en apparence (par " +"exemple ``y = y + [10]`` et ``sorted(y)``) créent un nouvel objet. En " +"général, en Python, une méthode qui modifie un objet renvoie ``None`` (c'est " +"même systématique dans la bibliothèque standard) pour éviter la confusion " +"entre les deux opérations. Donc écrire par erreur ``y.sort()`` en pensant " +"obtenir une copie triée de ``y`` donne ``None``, ce qui conduit très souvent " +"le programme à générer une erreur facile à diagnostiquer." #: ../Doc/faq/programming.rst:642 msgid "" @@ -792,10 +1031,16 @@ msgid "" "mutates ``a_list``, whereas ``some_tuple += (1, 2, 3)`` and ``some_int += " "1`` create new objects)." msgstr "" +"Il existe cependant une classe d'opérations qui se comporte différemment " +"selon le type : les opérateurs d'affectation incrémentaux. Par exemple, ``" +"+=`` modifie les listes mais pas les n-uplets ni les entiers (``a_list += " +"[1, 2, 3]`` équivaut à ``a_list.extend([1, 2, 3])`` et modifie ``a_list``, " +"alors que ``some_tuple += (1, 2, 3)`` et ``some_int += 1`` créent de " +"nouveaux objets)." #: ../Doc/faq/programming.rst:649 msgid "In other words:" -msgstr "" +msgstr "En d'autres termes :" #: ../Doc/faq/programming.rst:651 msgid "" @@ -803,6 +1048,9 @@ msgid "" "etc.), we can use some specific operations to mutate it and all the " "variables that refer to it will see the change." msgstr "" +"Il est possible d'appliquer des opérations qui modifient un objet muable (:" +"class:`list`, :class:`dict`, :class:`set`, etc.) et toutes les variables qui " +"y font référence verront le changement." #: ../Doc/faq/programming.rst:654 msgid "" @@ -811,16 +1059,24 @@ msgid "" "but operations that transform that value into a new value always return a " "new object." msgstr "" +"Toutes les variables qui font référence à un objet immuable (:class:`str`, :" +"class:`int`, :class:`tuple`, etc.) renvoient la même valeur, mais les " +"opérations qui transforment cette valeur en une nouvelle valeur renvoient " +"toujours un nouvel objet." #: ../Doc/faq/programming.rst:659 msgid "" "If you want to know if two variables refer to the same object or not, you " "can use the :keyword:`is` operator, or the built-in function :func:`id`." msgstr "" +"L'opérateur :keyword:`is` ou la fonction native :func:`id` permettent de " +"savoir si deux variables font référence au même objet." #: ../Doc/faq/programming.rst:664 msgid "How do I write a function with output parameters (call by reference)?" msgstr "" +"Comment écrire une fonction qui modifie ses paramètres ? (passage par " +"référence)" #: ../Doc/faq/programming.rst:666 msgid "" @@ -829,14 +1085,19 @@ msgid "" "argument name in the caller and callee, and so no call-by-reference per se. " "You can achieve the desired effect in a number of ways." msgstr "" +"En Python, les arguments sont passés comme des affectations de variables. Vu " +"qu'une affectation crée des références à des objets, il n'y pas de lien " +"entre un argument dans l'appel de la fonction et sa définition, et donc pas " +"de passage par référence en soi. Il y a cependant plusieurs façon d'en " +"émuler un." #: ../Doc/faq/programming.rst:671 msgid "By returning a tuple of the results::" -msgstr "" +msgstr "En renvoyant un n-uplet de résultats ::" #: ../Doc/faq/programming.rst:682 msgid "This is almost always the clearest solution." -msgstr "" +msgstr "C'est presque toujours la meilleure solution." #: ../Doc/faq/programming.rst:684 msgid "" @@ -1544,7 +1805,7 @@ msgstr "" #: ../Doc/faq/programming.rst:1227 msgid "https://code.activestate.com/recipes/52560/" -msgstr "" +msgstr "https://code.activestate.com/recipes/52560/" #: ../Doc/faq/programming.rst:1229 msgid "" @@ -1680,6 +1941,8 @@ msgid "" "Or, you can use an extension that provides a matrix datatype; `NumPy `_ is the best known." msgstr "" +"Vous pouvez aussi utiliser une extension qui fournit un type matriciel " +"natif ; `NumPy `_ est la plus répandue." #: ../Doc/faq/programming.rst:1325 msgid "How do I apply a method to a sequence of objects?" @@ -1697,6 +1960,8 @@ msgstr "" msgid "" "Why does a_tuple[i] += ['item'] raise an exception when the addition works?" msgstr "" +"Pourquoi a_tuple[i] += ['item'] lève-t'il une exception alors que " +"l'addition fonctionne ?" #: ../Doc/faq/programming.rst:1343 msgid "" @@ -1704,6 +1969,9 @@ msgid "" "operators are *assignment* operators, and the difference between mutable and " "immutable objects in Python." msgstr "" +"Ceci est dû à la combinaison de deux facteurs : le fait que les opérateurs " +"d'affectation incrémentaux sont des opérateurs d'*affectation* et à la " +"différence entre les objets muables et immuables en Python." #: ../Doc/faq/programming.rst:1347 msgid "" @@ -1711,6 +1979,9 @@ msgid "" "applied to elements of a tuple that point to mutable objects, but we'll use " "a ``list`` and ``+=`` as our exemplar." msgstr "" +"Cette discussion est valable, en général, quand des opérateurs d'affectation " +"incrémentale sont appliqués aux élément d'un n-uplet qui pointe sur des " +"objets muables, mais on prendra ``list`` et ``+=`` comme exemple." #: ../Doc/faq/programming.rst:1351 msgid "If you wrote::" @@ -1724,28 +1995,39 @@ msgid "" "to element ``0`` of the tuple, we get an error because we can't change what " "an element of a tuple points to." msgstr "" +"La cause de l'exception est claire : ``1`` est ajouté à l'objet " +"``a_tuple[0]`` qui pointe sur (``1``), ce qui produit l'objet résultant " +"``2``, mais, lorsque l'on tente d'affecter le résultat du calcul, ``2``, à " +"l'élément ``0`` du n-uplet, on obtient une erreur car il est impossible de " +"modifier la cible sur laquelle pointe un élément d'un n-uplet." #: ../Doc/faq/programming.rst:1365 msgid "" "Under the covers, what this augmented assignment statement is doing is " "approximately this::" msgstr "" +"Sous le capot, une instruction d'affectation incrémentale fait à peu près " +"ceci :" #: ../Doc/faq/programming.rst:1374 msgid "" "It is the assignment part of the operation that produces the error, since a " "tuple is immutable." msgstr "" +"C'est la partie de l'affectation de l'opération qui génère l'erreur, vu " +"qu'un n-uplet est immuable." #: ../Doc/faq/programming.rst:1377 msgid "When you write something like::" -msgstr "" +msgstr "Quand vous écrivez un code du style :" #: ../Doc/faq/programming.rst:1385 msgid "" "The exception is a bit more surprising, and even more surprising is the fact " "that even though there was an error, the append worked::" msgstr "" +"L'exception est un peu plus surprenante et, chose encore plus étrange, " +"malgré l'erreur, l'ajout a fonctionné ::" #: ../Doc/faq/programming.rst:1391 msgid "" @@ -1756,6 +2038,13 @@ msgid "" "calling ``extend`` on the list and returning the list. That's why we say " "that for lists, ``+=`` is a \"shorthand\" for ``list.extend``::" msgstr "" +"Pour comprendre ce qui se passe, il faut savoir que, premièrement, si un " +"objet implémente la méthode magique c, celle-ci est appelée quand " +"l'affectation incrémentale ``+=`` est exécutée et sa valeur de retour est " +"utilisée dans l'instruction d'affectation ; et que, deuxièmement, pour les " +"listes, ``__iadd__`` équivaut à appeler ``extend`` sur la liste et à " +"renvoyer celle-ci. C'est pour cette raison que l'on dit que pour les listes, " +"``+=`` est un \"raccourci\" pour ``list.extend``::" #: ../Doc/faq/programming.rst:1403 msgid "This is equivalent to::" @@ -1768,10 +2057,16 @@ msgid "" "assignment is a no-op, since it is a pointer to the same object that " "``a_list`` was previously pointing to, but the assignment still happens." msgstr "" +"L'objet sur lequel pointe ``a_list`` a été modifié et le pointeur vers " +"l'objet modifié est réaffecté à ``a_list``. *In fine*, l'affectation ne " +"change rien, puisque c'est un pointeur vers le même objet que sur lequel " +"pointait ``a_list``, mais l'affectation a tout de même lieu." #: ../Doc/faq/programming.rst:1413 msgid "Thus, in our tuple example what is happening is equivalent to::" msgstr "" +"Donc, dans notre exemple avec un n-uplet, il se passe quelque chose " +"équivalent à ::" #: ../Doc/faq/programming.rst:1421 msgid "" @@ -1780,6 +2075,9 @@ msgid "" "that final assignment still results in an error, because tuples are " "immutable." msgstr "" +"L'appel à ``__iadd__`` réussit et la liste est étendue, mais bien que " +"``result`` pointe sur le même objet que ``a_tuple[0]``, l'affectation finale " +"échoue car les n-uplets ne sont pas muables." #: ../Doc/faq/programming.rst:1427 msgid "Dictionaries" @@ -2294,6 +2592,18 @@ msgid "" "run :func:`gc.collect` to force a collection, but there *are* pathological " "cases where objects will never be collected." msgstr "" +"Si la structure de données contient des références circulaires (e.g. un " +"arbre dans lequel chaque fils référence son père, et chaque père garde une " +"liste de ses fils), le compteur de références n'arrivera jamais à zéro. " +"Python exécute périodiquement un algorithme pour détecter ce genre de " +"cycles, mais il peut se passer un certain temps entre le moment où la " +"structure est référencée pour la dernière fois et l'appel du ramasse-" +"miettes, donc la méthode :meth:`__del__` peut être appelée à un moment " +"aléatoire et pas opportun. C'est gênant pour essayer reproduire un problème. " +"Pire, l'ordre dans lequel les méthodes :meth:`__del__` des objets sont " +"appelées est arbitraire. Il est possible de forcer l'appel du ramasse-" +"miettes avec la fonction :func:`gc.collect`, mais il existe certains cas où " +"les objets ne seront jamais nettoyés." #: ../Doc/faq/programming.rst:1781 msgid "" @@ -2312,6 +2622,11 @@ msgid "" "reference count. Tree data structures, for instance, should use weak " "references for their parent and sibling references (if they need them!)." msgstr "" +"Une alternative pour éviter les références cycliques consiste à utiliser le " +"module :mod:`weakref`, qui permet de faire référence à des objets sans " +"incrémenter leur compteur de références. Par exemple, les structures " +"d'arbres devraient utiliser des références faibles entre pères et fils (si " +"nécessaire !)." #: ../Doc/faq/programming.rst:1793 msgid "" @@ -2327,10 +2642,12 @@ msgid "" "Finally, if your :meth:`__del__` method raises an exception, a warning " "message is printed to :data:`sys.stderr`." msgstr "" +"Enfin, si la méthode :meth:`__del__` lève une exception, un message " +"d'avertissement s'affiche dans :data:`sys.stderr`." #: ../Doc/faq/programming.rst:1804 msgid "How do I get a list of all instances of a given class?" -msgstr "" +msgstr "Comment obtenir toutes les instances d'une classe ?" #: ../Doc/faq/programming.rst:1806 msgid "" @@ -2338,10 +2655,16 @@ msgid "" "type). You can program the class's constructor to keep track of all " "instances by keeping a list of weak references to each instance." msgstr "" +"Python ne tient pas de registre de toutes les instances d'une classe (ni de " +"n'importe quel type natif). Il est cependant possible de programmer le " +"constructeur de la classe de façon à tenir un tel registre, en maintenant " +"une liste de références faibles vers chaque instance." #: ../Doc/faq/programming.rst:1812 msgid "Why does the result of ``id()`` appear to be not unique?" msgstr "" +"Pourquoi le résultat de ``id()`` peut-il être le même pour deux objets " +"différents ?" #: ../Doc/faq/programming.rst:1814 msgid "" @@ -2351,6 +2674,11 @@ msgid "" "memory, the next freshly created object is allocated at the same position in " "memory. This is illustrated by this example:" msgstr "" +"La fonction native :func:`id` renvoie un entier dont l'unicité est garantie " +"durant toute la vie de l'objet. Vu qu'en CPython cet entier est en réalité " +"l'adresse mémoire de l'objet, il est fréquent qu'un nouvel objet soit alloué " +"à une adresse mémoire identique à celle d'un objet venant d'être supprimé. " +"Comme l'illustre le code suivant :" #: ../Doc/faq/programming.rst:1825 msgid "" @@ -2359,6 +2687,10 @@ msgid "" "objects whose id you want to examine are still alive, create another " "reference to the object:" msgstr "" +"Les deux identifiants appartiennent à des objets entiers créés juste avant " +"l'appel à ``id()`` et détruits immédiatement après. Pour s'assurer que les " +"objets dont on veut examiner les identifiants sont toujours en vie, créons " +"une nouvelle référence à l'objet :" #: ../Doc/faq/programming.rst:1838 msgid "Modules" @@ -2366,7 +2698,7 @@ msgstr "Modules" #: ../Doc/faq/programming.rst:1841 msgid "How do I create a .pyc file?" -msgstr "" +msgstr "Comment créer des fichiers ``.pyc`` ?" #: ../Doc/faq/programming.rst:1843 msgid "" @@ -2406,6 +2738,9 @@ msgid "" "The :mod:`py_compile` module can manually compile any module. One way is to " "use the ``compile()`` function in that module interactively::" msgstr "" +"Le module :mod:`py_compile` peut compiler n'importe quel module " +"manuellement. Il est ainsi possible d'appeler la fonction ``compile()`` de " +"manière interactive :" #: ../Doc/faq/programming.rst:1870 msgid "" @@ -2420,10 +2755,14 @@ msgid "" "running ``compileall.py`` and providing the path of a directory containing " "Python files to compile::" msgstr "" +"Tous les fichiers d'un ou plusieurs dossiers peuvent aussi être compilés " +"avec le module :mod:`compileall`. C'est possible depuis l'invite de commande " +"en exécutant ``compileall.py`` avec le chemin du dossier contenant les " +"fichiers Python à compiler ::" #: ../Doc/faq/programming.rst:1882 msgid "How do I find the current module name?" -msgstr "" +msgstr "Comment obtenir le nom du module actuel ?" #: ../Doc/faq/programming.rst:1884 msgid "" @@ -2433,75 +2772,87 @@ msgid "" "importing them also provide a command-line interface or a self-test, and " "only execute this code after checking ``__name__``::" msgstr "" +"Un module peut déterminer son propre nom en examinant la variable globale " +"prédéfinie ``__name__``. Si celle-ci vaut ``'__main__'``, c'est que le " +"programme est exécuté comme un script. Beaucoup de modules qui doivent " +"normalement être importés pour pouvoir être utilisés fournissent aussi une " +"interface en ligne de commande ou un test automatique. Ils n'exécutent cette " +"portion du code qu'après avoir vérifié la valeur de ``__name__``::" #: ../Doc/faq/programming.rst:1899 msgid "How can I have modules that mutually import each other?" -msgstr "" +msgstr "Comment avoir des modules qui s'importent mutuellement ?" #: ../Doc/faq/programming.rst:1901 msgid "Suppose you have the following modules:" -msgstr "" +msgstr "Considérons les modules suivants :" #: ../Doc/faq/programming.rst:1903 msgid "foo.py::" -msgstr "" +msgstr "*foo.py* ::" #: ../Doc/faq/programming.rst:1908 msgid "bar.py::" -msgstr "" +msgstr "*bar.py* ::" #: ../Doc/faq/programming.rst:1913 msgid "The problem is that the interpreter will perform the following steps:" -msgstr "" +msgstr "Le problème réside dans les étapes que l'interpréteur va réaliser :" #: ../Doc/faq/programming.rst:1915 msgid "main imports foo" -msgstr "" +msgstr "*main* importe *foo*" #: ../Doc/faq/programming.rst:1916 msgid "Empty globals for foo are created" -msgstr "" +msgstr "Les variables globales (vides) de *foo* sont créées" #: ../Doc/faq/programming.rst:1917 msgid "foo is compiled and starts executing" -msgstr "" +msgstr "*foo* est compilé et commence à s'exécuter" #: ../Doc/faq/programming.rst:1918 msgid "foo imports bar" -msgstr "" +msgstr "*foo* importe *bar*" #: ../Doc/faq/programming.rst:1919 msgid "Empty globals for bar are created" -msgstr "" +msgstr "Les variables globales (vides) de *bar* sont créées" #: ../Doc/faq/programming.rst:1920 msgid "bar is compiled and starts executing" -msgstr "" +msgstr "*bar* est compilé et commence à s'exécuter" #: ../Doc/faq/programming.rst:1921 msgid "" "bar imports foo (which is a no-op since there already is a module named foo)" msgstr "" +"*bar* importe *foo* (en réalité, rien ne passe car il y a déjà un module " +"appelé *foo*)" #: ../Doc/faq/programming.rst:1922 msgid "bar.foo_var = foo.foo_var" -msgstr "" +msgstr "bar.foo_var = foo.foo_var" #: ../Doc/faq/programming.rst:1924 msgid "" "The last step fails, because Python isn't done with interpreting ``foo`` yet " "and the global symbol dictionary for ``foo`` is still empty." msgstr "" +"La dernière étape échoue car Python n'a pas fini d'interpréter ``foo`` et le " +"dictionnaire global des symboles de ``foo`` est encore vide." #: ../Doc/faq/programming.rst:1927 msgid "" "The same thing happens when you use ``import foo``, and then try to access " "``foo.foo_var`` in global code." msgstr "" +"Le même phénomène arrive quand on utilise ``import foo``, et qu'on essaye " +"ensuite d'accéder à ``foo.foo_var`` dans le code global." #: ../Doc/faq/programming.rst:1930 msgid "There are (at least) three possible workarounds for this problem." -msgstr "" +msgstr "Il y a (au moins) trois façons de contourner ce problème." #: ../Doc/faq/programming.rst:1932 msgid "" @@ -2511,58 +2862,77 @@ msgid "" "only. This means everything from an imported module is referenced as " "``.``." msgstr "" +"Guido van Rossum déconseille d'utiliser ``from import ...`` et de " +"mettre tout le code dans des fonctions. L'initialisation des variables " +"globales et des variables de classe ne doit utiliser que des constantes ou " +"des fonctions natives. Ceci implique que tout ce qui est fourni par un " +"module soit référencé par ``.``." #: ../Doc/faq/programming.rst:1937 msgid "" "Jim Roskind suggests performing steps in the following order in each module:" msgstr "" +"Jim Roskind recommande d'effectuer les étapes suivantes dans cet ordre dans " +"chaque module :" #: ../Doc/faq/programming.rst:1939 msgid "" "exports (globals, functions, and classes that don't need imported base " "classes)" msgstr "" +"les exportations (variables globales, fonctions et les classes qui ne " +"nécessitent d'importer des classes de base)" #: ../Doc/faq/programming.rst:1941 msgid "``import`` statements" -msgstr "" +msgstr "les instructions ``import``" #: ../Doc/faq/programming.rst:1942 msgid "" "active code (including globals that are initialized from imported values)." msgstr "" +"le code (avec les variables globales qui sont initialisées à partir de " +"valeurs importées)." #: ../Doc/faq/programming.rst:1944 msgid "" "van Rossum doesn't like this approach much because the imports appear in a " "strange place, but it does work." msgstr "" +"van Rossum désapprouve cette approche car les importations se trouvent à un " +"endroit bizarre, mais cela fonctionne." #: ../Doc/faq/programming.rst:1947 msgid "" "Matthias Urlichs recommends restructuring your code so that the recursive " "import is not necessary in the first place." msgstr "" +"Matthias Urlichs conseille de restructurer le code pour éviter les " +"importations récursives." #: ../Doc/faq/programming.rst:1950 msgid "These solutions are not mutually exclusive." -msgstr "" +msgstr "Ces solutions peuvent être combinées." #: ../Doc/faq/programming.rst:1954 msgid "__import__('x.y.z') returns ; how do I get z?" -msgstr "" +msgstr "__import__('x.y.z') renvoie ; comment accéder à z ?" #: ../Doc/faq/programming.rst:1956 msgid "" "Consider using the convenience function :func:`~importlib.import_module` " "from :mod:`importlib` instead::" msgstr "" +"Utilisez plutôt la fonction :func:`~importlib.import_module` de :mod:" +"`importlib` ::" #: ../Doc/faq/programming.rst:1963 msgid "" "When I edit an imported module and reimport it, the changes don't show up. " "Why does this happen?" msgstr "" +"Quand j'édite un module et que je le réimporte, je ne vois pas les " +"changements. Pourquoi ?" #: ../Doc/faq/programming.rst:1965 msgid "" @@ -2578,6 +2948,8 @@ msgid "" "Warning: this technique is not 100% fool-proof. In particular, modules " "containing statements like ::" msgstr "" +"Attention, cette technique ne marche pas systématiquement. En particulier, " +"les modules qui contiennent des instructions comme ::" #: ../Doc/faq/programming.rst:1979 msgid "" diff --git a/faq/windows.po b/faq/windows.po index a9fb089c..ab9adb9a 100644 --- a/faq/windows.po +++ b/faq/windows.po @@ -295,16 +295,26 @@ msgid "" "``__declspec(dllexport)``. In a .pyd, linkage is defined in a list of " "available functions." msgstr "" +"Notez que le chemin de recherche pour *foo.pyd* est *PYTHONPATH*, il est " +"différent de celui qu'utilise Windows pour rechercher *foo.dll*. De plus, " +"*foo.pyd* n'a pas besoin d'être présent pour que votre programme s'exécute " +"alors que si vous avez lié votre programme avec une *dll* celle-ci est " +"requise. Bien sûr *foo.pyd* est nécessaire si vous écrivez ``import foo``. " +"Dans une *DLL* le lien est déclaré dans le code source avec " +"``__declspec(dllexport)``. Dans un *.pyd* la liaison est définie dans une " +"liste de fonctions disponibles." #: ../Doc/faq/windows.rst:193 msgid "How can I embed Python into a Windows application?" -msgstr "" +msgstr "Comment puis-je intégrer Python dans une application Windows ?" #: ../Doc/faq/windows.rst:195 msgid "" "Embedding the Python interpreter in a Windows app can be summarized as " "follows:" msgstr "" +"L'intégration de l'interpréteur Python dans une application Windows peut se " +"résumer comme suit :" #: ../Doc/faq/windows.rst:197 msgid "" @@ -323,6 +333,12 @@ msgid "" "the so-called \"import lib\" corresponding to :file:`python{NN}.dll`. It " "merely defines symbols for the linker.)" msgstr "" +"Vous pouvez créer un lien vers Python de deux manières différentes. Un lien " +"au moment du chargement signifie pointer vers :file:`python{NN}.lib`, tandis " +"qu'un lien au moment de l'exécution signifie pointer vers :file:`python{NN}." +"dll`. (Note générale : :file:`python{NN}.lib` est le soi-disant « *import " +"lib* » correspondant à :file:`python{NN}.dll`. Il définit simplement des " +"liens symboliques pour l'éditeur de liens.)" #: ../Doc/faq/windows.rst:209 msgid "" @@ -334,12 +350,22 @@ msgid "" "these pointers transparent to any C code that calls routines in Python's C " "API." msgstr "" +"La liaison en temps réel simplifie grandement les options de liaison ; tout " +"se passe au moment de l'exécution. Votre code doit charger :file:" +"`python{NN}.dll` en utilisant la routine Windows ``LoadLibraryEx()``. Le " +"code doit aussi utiliser des routines d'accès et des données dans :file:" +"`python{NN}.dll` (c'est-à-dire les API C de Python) en utilisant des " +"pointeurs obtenus par la routine Windows ``GetProcAddress()``. Les macros " +"peuvent rendre l'utilisation de ces pointeurs transparente à tout code C qui " +"appelle des routines dans l'API C de Python." #: ../Doc/faq/windows.rst:216 msgid "" "Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf." "exe first." msgstr "" +"Note Borland : convertir :file:`python{NN}.lib` au format OMF en utilisant " +"*Coff2Omf.exe* en premier." #: ../Doc/faq/windows.rst:221 msgid "" @@ -349,6 +375,12 @@ msgid "" "link *into* your .exe file (!) You do _not_ have to create a DLL file, and " "this also simplifies linking." msgstr "" +"Si vous utilisez SWIG, il est facile de créer un « module d'extension » " +"Python qui rendra les données et les méthodes de l'application disponibles " +"pour Python. SWIG s'occupera de tous les détails ennuyeux pour vous. Le " +"résultat est du code C que vous liez *dans* votre *fichier.exe* (!) Vous " +"n'avez _pas_ besoin de créer un fichier DLL, et cela simplifie également la " +"liaison." #: ../Doc/faq/windows.rst:227 msgid "" @@ -358,6 +390,12 @@ msgid "" "classes, as you should, the init function will be called initleoc(). This " "initializes a mostly hidden helper class used by the shadow class." msgstr "" +"SWIG va créer une fonction d'initialisation (fonction en C) dont le nom " +"dépend du nom du module d'extension. Par exemple, si le nom du module est " +"*leo*, la fonction *init* sera appelée *initleo()*. Si vous utilisez des " +"classes *shadow* SWIG, comme vous le devriez, la fonction *init* sera " +"appelée *initleoc()*. Ceci initialise une classe auxiliaire invisible " +"utilisée par la classe *shadow*." #: ../Doc/faq/windows.rst:233 msgid "" @@ -365,18 +403,26 @@ msgid "" "calling the initialization function is equivalent to importing the module " "into Python! (This is the second key undocumented fact.)" msgstr "" +"La raison pour laquelle vous pouvez lier le code C à l'étape 2 dans votre " +"*fichier.exe* est que l'appel de la fonction d'initialisation équivaut à " +"importer le module dans Python ! (C'est le deuxième fait clé non documenté.)" #: ../Doc/faq/windows.rst:237 msgid "" "In short, you can use the following code to initialize the Python " "interpreter with your extension module." msgstr "" +"En bref, vous pouvez utiliser le code suivant pour initialiser " +"l'interpréteur Python avec votre module d'extension." #: ../Doc/faq/windows.rst:248 msgid "" "There are two problems with Python's C API which will become apparent if you " "use a compiler other than MSVC, the compiler used to build pythonNN.dll." msgstr "" +"Il y a deux problèmes avec l'API C de Python qui apparaîtront si vous " +"utilisez un compilateur autre que MSVC, le compilateur utilisé pour " +"construire *pythonNN.dll*." #: ../Doc/faq/windows.rst:251 msgid "" @@ -385,12 +431,19 @@ msgid "" "compiler's notion of a struct FILE will be different. From an " "implementation standpoint these are very _low_ level functions." msgstr "" +"Problème 1 : Les fonctions dites de \"Très Haut Niveau\" qui prennent les " +"arguments FILE * ne fonctionneront pas dans un environnement multi-" +"compilateur car chaque compilateur aura une notion différente de la " +"structure de FILE. Du point de vue de l'implémentation, il s'agit de " +"fonctions de très bas niveau." #: ../Doc/faq/windows.rst:256 msgid "" "Problem 2: SWIG generates the following code when generating wrappers to " "void functions:" msgstr "" +"Problème 2 : SWIG génère le code suivant lors de la génération " +"*d'encapsuleurs* pour annuler les fonctions :" #: ../Doc/faq/windows.rst:265 msgid "" @@ -398,6 +451,10 @@ msgid "" "structure called _Py_NoneStruct inside pythonNN.dll. Again, this code will " "fail in a mult-compiler environment. Replace such code by:" msgstr "" +"Hélas, *Py_None* est une macro qui se développe en référence à une structure " +"de données complexe appelée *_Py_NoneStruct* dans *pythonNN.dll*. Encore " +"une fois, ce code échouera dans un environnement multi-compilateur. " +"Remplacez ce code par :" #: ../Doc/faq/windows.rst:273 msgid "" @@ -405,6 +462,9 @@ msgid "" "automatically, though I have not been able to get this to work (I'm a " "complete SWIG newbie)." msgstr "" +"Il est possible d'utiliser la commande ``%typemap`` de SWIG pour effectuer " +"le changement automatiquement, bien que je n'ai pas réussi à le faire " +"fonctionner (je suis un débutant complet avec SWIG)." #: ../Doc/faq/windows.rst:277 msgid "" @@ -417,6 +477,15 @@ msgid "" "is a Python object (defined in your extension module) that contains read() " "and write() methods." msgstr "" +"Utiliser un script shell Python pour créer une fenêtre d'interpréteur Python " +"depuis votre application Windows n'est pas une bonne idée ; la fenêtre " +"résultante sera indépendante du système de fenêtrage de votre application. " +"Vous (ou la classe *wxPythonWindow*) devriez plutôt créer une fenêtre " +"d'interpréteur « native ». Il est facile de connecter cette fenêtre à " +"l'interpréteur Python. Vous pouvez rediriger l'entrée/sortie de Python vers " +"*n'importe quel* objet qui supporte la lecture et l'écriture, donc tout ce " +"dont vous avez besoin est un objet Python (défini dans votre module " +"d'extension) qui contient les méthodes *read()* et *write()*." #: ../Doc/faq/windows.rst:286 msgid "How do I keep editors from inserting tabs into my Python source?" diff --git a/howto/cporting.po b/howto/cporting.po index ff74e85e..ed66797b 100644 --- a/howto/cporting.po +++ b/howto/cporting.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/howto/cporting.rst:7 msgid "Porting Extension Modules to Python 3" -msgstr "" +msgstr "Portage des modules d'extension vers Python 3" #: ../Doc/howto/cporting.rst:9 msgid "Benjamin Peterson" @@ -36,6 +36,12 @@ msgid "" "obvious on the C level. This document endeavors to document " "incompatibilities and how they can be worked around." msgstr "" +"Changer l'API C n'était pas l'un des objectifs de Python 3, cependant les " +"nombreux changements au niveau Python ont rendu impossible de garder l'API " +"de Python 2 comme elle était. Certains changements tels que l'unification " +"de :func:`int` et :func:`long` sont plus apparents au niveau C. Ce document " +"s'efforce de documenter les incompatibilités et la façon dont elles peuvent " +"être contournées." #: ../Doc/howto/cporting.rst:23 msgid "Conditional compilation" @@ -46,26 +52,33 @@ msgid "" "The easiest way to compile only some code for Python 3 is to check if :c:" "macro:`PY_MAJOR_VERSION` is greater than or equal to 3. ::" msgstr "" +"La façon la plus simple de compiler seulement une section de code pour " +"Python 3 est de vérifier si :c:macro:`PY_MAJOR_VERSION` est supérieur ou " +"égal à 3. ::" #: ../Doc/howto/cporting.rst:32 msgid "" "API functions that are not present can be aliased to their equivalents " "within conditional blocks." msgstr "" +"Les fonctions manquantes dans l'API peuvent être remplacées par des alias à " +"leurs équivalents dans des blocs conditionnels." #: ../Doc/howto/cporting.rst:37 msgid "Changes to Object APIs" -msgstr "" +msgstr "Modifications apportées aux API des objets" #: ../Doc/howto/cporting.rst:39 msgid "" "Python 3 merged together some types with similar functions while cleanly " "separating others." msgstr "" +"Python 3 a fusionné certains types avec des fonctions identiques tout en " +"séparant de façon propre, d'autres." #: ../Doc/howto/cporting.rst:44 msgid "str/unicode Unification" -msgstr "" +msgstr "Unification de *str* et *unicode*" #: ../Doc/howto/cporting.rst:46 msgid "" @@ -81,10 +94,23 @@ msgid "" "shows best practices with regards to :c:type:`PyUnicode`, :c:type:" "`PyString`, and :c:type:`PyBytes`. ::" msgstr "" +"Le type :func:`str` de Python 3 est l'équivalent de :func:`unicode` sous " +"Python 2 ; Les fonctions C sont appelées ``PyUnicode_*`` pour les deux " +"versions. L'ancien type de chaîne de caractères de 8 bits est devenue :func:" +"`bytes`, avec des fonctions C nommées ``PyBytes_*``. Python 2.6 et toutes " +"les versions supérieures fournissent un en-tête de compatibilité, :file:" +"`bytesobject.h`, faisant correspondre les noms ``PyBytes`` aux ``PyString``. " +"Pour une meilleure compatibilité avec Python 3, :c:type:`PyUnicode` doit " +"être utilisé seulement pour des données textuelles et :c:type:`PyBytes` pour " +"des données binaires. Il est important de noter que :c:type:`PyBytes` et :c:" +"type:`PyUnicode` en Python 3 ne sont pas remplaçables contrairement à :c:" +"type:`PyString` et :c:type:`PyUnicode` dans Python 2. L'exemple suivant " +"montre l'utilisation optimale de :c:type:`PyUnicode`, :c:type:`PyString`, " +"et :c:type:`PyBytes`. ::" #: ../Doc/howto/cporting.rst:95 msgid "long/int Unification" -msgstr "" +msgstr "Unification de *long* et *int*" #: ../Doc/howto/cporting.rst:97 msgid "" @@ -96,7 +122,7 @@ msgstr "" #: ../Doc/howto/cporting.rst:104 msgid "Module initialization and state" -msgstr "" +msgstr "Initialisation et état du module" #: ../Doc/howto/cporting.rst:106 msgid "" @@ -106,10 +132,16 @@ msgid "" "in both Python 2 and Python 3 is tricky. The following simple example " "demonstrates how. ::" msgstr "" +"Python 3 a remanié son système d'initialisation des modules d'extension " +"(Voir :pep:`3121`.). Au lieu de stocker les états de module dans les " +"variables globales, les états doivent être stockés dans une structure " +"spécifique à l'interpréteur. Créer des modules qui ont un fonctionnement " +"correct en Python 2 et Python 3 est délicat. L'exemple suivant montre " +"comment. ::" #: ../Doc/howto/cporting.rst:197 msgid "CObject replaced with Capsule" -msgstr "" +msgstr "CObject remplacé par Capsule" #: ../Doc/howto/cporting.rst:199 msgid "" @@ -120,6 +152,13 @@ msgid "" "APIs relied on undefined behavior in C. (For further reading on the " "rationale behind Capsules, please see :issue:`5630`.)" msgstr "" +"L'objet :c:type:`Capsule` a été introduit dans Python 3.1 et 2.7 pour " +"remplacer :c:type:`CObject`. Le type :c:type:`CObject` était utile, mais son " +"API posait des soucis : elle ne permettait pas la distinction entre les " +"objets C valides, ce qui permettait aux objets C assortis incorrectement de " +"planter l'interpréteur, et certaines des API s'appuyaient sur un " +"comportement indéfini en C. (Pour plus de détails sur la logique de " +"Capsules, veuillez consulter :issue:`5630`)." #: ../Doc/howto/cporting.rst:206 msgid "" @@ -131,6 +170,14 @@ msgid "" "support both CObjects and Capsules. (Note that Python 3.0 is no longer " "supported, and it is not recommended for production use.)" msgstr "" +"Si vous utilisez actuellement CObjects et que vous voulez migrer vers la " +"version 3.1 ou plus récente, vous devrez passer à Capsules. :c:type:" +"`CObject` est déprécié dans 3.1 et 2.7 et est supprimé dans Python 3.2. Si " +"vous ne gérez que les versions 2.7, ou 3.1 et supérieures, vous pouvez " +"simplement passer à :c:type:`Capsule`. Si vous avez besoin de gérer Python " +"3.0, ou des versions de Python antérieures à 2.7, vous devez gérer CObjects " +"et Capsules. (Notez que Python 3.0 n'est plus maintenu, et qu'il n'est pas " +"recommandé pour une utilisation en production)." #: ../Doc/howto/cporting.rst:216 msgid "" @@ -140,6 +187,11 @@ msgid "" "automatically use Capsules in versions of Python with Capsules, and switch " "to CObjects when Capsules are unavailable." msgstr "" +"L'exemple suivant d'en-tête de fichier :file:`capsulethunk.h` peut résoudre " +"le problème. Il suffit d'écrire votre code dans l'API :c:type:`Capsule` et " +"d'inclure ce fichier d'en-tête après :file:`Python.h`. Votre code utilisera " +"automatiquement Capsules dans les versions de Python avec Capsules, et " +"passera à CObjects lorsque les Capsules ne sont pas disponibles." #: ../Doc/howto/cporting.rst:223 msgid "" @@ -148,10 +200,15 @@ msgid "" "the simulated :c:type:`Capsule` objects created by :file:`capsulethunk.h` " "behave slightly differently from real Capsules. Specifically:" msgstr "" +":file:`capsulethunk.h` reproduit le fonctionnement de Capsules en utilisant " +"CObjects. Cependant, :c:type:`CObject` ne permet pas de stocker le \"nom\" " +"de la capsule. Les objets simulés :c:type:`Capsule` créés par :file:" +"`capsulethunk.h` se comportent légèrement différemment des véritables " +"Capsules. Ainsi :" #: ../Doc/howto/cporting.rst:228 msgid "The name parameter passed in to :c:func:`PyCapsule_New` is ignored." -msgstr "" +msgstr "Le paramètre *name* passé à :c:func:`PyCapsule_New` est ignoré." #: ../Doc/howto/cporting.rst:230 msgid "" @@ -159,10 +216,13 @@ msgid "" "`PyCapsule_GetPointer` is ignored, and no error checking of the name is " "performed." msgstr "" +"Le paramètre *name* passé à :c:func:`PyCapsule_IsValid` et :c:func:" +"`PyCapsule_GetPointer` est ignoré et il n'y a pas de vérification d'erreur " +"du nom." #: ../Doc/howto/cporting.rst:234 msgid ":c:func:`PyCapsule_GetName` always returns NULL." -msgstr "" +msgstr ":c:func:`PyCapsule_GetName` renvoie toujours un NULL." #: ../Doc/howto/cporting.rst:236 msgid "" @@ -171,6 +231,11 @@ msgid "" "`PyCapsule_SetName` was deemed preferable to silent failure here. If this " "is inconvenient, feel free to modify your local copy as you see fit.)" msgstr "" +":c:func:`PyCapsule_SetName` lève toujours une exception et renvoie un échec. " +"Note : Puisqu'il n'y a aucun moyen de stocker un nom dans un CObject, " +"l'échec verbeux de :c:func:`PyCapsule_SetName` a été jugé préférable à un " +"échec non-verbeux dans ce cas. Si cela ne vous convenait pas, vous pouvez " +"modifier votre copie locale selon vos besoins." #: ../Doc/howto/cporting.rst:243 msgid "" @@ -178,10 +243,13 @@ msgid "" "source:`Doc/includes/capsulethunk.h`. We also include it here for your " "convenience:" msgstr "" +"Vous pouvez trouver :file:`capsulethunk.h` dans la distribution source de " +"Python comme :source:`Doc/includes/capsulethunk.h`. Nous l'incluons ici pour " +"votre confort :" #: ../Doc/howto/cporting.rst:252 msgid "Other options" -msgstr "" +msgstr "Autres options" #: ../Doc/howto/cporting.rst:254 msgid "" @@ -189,3 +257,7 @@ msgid "" "`_. It translates a Python-like language to C. The " "extension modules it creates are compatible with Python 3 and Python 2." msgstr "" +"Si vous écrivez un nouveau module d'extension, vous pouvez envisager " +"d'utiliser `Cython `_. Il traduit un langage de type " +"Python en C. Les modules d'extension qu'il crée sont compatibles avec Python " +"3 et Python 2." diff --git a/howto/functional.po b/howto/functional.po index 6dfca97b..c3ef656c 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -22,7 +22,7 @@ msgstr "Guide pratique : programmation fonctionnelle" #: ../Doc/howto/functional.rst:5 msgid "A. M. Kuchling" -msgstr "" +msgstr "A. M. Kuchling" #: ../Doc/howto/functional.rst:6 msgid "0.31" @@ -36,6 +36,11 @@ msgid "" "term:`iterator`\\s and :term:`generator`\\s and relevant library modules " "such as :mod:`itertools` and :mod:`functools`." msgstr "" +"Dans ce document, nous allons faire un tour des fonctionnalités de Python " +"adaptées à la réalisation d'un programme dans un style fonctionnel. Après " +"une introduction à la programmation fonctionnelle, nous aborderons des " +"outils tels que les :term:`iterator`\\s et les :term:`generator`\\s ainsi " +"que les modules :mod:`itertools` et :mod:`functools`." #: ../Doc/howto/functional.rst:16 msgid "Introduction" @@ -52,6 +57,8 @@ msgstr "" msgid "" "Programming languages support decomposing problems in several different ways:" msgstr "" +"Les langages de programmation permettent de traiter des problèmes selon " +"différentes approches :" #: ../Doc/howto/functional.rst:24 msgid "" @@ -59,6 +66,11 @@ msgid "" "instructions that tell the computer what to do with the program's input. C, " "Pascal, and even Unix shells are procedural languages." msgstr "" +"La plupart des langages de programmation suivent une logique " +"**procédurale** : les programmes sont constitués de listes d'instructions " +"qui détaillent les opérations que l'ordinateur doit appliquer aux entrées du " +"programme. C, Pascal ou encore les interpréteurs de commandes Unix sont des " +"langages procéduraux." #: ../Doc/howto/functional.rst:28 msgid "" @@ -69,6 +81,13 @@ msgid "" "to retrieve, and the SQL engine decides whether to scan tables or use " "indexes, which subclauses should be performed first, etc." msgstr "" +"Les langages **déclaratifs** permettent d'écrire la spécification du " +"problème et laissent l'implémentation du langage trouver une façon efficace " +"de réaliser les calculs nécessaires à sa résolution. SQL est un langage " +"déclaratif que vous êtes susceptible de connaître ; une requête SQL décrit " +"le jeu de données que vous souhaitez récupérer et le moteur SQL choisit de " +"parcourir les tables ou d'utiliser les index, l'ordre de résolution des sous-" +"clauses, etc." #: ../Doc/howto/functional.rst:35 msgid "" @@ -78,6 +97,11 @@ msgid "" "and Python are languages that support object-oriented programming, but don't " "force the use of object-oriented features." msgstr "" +"Les programmes **orientés objet** manipulent des ensembles d'objets. Ceux-ci " +"possèdent un état interne et des méthodes qui interrogent ou modifient cet " +"état d'une façon ou d'une autre. Smalltalk et Java sont deux langages " +"orientés objet. C++ et Python gèrent la programmation orientée objet mais " +"n'imposent pas l'utilisation de telles fonctionnalités." #: ../Doc/howto/functional.rst:41 msgid "" @@ -87,6 +111,12 @@ msgid "" "known functional languages include the ML family (Standard ML, OCaml, and " "other variants) and Haskell." msgstr "" +"La programmation **fonctionnelle** implique de décomposer un problème en un " +"ensemble de fonctions. Dans l'idéal, les fonctions produisent des sorties à " +"partir d'entrées et ne possède pas d'état interne qui soit susceptible de " +"modifier la sortie pour une entrée donnée. Les langages fonctionnels les " +"plus connus sont ceux de la famille ML (Standard ML, OCaml et autres) et " +"Haskell." #: ../Doc/howto/functional.rst:47 msgid "" @@ -111,6 +141,15 @@ msgid "" "side effects means not using data structures that get updated as a program " "runs; every function's output must only depend on its input." msgstr "" +"Dans un programme fonctionnel, l'entrée traverse un ensemble de fonctions. " +"Chaque fonction opère sur son entrée et produit une sortie. Le style " +"fonctionnel préconise de ne pas écrire de fonctions ayant des effets de " +"bord, c'est-à-dire qui modifient un état interne ou réalisent d'autres " +"changements qui ne sont pas visibles dans la valeur de sortie de la " +"fonction. Les fonctions qui ne présentent aucun effet de bord sont dites " +"**purement fonctionnelles**. L'interdiction des effets de bord signifie " +"qu'aucune structure de données n'est mise à jour lors de l'exécution du " +"programme ; chaque sortie d'une fonction ne dépend que de son entrée." #: ../Doc/howto/functional.rst:65 msgid "" @@ -132,6 +171,13 @@ msgid "" "assignments to local variables, but won't modify global variables or have " "other side effects." msgstr "" +"Les programmes Python écrits dans un style fonctionnel ne poussent " +"généralement pas le curseur de la pureté à l'extrême en interdisant toute " +"entrée/sortie ou les assignations ; ils exhibent une interface fonctionnelle " +"en apparence mais utilisent des fonctionnalités impures en interne. Par " +"exemple, l'implémentation d'une fonction peut assigner dans des variables " +"locales mais ne modifiera pas de variable globale et n'aura pas d'autre " +"effet de bord." #: ../Doc/howto/functional.rst:79 msgid "" @@ -144,6 +190,15 @@ msgid "" "approaches by writing functions that take and return instances representing " "objects in your application (e-mail messages, transactions, etc.)." msgstr "" +"La programmation fonctionnelle peut être considérée comme l'opposé de la " +"programmation orientée objet. Les objets encapsulent un état interne ainsi " +"qu'une collection de méthodes qui permettent de modifier cet état. Les " +"programmes consistent à appliquer les bons changements à ces états. La " +"programmation fonctionnelle vous impose d'éviter au maximum ces changements " +"d'états en travaillant sur des données qui traversent un flux de fonctions. " +"En Python, vous pouvez combiner ces deux approches en écrivant des fonctions " +"qui prennent en argument et renvoient des instances représentants des objets " +"de votre application (courriers électroniques, transactions, etc.)." #: ../Doc/howto/functional.rst:88 msgid "" @@ -151,32 +206,37 @@ msgid "" "you avoid objects and side effects? There are theoretical and practical " "advantages to the functional style:" msgstr "" +"Programmer sous la contrainte du paradigme fonctionnel peut sembler étrange. " +"Pourquoi vouloir éviter les objets et les effets de bord ? Il existe des " +"avantages théoriques et pratiques au style fonctionnel :" #: ../Doc/howto/functional.rst:92 msgid "Formal provability." -msgstr "" +msgstr "Preuves formelles." #: ../Doc/howto/functional.rst:93 msgid "Modularity." -msgstr "" +msgstr "Modularité." #: ../Doc/howto/functional.rst:94 msgid "Composability." -msgstr "" +msgstr "Composabilité." #: ../Doc/howto/functional.rst:95 msgid "Ease of debugging and testing." -msgstr "" +msgstr "Facilité de débogage et de test." #: ../Doc/howto/functional.rst:99 msgid "Formal provability" -msgstr "" +msgstr "Preuves formelles" #: ../Doc/howto/functional.rst:101 msgid "" "A theoretical benefit is that it's easier to construct a mathematical proof " "that a functional program is correct." msgstr "" +"Un avantage théorique est qu'il plus facile de construire une preuve " +"mathématique de l'exactitude d'un programme fonctionnel." #: ../Doc/howto/functional.rst:104 msgid "" @@ -187,6 +247,12 @@ msgid "" "looks right; the goal is instead a rigorous proof that a program produces " "the right result for all possible inputs." msgstr "" +"Les chercheurs ont longtemps souhaité trouver des façons de prouver " +"mathématiquement qu'un programme est correct. Cela ne se borne pas à tester " +"si la sortie d'un programme est correcte sur de nombreuses entrées ou lire " +"le code source et en conclure que le celui-ci semble juste. L'objectif est " +"d'établir une preuve rigoureuse que le programme produit le bon résultat " +"pour toutes les entrées possibles." #: ../Doc/howto/functional.rst:111 msgid "" @@ -198,6 +264,14 @@ msgid "" "This continues until you reach the end of the program, at which point the " "invariants should match the desired conditions on the program's output." msgstr "" +"La technique utilisée pour prouver l'exactitude d'un programme est d'écrire " +"des **invariants**, c'est-à-dire des propriétés de l'entrée et des variables " +"du programme qui sont toujours vérifiées. Pour chaque ligne de code, il " +"suffit de montrer que si les invariants X et Y sont vrais **avant** " +"l'exécution de cette ligne, les invariants légèrement modifiés X' et Y' sont " +"vérifiés **après** son exécution. Ceci se répète jusqu'à atteindre la fin du " +"programme. À ce stade, les invariants doivent alors correspondre aux " +"propriétés que l'on souhaite que la sortie du programme vérifie." #: ../Doc/howto/functional.rst:119 msgid "" @@ -206,6 +280,10 @@ msgid "" "invariants that were true before the assignment without producing any new " "invariants that can be propagated onward." msgstr "" +"L'aversion du style fonctionnel envers les assignations de variable est " +"apparue car celles-ci sont difficiles à gérer avec cette méthode. Les " +"assignations peuvent rompre des invariants qui étaient vrais auparavant sans " +"pour autant produire de nouveaux invariants qui pourraient être propagés." #: ../Doc/howto/functional.rst:124 msgid "" @@ -218,10 +296,20 @@ msgid "" "the question of verifying the proof; maybe there's an error in it, and you " "wrongly believe you've proved the program correct." msgstr "" +"Malheureusement, prouver l'exactitude d'un programme est très peu commode et " +"ne concerne que rarement des logiciels en Python. Même des programmes " +"triviaux nécessitent souvent des preuves s'étalant sur plusieurs pages ; la " +"preuve de l'exactitude d'un programme relativement gros serait gigantesque. " +"Peu, voire aucun, des programmes que vous utilisez quotidiennement " +"(l'interpréteur Python, votre analyseur syntaxique XML, votre navigateur " +"web) ne peuvent être prouvés exacts. Même si vous écriviez ou généreriez une " +"preuve, il faudrait encore vérifier celle-ci. Peut-être qu'elle contient une " +"erreur et que vous pensez désormais, à tort, que vous avez prouvé que votre " +"programme est correct." #: ../Doc/howto/functional.rst:135 msgid "Modularity" -msgstr "" +msgstr "Modularité" #: ../Doc/howto/functional.rst:137 msgid "" @@ -231,14 +319,20 @@ msgid "" "thing than a large function that performs a complicated transformation. " "Small functions are also easier to read and to check for errors." msgstr "" +"Un intérêt plus pratique de la programmation fonctionnelle est qu'elle " +"impose de décomposer le problème en petits morceaux. Les programmes qui en " +"résultent sont souvent plus modulaires. Il est plus simple de spécifier et " +"d'écrire une petite fonction qui ne fait qu'une seule tâche plutôt qu'une " +"grosse fonction qui réalise une transformation complexe. Les petites " +"fonctions sont plus faciles à lire et à vérifier." #: ../Doc/howto/functional.rst:145 msgid "Ease of debugging and testing" -msgstr "" +msgstr "Facilité de débogage et de test" #: ../Doc/howto/functional.rst:147 msgid "Testing and debugging a functional-style program is easier." -msgstr "" +msgstr "Tester et déboguer un programme fonctionnel est plus facile." #: ../Doc/howto/functional.rst:149 msgid "" @@ -248,6 +342,11 @@ msgid "" "intermediate inputs and outputs to quickly isolate the function that's " "responsible for a bug." msgstr "" +"Déboguer est plus simple car les fonctions sont généralement petites et bien " +"spécifiées. Lorsqu'un programme ne fonctionne pas, chaque fonction constitue " +"une étape intermédiaire au niveau de laquelle vous pouvez vérifier que les " +"valeurs sont justes. Vous pouvez observer les entrées intermédiaires et les " +"sorties afin d'isoler rapidement la fonction qui est à l'origine du bogue." #: ../Doc/howto/functional.rst:154 msgid "" @@ -256,10 +355,15 @@ msgid "" "before running a test; instead you only have to synthesize the right input " "and then check that the output matches expectations." msgstr "" +"Les tests sont plus faciles car chaque fonction est désormais un sujet " +"potentiel pour un test unitaire. Les fonctions ne dépendent pas d'un état " +"particulier du système qui devrait être répliqué avant d'exécuter un test ; " +"à la place vous n'avez qu'à produire une entrée synthétique et vérifier que " +"le résultat correspond à ce que vous attendez." #: ../Doc/howto/functional.rst:161 msgid "Composability" -msgstr "" +msgstr "Composabilité" #: ../Doc/howto/functional.rst:163 msgid "" @@ -271,6 +375,14 @@ msgid "" "that takes a filename and returns its contents, can be applied to many " "different situations." msgstr "" +"En travaillant sur un programme dans le style fonctionnel, vous écrivez un " +"certain nombre de fonctions avec des entrées et des sorties variables. " +"Certaines de ces fonctions sont inévitablement spécifiques à une application " +"en particulier, mais d'autres peuvent s'appliquer à de nombreux cas d'usage. " +"Par exemple, une fonction qui liste l'ensemble des fichiers XML d'un " +"répertoire à partir du chemin de celui-ci ou une fonction qui renvoie le " +"contenu d'un fichier à partir de son nom peuvent être utiles dans de " +"nombreuses situations." #: ../Doc/howto/functional.rst:170 msgid "" @@ -278,6 +390,10 @@ msgid "" "assemble new programs by arranging existing functions in a new configuration " "and writing a few functions specialized for the current task." msgstr "" +"Au fur et à mesure, vous constituez ainsi une bibliothèque personnelle " +"d'utilitaires. Souvent, vous pourrez construire de nouveaux programmes en " +"agençant des fonctions existantes dans une nouvelle configuration et en " +"écrivant quelques fonctions spécifiques à votre objectif en cours." #: ../Doc/howto/functional.rst:176 msgid "Iterators" @@ -288,6 +404,8 @@ msgid "" "I'll start by looking at a Python language feature that's an important " "foundation for writing functional-style programs: iterators." msgstr "" +"Commençons par jeter un œil à une des fonctionnalités les plus importantes " +"pour écrire en style fonctionnel avec Python : les itérateurs." #: ../Doc/howto/functional.rst:181 msgid "" @@ -312,7 +430,7 @@ msgstr "" #: ../Doc/howto/functional.rst:196 msgid "You can experiment with the iteration interface manually:" -msgstr "" +msgstr "Vous pouvez expérimenter avec l'interface d'itération manuellement :" #: ../Doc/howto/functional.rst:214 msgid "" @@ -327,12 +445,17 @@ msgid "" "Iterators can be materialized as lists or tuples by using the :func:`list` " "or :func:`tuple` constructor functions:" msgstr "" +"Les itérateurs peuvent être transformés en listes ou en tuples en appelant " +"les constructeurs respectifs :func:`list` et :func:`tuple` :" #: ../Doc/howto/functional.rst:234 msgid "" "Sequence unpacking also supports iterators: if you know an iterator will " "return N elements, you can unpack them into an N-tuple:" msgstr "" +"Le dépaquetage de séquences fonctionne également sur les itérateurs : si " +"vous savez qu'un itérateur renvoie N éléments, vous pouvez les dépaqueter " +"dans un n-uplet :" #: ../Doc/howto/functional.rst:243 msgid "" @@ -358,7 +481,7 @@ msgstr "" #: ../Doc/howto/functional.rst:261 msgid "Data Types That Support Iterators" -msgstr "" +msgstr "Types de données itérables" #: ../Doc/howto/functional.rst:263 msgid "" @@ -366,6 +489,9 @@ msgid "" "Python sequence type, such as strings, will automatically support creation " "of an iterator." msgstr "" +"Nous avons vu précédemment comment les listes et les *tuples* gèrent les " +"itérateurs. En réalité, n'importe quel type de séquence en Python, par " +"exemple les chaînes de caractères, sont itérables." #: ../Doc/howto/functional.rst:267 msgid "" @@ -393,6 +519,8 @@ msgid "" "The :func:`dict` constructor can accept an iterator that returns a finite " "stream of ``(key, value)`` tuples:" msgstr "" +"Le constructeur :func:`dict` accepte de prendre un itérateur en argument qui " +"renvoie un flux fini de pairs ``(clé, valeur)`` :" #: ../Doc/howto/functional.rst:306 msgid "" @@ -406,10 +534,12 @@ msgid "" "Sets can take their contents from an iterable and let you iterate over the " "set's elements::" msgstr "" +"Les ensembles peuvent être créés à partir d'un itérable et autorisent " +"l'itération sur les éléments de l'ensemble ::" #: ../Doc/howto/functional.rst:324 msgid "Generator expressions and list comprehensions" -msgstr "" +msgstr "Expressions génératrices et compréhension de listes" #: ../Doc/howto/functional.rst:326 msgid "" @@ -419,6 +549,12 @@ msgid "" "strip off trailing whitespace from each line or extract all the strings " "containing a given substring." msgstr "" +"Deux opérations courantes réalisables sur la sortie d'un itérateur sont 1) " +"effectuer une opération pour chaque élément, 2) extraire le sous-ensemble " +"des éléments qui vérifient une certaine condition. Par exemple, pour une " +"liste de chaînes de caractères, vous pouvez choisir de retirer tous les " +"caractères blancs à la fin de chaque ligne ou extraire toutes les chaînes " +"contenant une sous-chaîne précise." #: ../Doc/howto/functional.rst:332 msgid "" @@ -427,11 +563,18 @@ msgid "" "functional programming language Haskell (https://www.haskell.org/). You can " "strip all the whitespace from a stream of strings with the following code::" msgstr "" +"Les compréhensions de listes et les expressions génératrices sont des façons " +"concises d'exprimer de telles opérations, inspirées du langage de " +"programmation fonctionnel Haskell (https://www.haskell.org/). Vous pouvez " +"retirer tous les caractères blancs initiaux et finaux d'un flux de chaînes " +"de caractères à l'aide du code suivant ::" #: ../Doc/howto/functional.rst:345 msgid "" "You can select only certain elements by adding an ``\"if\"`` condition::" msgstr "" +"Vous pouvez ne sélectionner que certains éléments en ajoutant une condition " +"« ``if`` » ::" #: ../Doc/howto/functional.rst:350 msgid "" @@ -443,6 +586,13 @@ msgid "" "infinite stream or a very large amount of data. Generator expressions are " "preferable in these situations." msgstr "" +"La compréhension de liste renvoie une liste Python ; ``stripped_list`` est " +"une liste contenant les lignes après transformation, pas un itérateur. Les " +"expressions génératrices renvoient un itérateur qui calcule les valeurs au " +"fur et à mesure sans toutes les matérialiser d'un seul coup. Cela signifie " +"que les compréhensions de listes ne sont pas très utiles si vous travaillez " +"sur des itérateurs infinis ou produisant une très grande quantité de " +"données. Les expressions génératrices sont préférables dans ce cas." #: ../Doc/howto/functional.rst:357 msgid "" @@ -450,12 +600,17 @@ msgid "" "comprehensions are surrounded by square brackets (\"[]\"). Generator " "expressions have the form::" msgstr "" +"Les expressions génératrices sont écrites entre parenthèses (« () ») et les " +"compréhensions de listes entre crochets (« [] »). Les expressions " +"génératrices sont de la forme ::" #: ../Doc/howto/functional.rst:370 msgid "" "Again, for a list comprehension only the outside brackets are different " "(square brackets instead of parentheses)." msgstr "" +"La compréhension de liste équivalente s'écrit de la même manière, utilisez " +"juste des crochets à la place des parenthèses." #: ../Doc/howto/functional.rst:373 msgid "" @@ -464,6 +619,9 @@ msgid "" "``expression`` is only evaluated and added to the result when ``condition`` " "is true." msgstr "" +"Les éléments de la sortie sont les valeurs successives de ``expression``. La " +"clause ``if`` est facultative ; si elle est présente, ``expression`` n'est " +"évaluée et ajoutée au résultat que si ``condition`` est vérifiée." #: ../Doc/howto/functional.rst:377 msgid "" @@ -471,6 +629,10 @@ msgid "" "parentheses signalling a function call also count. If you want to create an " "iterator that will be immediately passed to a function you can write::" msgstr "" +"Les expressions génératrices doivent toujours être écrites entre " +"parenthèses, mais les parenthèses qui encadrent un appel de fonction " +"comptent aussi. Si vous souhaitez créer un itérateur qui soit immédiatement " +"passé à une fonction, vous pouvez écrire ::" #: ../Doc/howto/functional.rst:383 msgid "" @@ -481,12 +643,20 @@ msgid "" "looped over for each resulting pair of elements from ``sequence1`` and " "``sequence2``." msgstr "" +"Les clauses ``for ... in`` indiquent les séquences sur lesquelles itérer. " +"Celles-ci peuvent être de longueurs différentes car l'itération est réalisée " +"de gauche à droite et non en parallèle. ``sequence2`` est parcourue " +"entièrement pour chaque élément de ``sequence1``. ``sequence3`` est ensuite " +"parcourue dans son intégralité pour chaque paire d'éléments de ``sequence1`` " +"et ``sequence2``." #: ../Doc/howto/functional.rst:389 msgid "" "To put it another way, a list comprehension or generator expression is " "equivalent to the following Python code::" msgstr "" +"Autrement dit, une compréhension de liste ou une expression génératrice est " +"équivalente au code Python ci-dessous ::" #: ../Doc/howto/functional.rst:406 msgid "" @@ -495,6 +665,10 @@ msgid "" "the lengths of all the sequences. If you have two lists of length 3, the " "output list is 9 elements long:" msgstr "" +"Ainsi lorsque plusieurs clauses ``for ... in`` sont présentes mais sans " +"condition ``if``, la longueur totale de la nouvelle séquence est égale au " +"produit des longueurs des séquences itérées. Si vous travaillez sur deux " +"listes de longueur 3, la sortie contiendra 9 éléments :" #: ../Doc/howto/functional.rst:421 msgid "" @@ -502,6 +676,10 @@ msgid "" "is creating a tuple, it must be surrounded with parentheses. The first list " "comprehension below is a syntax error, while the second one is correct::" msgstr "" +"Afin de ne pas créer une ambiguïté dans la grammaire de Python, " +"``expression`` doit être encadrée par des parenthèses si elle produit un n-" +"uplet. La première compréhension de liste ci-dessous n'est pas valide " +"syntaxiquement, tandis que la seconde l'est ::" #: ../Doc/howto/functional.rst:432 msgid "Generators" @@ -513,6 +691,10 @@ msgid "" "writing iterators. Regular functions compute a value and return it, but " "generators return an iterator that returns a stream of values." msgstr "" +"Les générateurs forment une classe spéciale de fonctions qui simplifie la " +"création d'itérateurs. Les fonctions habituelles calculent une valeur et la " +"renvoie, tandis que les générateurs renvoient un itérateur qui produit un " +"flux de valeurs." #: ../Doc/howto/functional.rst:438 msgid "" @@ -526,10 +708,22 @@ msgid "" "function where it left off? This is what generators provide; they can be " "thought of as resumable functions." msgstr "" +"Vous connaissez sans doute le fonctionnement des appels de fonctions en " +"Python ou en C. Lorsqu'une fonction est appelée, un espace de nommage privé " +"lui est associé pour ses variables locales. Lorsque le programme atteint une " +"instruction ``return``, les variables locales sont détruites et la valeur " +"est renvoyée à l'appelant. Les appels postérieurs à la même fonction créent " +"un nouvel espace de nommage privé et de nouvelles variables locales. " +"Cependant, que se passerait-il si les variables locales n'étaient pas " +"détruites lors de la sortie d'une fonction ? Et s'il était possible de " +"reprendre l'exécution de la fonction là où elle s'était arrêtée ? Les " +"générateurs sont une réponse à ces questions ; vous pouvez considérer qu'il " +"s'agit de fonctions qu'il est possible d'interrompre, puis de relancer sans " +"perdre leur progression." #: ../Doc/howto/functional.rst:447 msgid "Here's the simplest example of a generator function:" -msgstr "" +msgstr "Voici un exemple simple de fonction génératrice :" #: ../Doc/howto/functional.rst:455 msgid "" @@ -552,7 +746,7 @@ msgstr "" #: ../Doc/howto/functional.rst:467 msgid "Here's a sample usage of the ``generate_ints()`` generator:" -msgstr "" +msgstr "Voici un exemple d'utilisation du générateur ``generate_ints()`` :" #: ../Doc/howto/functional.rst:484 msgid "" @@ -596,10 +790,16 @@ msgid "" "knight to every square of an NxN chessboard without visiting any square " "twice)." msgstr "" +"Deux autres exemples de ``test_generators.py`` permettent de résoudre le " +"problème des N Reines (placer *N* reines sur un échiquier de dimensions " +"*NxN* de telle sorte qu'aucune reine ne soit en position d'en prendre une " +"autre) et le problème du cavalier (trouver un chemin permettant au cavalier " +"de visiter toutes les cases d'un échiquier *NxN* sans jamais visiter la même " +"case deux fois)." #: ../Doc/howto/functional.rst:525 msgid "Passing values into a generator" -msgstr "" +msgstr "Transmettre des valeurs au générateur" #: ../Doc/howto/functional.rst:527 msgid "" @@ -610,6 +810,12 @@ msgid "" "variable or by passing in some mutable object that callers then modify, but " "these approaches are messy." msgstr "" +"Avant Python 2.5, les générateurs ne pouvaient que produire des sorties. Une " +"fois le code du générateur exécuté pour créer un itérateur, il était " +"impossible d'introduire de l'information nouvelle dans la fonction mise en " +"pause. Une astuce consistait à obtenir cette fonctionnalité en autorisant le " +"générateur à consulter des variables globales ou en lui passant des objets " +"mutables modifiés hors du générateur, mais ces approches étaient compliquées." #: ../Doc/howto/functional.rst:534 msgid "" @@ -617,6 +823,10 @@ msgid "" "`yield` became an expression, returning a value that can be assigned to a " "variable or otherwise operated on::" msgstr "" +"À partir de Python 2.5, il existe une méthode simple pour transmettre des " +"valeurs à un générateur. Le mot-clé :keyword:`yield` est devenu une " +"expression qui renvoie une valeur sur laquelle il est possible d'opérer et " +"que vous pouvez assigner à une variable ::" #: ../Doc/howto/functional.rst:540 msgid "" @@ -625,6 +835,12 @@ msgid "" "above example. The parentheses aren't always necessary, but it's easier to " "always add them instead of having to remember when they're needed." msgstr "" +"Comme dans l'exemple ci-dessus, nous vous recommandons de **toujours** " +"encadrer les expressions ``yield`` par des parenthèses lorsque vous utilisez " +"leur valeur de retour. Elles ne sont pas toujours indispensables mais mieux " +"vaut prévenir que guérir : il est plus facile de les ajouter " +"systématiquement que de prendre le risque de les oublier là où elles sont " +"requises." #: ../Doc/howto/functional.rst:545 msgid "" @@ -648,10 +864,12 @@ msgid "" "Here's a simple counter that increments by 1 and allows changing the value " "of the internal counter." msgstr "" +"Voici un exemple de compteur qui s'incrémente de 1 mais dont il est possible " +"de modifier le compte interne." #: ../Doc/howto/functional.rst:571 msgid "And here's an example of changing the counter:" -msgstr "" +msgstr "Et voici comment il est possible de modifier le compteur :" #: ../Doc/howto/functional.rst:588 msgid "" @@ -689,12 +907,18 @@ msgid "" "suggest using a ``try: ... finally:`` suite instead of catching :exc:" "`GeneratorExit`." msgstr "" +"Si vous devez exécuter du code pour faire le ménage lors d'une :exc:" +"`GeneratorExit`, nous vous suggérons d'utiliser une structure ``try: ... " +"finally`` plutôt que d'attraper :exc:`GeneratorExit`." #: ../Doc/howto/functional.rst:609 msgid "" "The cumulative effect of these changes is to turn generators from one-way " "producers of information into both producers and consumers." msgstr "" +"Ces changements cumulés transforment les générateurs de producteurs " +"unidirectionnels d'information vers un statut hybride à la fois producteur " +"et consommateur." #: ../Doc/howto/functional.rst:612 msgid "" @@ -704,6 +928,12 @@ msgid "" "can be entered, exited, and resumed at many different points (the ``yield`` " "statements)." msgstr "" +"Les générateurs sont également devenus des **coroutines**, une forme " +"généralisée de sous-routine. L'exécution des sous-routines démarre à un " +"endroit et se termine à un autre (au début de la fonction et au niveau de " +"l'instruction ``return``), tandis qu'il est possible d'entrer, de sortir ou " +"de reprendre une coroutine à différents endroits (les instructions " +"``yield``)." #: ../Doc/howto/functional.rst:619 msgid "Built-in functions" @@ -713,6 +943,8 @@ msgstr "Fonctions natives" msgid "" "Let's look in more detail at built-in functions often used with iterators." msgstr "" +"Voyons un peu plus en détail les fonctions natives souvent utilisées de " +"concert avec les itérateurs." #: ../Doc/howto/functional.rst:623 msgid "" @@ -746,7 +978,7 @@ msgstr "" #: ../Doc/howto/functional.rst:655 msgid "This can also be written as a list comprehension:" -msgstr "" +msgstr "Cela peut se réécrire sous la forme d'une compréhension de liste :" #: ../Doc/howto/functional.rst:660 msgid "" @@ -794,6 +1026,9 @@ msgid "" ":func:`enumerate` is often used when looping through a list and recording " "the indexes at which certain conditions are met::" msgstr "" +":func:`enumerate` est souvent utilisée lorsque l'on souhaite boucler sur une " +"liste tout en listant les indices pour lesquels une certaine condition est " +"vérifiée ::" #: ../Doc/howto/functional.rst:728 msgid "" @@ -819,19 +1054,24 @@ msgstr "" #: ../Doc/howto/functional.rst:766 msgid "Small functions and the lambda expression" -msgstr "" +msgstr "Expressions lambda et fonctions courtes" #: ../Doc/howto/functional.rst:768 msgid "" "When writing functional-style programs, you'll often need little functions " "that act as predicates or that combine elements in some way." msgstr "" +"Dans un style de programmation fonctionnel, il est courant d'avoir besoin de " +"petites fonctions utilisées comme prédicats ou pour combiner des éléments " +"d'une façon ou d'une autre." #: ../Doc/howto/functional.rst:771 msgid "" "If there's a Python built-in or a module function that's suitable, you don't " "need to define a new function at all::" msgstr "" +"S'il existe une fonction native Python ou une fonction d'un module qui " +"convient, vous n'avez pas besoin de définir de nouvelle fonction ::" #: ../Doc/howto/functional.rst:777 msgid "" @@ -846,12 +1086,16 @@ msgid "" "An alternative is to just use the ``def`` statement and define a function in " "the usual way::" msgstr "" +"Une autre façon de faire est de simplement utiliser l'instruction ``def`` " +"afin de définir une fonction de la manière habituelle ::" #: ../Doc/howto/functional.rst:800 msgid "" "Which alternative is preferable? That's a style question; my usual course " "is to avoid using ``lambda``." msgstr "" +"La méthode à préférer est une question de style, en général l'auteur évite " +"l'utilisation de ``lambda``." #: ../Doc/howto/functional.rst:803 msgid "" @@ -869,14 +1113,20 @@ msgid "" "figure out what's going on. Using a short nested ``def`` statements makes " "things a little bit better::" msgstr "" +"Vous pouvez sûrement comprendre ce que fait ce code mais cela prend du temps " +"de démêler l'expression pour y voir plus clair. Une clause ``def`` concise " +"améliore la situation ::" #: ../Doc/howto/functional.rst:823 msgid "But it would be best of all if I had simply used a ``for`` loop::" msgstr "" +"Toutefois l'idéal aurait été de simplement se contenter d'une boucle " +"``for`` ::" #: ../Doc/howto/functional.rst:829 msgid "Or the :func:`sum` built-in and a generator expression::" msgstr "" +"ou de la fonction native :func:`sum` et d'une expression génératrice ::" #: ../Doc/howto/functional.rst:833 msgid "Many uses of :func:`reduce` are clearer when written as ``for`` loops." @@ -887,38 +1137,46 @@ msgid "" "Fredrik Lundh once suggested the following set of rules for refactoring uses " "of ``lambda``:" msgstr "" +"Frederik Lundh a suggéré quelques règles pour le réusinage de code " +"impliquant les expressions ``lambda`` :" #: ../Doc/howto/functional.rst:838 msgid "Write a lambda function." -msgstr "" +msgstr "Écrire une fonction lambda." #: ../Doc/howto/functional.rst:839 msgid "Write a comment explaining what the heck that lambda does." msgstr "" +"Écrire un commentaire qui explique ce que fait cette satanée fonction lambda." #: ../Doc/howto/functional.rst:840 msgid "" "Study the comment for a while, and think of a name that captures the essence " "of the comment." msgstr "" +"Scruter le commentaire pendant quelques temps et réfléchir à un nom qui " +"synthétise son essence." #: ../Doc/howto/functional.rst:842 msgid "Convert the lambda to a def statement, using that name." msgstr "" +"Réécrire la fonction lambda en une définition *def* en utilisant ce nom." #: ../Doc/howto/functional.rst:843 msgid "Remove the comment." -msgstr "" +msgstr "Effacer le commentaire." #: ../Doc/howto/functional.rst:845 msgid "" "I really like these rules, but you're free to disagree about whether this " "lambda-free style is better." msgstr "" +"J'aime beaucoup ces règles mais vous êtes libre de ne pas être d'accord et " +"de ne pas préférer ce style sans lambda." #: ../Doc/howto/functional.rst:850 msgid "The itertools module" -msgstr "" +msgstr "Le module *itertools*" #: ../Doc/howto/functional.rst:852 msgid "" @@ -926,30 +1184,38 @@ msgid "" "well as functions for combining several iterators. This section will " "introduce the module's contents by showing small examples." msgstr "" +"Le module :mod:`itertools` contient de nombreux itérateurs très utilisés, " +"ainsi que des fonctions pour combiner différents itérateurs. Cette section " +"présente le contenu du module au travers de quelques exemples." #: ../Doc/howto/functional.rst:856 msgid "The module's functions fall into a few broad classes:" -msgstr "" +msgstr "Les fonctions du module se divisent en quelques grandes catégories :" #: ../Doc/howto/functional.rst:858 msgid "Functions that create a new iterator based on an existing iterator." msgstr "" +"Les fonctions qui transforment un itérateur existant en un nouvel itérateur." #: ../Doc/howto/functional.rst:859 msgid "Functions for treating an iterator's elements as function arguments." msgstr "" +"Les fonctions qui traitent les éléments d'un itérateur comme les arguments " +"d'une fonction." #: ../Doc/howto/functional.rst:860 msgid "Functions for selecting portions of an iterator's output." msgstr "" +"Les fonctions qui permettent de sélectionner des portions de la sortie d'un " +"itérateur." #: ../Doc/howto/functional.rst:861 msgid "A function for grouping an iterator's output." -msgstr "" +msgstr "Une fonction qui permet de grouper la sortie d'un itérateur." #: ../Doc/howto/functional.rst:864 msgid "Creating new iterators" -msgstr "" +msgstr "Créer de nouveaux itérateurs" #: ../Doc/howto/functional.rst:866 msgid "" @@ -1000,6 +1266,9 @@ msgid "" "length. If the iterables are of different lengths, the resulting stream " "will be the same length as the shortest iterable. ::" msgstr "" +"Cet itérateur suppose qu'il opère sur des itérables de même longueur. Si la " +"longueur des itérables diffère, le flux résultant a la même longueur que le " +"plus court des itérables. ::" #: ../Doc/howto/functional.rst:915 msgid "" @@ -1007,6 +1276,11 @@ msgid "" "the longer iterators and discarded. This means you can't go on to use the " "iterators further because you risk skipping a discarded element." msgstr "" +"Toutefois, vous devez éviter de dépendre de ce comportement. En effet un " +"élément d'un des itérables les plus longs peut être retiré puis jeté (car " +"l'autre itérable est trop court). Cela signifie que vous ne pouvez alors " +"plus utiliser cet itérable car vous allez sauter l'élément qui vient d'être " +"jeté." #: ../Doc/howto/functional.rst:919 msgid "" @@ -1030,7 +1304,7 @@ msgstr "" #: ../Doc/howto/functional.rst:951 msgid "Calling functions on elements" -msgstr "" +msgstr "Appliquer des fonctions au contenu des itérateurs" #: ../Doc/howto/functional.rst:953 msgid "" @@ -1062,13 +1336,15 @@ msgstr "" #: ../Doc/howto/functional.rst:978 msgid "Selecting elements" -msgstr "" +msgstr "Sélectionner des éléments" #: ../Doc/howto/functional.rst:980 msgid "" "Another group of functions chooses a subset of an iterator's elements based " "on a predicate." msgstr "" +"Une autre catégorie de fonctions est celle permettant de sélectionner un " +"sous-ensemble des éléments de l'itérateur selon un prédicat donné." #: ../Doc/howto/functional.rst:983 msgid "" @@ -1097,7 +1373,7 @@ msgstr "" #: ../Doc/howto/functional.rst:1026 msgid "Grouping elements" -msgstr "" +msgstr "Grouper les éléments" #: ../Doc/howto/functional.rst:1028 msgid "" @@ -1124,7 +1400,7 @@ msgstr "" #: ../Doc/howto/functional.rst:1068 msgid "The functools module" -msgstr "" +msgstr "Le module *functools*" #: ../Doc/howto/functional.rst:1070 msgid "" @@ -1133,6 +1409,10 @@ msgid "" "and returns a new function. The most useful tool in this module is the :" "func:`functools.partial` function." msgstr "" +"Le module :mod:`functools` introduit par Python 2.5 contient diverses " +"fonctions d'ordre supérieur. Une **fonction d'ordre supérieur** prend une ou " +"plusieurs fonctions en entrée et renvoie une fonction. L'outil le plus " +"important de ce module est la fonction :func:`functools.partial`." #: ../Doc/howto/functional.rst:1075 msgid "" @@ -1143,6 +1423,12 @@ msgid "" "filling in a value for one of ``f()``'s parameters. This is called " "\"partial function application\"." msgstr "" +"En programmant dans un style fonctionnel, il est courant de vouloir " +"construire des variantes de fonctions existantes dont certains paramètres " +"sont prédéfinis. Par exemple, considérons une fonction Python ``f(a, b, " +"c)``. Si vous voulez une nouvelle fonction ``g(b, c)`` équivalente à ``f(1, " +"b, c)``, c'est-à-dire fixer le premier paramètre de ``f()``. La fonction " +"``g()`` est une appelée « application partielle » de ``f()``." #: ../Doc/howto/functional.rst:1081 msgid "" @@ -1158,7 +1444,7 @@ msgstr "Voici un exemple court mais réaliste ::" #: ../Doc/howto/functional.rst:1099 msgid "The operator module" -msgstr "" +msgstr "Le module *operator*" #: ../Doc/howto/functional.rst:1101 msgid "" @@ -1167,10 +1453,14 @@ msgid "" "useful in functional-style code because they save you from writing trivial " "functions that perform a single operation." msgstr "" +"Le module :mod:`operator` mentionné précédemment contient un ensemble de " +"fonctions reproduisant les opérateurs de Python. Ces fonctions sont souvent " +"utiles en programmation fonctionnelle car elles permettent de ne pas avoir à " +"écrire des fonctions triviales qui ne réalisent qu'une seule opération." #: ../Doc/howto/functional.rst:1106 msgid "Some of the functions in this module are:" -msgstr "" +msgstr "Voici quelques fonctions de ce module :" #: ../Doc/howto/functional.rst:1108 msgid "" @@ -1180,28 +1470,32 @@ msgstr "" #: ../Doc/howto/functional.rst:1110 msgid "Logical operations: ``not_()``, ``truth()``." -msgstr "" +msgstr "Les opérations logiques : ``not_()``, ``truth()``." #: ../Doc/howto/functional.rst:1111 msgid "Bitwise operations: ``and_()``, ``or_()``, ``invert()``." -msgstr "" +msgstr "Les opérations bit à bit : ``and_()``, ``or_()``, ``invert()``." #: ../Doc/howto/functional.rst:1112 msgid "" "Comparisons: ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, and ``ge()``." msgstr "" +"Les comparaisons : ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, et " +"``ge()``." #: ../Doc/howto/functional.rst:1113 msgid "Object identity: ``is_()``, ``is_not()``." -msgstr "" +msgstr "L'identification des objets : ``is_()``, ``is_not()``." #: ../Doc/howto/functional.rst:1115 msgid "Consult the operator module's documentation for a complete list." msgstr "" +"Veuillez vous référer à la documentation du module *operator* pour une liste " +"complète." #: ../Doc/howto/functional.rst:1119 msgid "Revision History and Acknowledgements" -msgstr "" +msgstr "Historique des modifications et remerciements" #: ../Doc/howto/functional.rst:1121 msgid "" @@ -1210,31 +1504,43 @@ msgid "" "Ian Bicking, Nick Coghlan, Nick Efford, Raymond Hettinger, Jim Jewett, Mike " "Krell, Leandro Lameiro, Jussi Salmela, Collin Winter, Blake Winton." msgstr "" +"L'auteur souhaiterait remercier les personnes suivantes pour leurs " +"suggestions, leurs corrections et leur aide sur les premières versions de " +"cet article : Ian Bicking, Nick Coghlan, Nick Efford, Raymond Hettinger, Jim " +"Jewett, Mike Krell, Leandro Lameiro, Jussi Salmela, Collin Winter, Blake " +"Winton." #: ../Doc/howto/functional.rst:1126 msgid "Version 0.1: posted June 30 2006." -msgstr "" +msgstr "Version 0.1 : publiée le 30 juin 2006." #: ../Doc/howto/functional.rst:1128 msgid "Version 0.11: posted July 1 2006. Typo fixes." -msgstr "" +msgstr "Version 0.11 : publiée le 1er juillet 2006. Correction orthographique." #: ../Doc/howto/functional.rst:1130 msgid "" "Version 0.2: posted July 10 2006. Merged genexp and listcomp sections into " "one. Typo fixes." msgstr "" +"Version 0.2 : publiée le 10 juillet 2006. Fusion des sections *genexp* et " +"*listcomp*. Correction orthographique." #: ../Doc/howto/functional.rst:1133 msgid "" "Version 0.21: Added more references suggested on the tutor mailing list." msgstr "" +"Version 0.21 : ajout de plusieurs références suggérées sur la liste de " +"diffusion *tutor*." #: ../Doc/howto/functional.rst:1135 msgid "" "Version 0.30: Adds a section on the ``functional`` module written by Collin " "Winter; adds short section on the operator module; a few other edits." msgstr "" +"Version 0.30 : ajout d'une section sur le module ``functional`` écrite par " +"Collin Winter ; ajout d'une courte section sur le module ``operator`` ; " +"quelques autres modifications." #: ../Doc/howto/functional.rst:1140 msgid "References" @@ -1242,7 +1548,7 @@ msgstr "Références" #: ../Doc/howto/functional.rst:1143 msgid "General" -msgstr "" +msgstr "Général" #: ../Doc/howto/functional.rst:1145 msgid "" @@ -1254,6 +1560,13 @@ msgid "" "approaches described in these chapters are applicable to functional-style " "Python code." msgstr "" +"**Structure and Interpretation of Computer Programs** par Harold Abelson et " +"Gerald Jay Sussman avec Julie Sussman. Disponible à l'adresse https://" +"mitpress.mit.edu/sicp/. Ce livre est un classique en informatique. Les " +"chapitres 2 et 3 présentent l'utilisation des séquences et des flux pour " +"organiser le flot de données dans un programme. Les exemples du livre " +"utilisent le langage Scheme mais la plupart des approches décrites dans ces " +"chapitres s'appliquent au style fonctionnel de Python." #: ../Doc/howto/functional.rst:1153 msgid "" @@ -1261,25 +1574,33 @@ msgid "" "functional programming that uses Java examples and has a lengthy historical " "introduction." msgstr "" +"http://www.defmacro.org/ramblings/fp.html : une présentation générale à la " +"programmation fonctionnelle avec une longue introduction historique et des " +"exemples en Java." #: ../Doc/howto/functional.rst:1156 msgid "" "https://en.wikipedia.org/wiki/Functional_programming: General Wikipedia " "entry describing functional programming." msgstr "" +"https://fr.wikipedia.org/wiki/Programmation_fonctionnelle : l'entrée " +"Wikipédia qui décrit la programmation fonctionnelle." #: ../Doc/howto/functional.rst:1159 msgid "https://en.wikipedia.org/wiki/Coroutine: Entry for coroutines." msgstr "" +"https://fr.wikipedia.org/wiki/Coroutine : l'entrée pour les coroutines." #: ../Doc/howto/functional.rst:1161 msgid "" "https://en.wikipedia.org/wiki/Currying: Entry for the concept of currying." msgstr "" +"https://fr.wikipedia.org/wiki/Curryfication : l'entrée pour le concept de " +"curryfication (création d'applications partielles)." #: ../Doc/howto/functional.rst:1164 msgid "Python-specific" -msgstr "" +msgstr "Spécifique à Python" #: ../Doc/howto/functional.rst:1166 msgid "" @@ -1288,6 +1609,10 @@ msgid "" "text processing, in the section titled \"Utilizing Higher-Order Functions in " "Text Processing\"." msgstr "" +"http://gnosis.cx/TPiP/ : le premier chapitre du livre de David Mertz :title-" +"reference:`Text Processing in Python` présente l'utilisation de la " +"programmation fonctionnelle pour le traitement de texte dans la section « " +"Utilisation des fonctions d'ordre supérieur pour le traitement de texte »." #: ../Doc/howto/functional.rst:1171 msgid "" @@ -1305,22 +1630,24 @@ msgstr "" #: ../Doc/howto/functional.rst:1180 msgid "Python documentation" -msgstr "" +msgstr "Documentation Python" #: ../Doc/howto/functional.rst:1182 msgid "Documentation for the :mod:`itertools` module." -msgstr "" +msgstr "Documentation du module :mod:`itertools`." #: ../Doc/howto/functional.rst:1184 msgid "Documentation for the :mod:`operator` module." -msgstr "" +msgstr "Documentation du module :mod:`operator`." #: ../Doc/howto/functional.rst:1186 msgid ":pep:`289`: \"Generator Expressions\"" -msgstr "" +msgstr ":pep:`289`: *\"Generator Expressions\"*" #: ../Doc/howto/functional.rst:1188 msgid "" ":pep:`342`: \"Coroutines via Enhanced Generators\" describes the new " "generator features in Python 2.5." msgstr "" +":pep:`342`: *\"Coroutines via Enhanced Generators\"* décrit les nouvelles " +"fonctionnalités des générateurs en Python 2.5." diff --git a/howto/logging.po b/howto/logging.po index a80ea3bd..6e02c78b 100644 --- a/howto/logging.po +++ b/howto/logging.po @@ -1041,6 +1041,8 @@ msgid "" "Creating a logging config file and reading it using the :func:`fileConfig` " "function." msgstr "" +"Créer un fichier de configuration de `logging` et le lire en employant la " +"fonction :func:`fileConfig`." #: ../Doc/howto/logging.rst:559 msgid "" @@ -1481,6 +1483,9 @@ msgid "" ":class:`~handlers.TimedRotatingFileHandler` instances send messages to disk " "files, rotating the log file at certain timed intervals." msgstr "" +"Les instances de :class:`~handlers.TimedRotatingFileHandler` envoient des " +"messages aux fichiers de disque, en permutant le fichier journal à " +"intervalles réguliers." #: ../Doc/howto/logging.rst:887 msgid "" diff --git a/howto/pyporting.po b/howto/pyporting.po index 4d1c73d9..a9620ad8 100644 --- a/howto/pyporting.po +++ b/howto/pyporting.po @@ -18,11 +18,11 @@ msgstr "" #: ../Doc/howto/pyporting.rst:5 msgid "Porting Python 2 Code to Python 3" -msgstr "" +msgstr "Portage de code Python 2 vers Python 3" #: ../Doc/howto/pyporting.rst:7 msgid "Brett Cannon" -msgstr "" +msgstr "Brett Cannon" #: ../Doc/howto/pyporting.rst:0 msgid "Abstract" @@ -35,12 +35,18 @@ msgid "" "Python. This guide is meant to help you figure out how best to support both " "Python 2 & 3 simultaneously." msgstr "" +"Python 3 étant le futur de Python tandis que Python 2 est encore activement " +"utilisé, il est préférable de faire en sorte que votre projet soit " +"disponible pour les deux versions majeures de Python. Ce guide est destiné à " +"vous aider à comprendre comment gérer simultanément Python 2 & 3." #: ../Doc/howto/pyporting.rst:16 msgid "" "If you are looking to port an extension module instead of pure Python code, " "please see :ref:`cporting-howto`." msgstr "" +"Si vous cherchez à porter un module d'extension plutôt que du pur Python, " +"veuillez consulter :ref:`cporting-howto`." #: ../Doc/howto/pyporting.rst:19 msgid "" @@ -53,16 +59,20 @@ msgid "" "For help with porting, you can email the python-porting_ mailing list with " "questions." msgstr "" +"Vous pouvez solliciter par courriel l'aide de la liste de diffusion python-" +"porting_ pour vos questions liées au portage." #: ../Doc/howto/pyporting.rst:26 msgid "The Short Explanation" -msgstr "" +msgstr "La version courte" #: ../Doc/howto/pyporting.rst:28 msgid "" "To make your project be single-source Python 2/3 compatible, the basic steps " "are:" msgstr "" +"Afin de rendre votre projet compatible Python 2/3 avec le même code source, " +"les étapes de base sont :" #: ../Doc/howto/pyporting.rst:31 msgid "" @@ -75,11 +85,13 @@ msgid "" "Make sure you have good test coverage (coverage.py_ can help; ``pip install " "coverage``)" msgstr "" +"S'assurer d'une bonne couverture des tests (coverage.py_ peut aider ; ``pip " +"install coverage``)" #: ../Doc/howto/pyporting.rst:35 ../Doc/howto/pyporting.rst:114 #: ../Doc/howto/pyporting.rst:369 msgid "Learn the differences between Python 2 & 3" -msgstr "" +msgstr "Apprendre les différences entre Python 2 et 3" #: ../Doc/howto/pyporting.rst:36 msgid "" @@ -98,6 +110,9 @@ msgid "" "Use caniusepython3_ to find out which of your dependencies are blocking your " "use of Python 3 (``pip install caniusepython3``)" msgstr "" +"Utiliser caniusepython3_ pour déterminer quelles sont, parmi les dépendances " +"que vous utilisez, celles qui bloquent votre utilisation de Python 3 (``pip " +"install caniusepython3``)" #: ../Doc/howto/pyporting.rst:42 msgid "" @@ -105,6 +120,10 @@ msgid "" "integration to make sure you stay compatible with Python 2 & 3 (tox_ can " "help test against multiple versions of Python; ``pip install tox``)" msgstr "" +"Une fois que vos dépendances ne sont plus un obstacle, utiliser " +"l'intégration continue pour s'assurer que votre code demeure compatible " +"Python 2 & 3 (tox_ peut aider à tester la comptabilité de sources avec " +"plusieurs versions de Python; ``pip install tox``)" #: ../Doc/howto/pyporting.rst:46 msgid "" @@ -134,12 +153,21 @@ msgid "" "lower-level work is now mostly done for you and thus can at least benefit " "from the automated changes immediately." msgstr "" +"Un autre point important est que la modernisation de votre code Python 2 " +"pour le rendre compatible Python 3 est pratiquement automatique. Bien qu'il " +"soit possible d'avoir à effectuer des changements d'API compte-tenu de la " +"clarification de la gestion des données textuelles et binaires dans Python " +"3, le travail de bas niveau est en grande partie fait pour vous et vous " +"pouvez ainsi bénéficiez de ces modifications automatiques immédiatement." #: ../Doc/howto/pyporting.rst:66 msgid "" "Keep those key points in mind while you read on about the details of porting " "your code to support Python 2 & 3 simultaneously." msgstr "" +"Gardez ces points-clés en tête pendant que vous lisez les détails ci-dessous " +"concernant le portage de votre code vers une compatibilité simultanée Python " +"2 et 3." #: ../Doc/howto/pyporting.rst:71 msgid "Drop support for Python 2.5 and older (at least)" @@ -176,6 +204,8 @@ msgstr "" msgid "" "Make sure you specify the proper version support in your ``setup.py`` file" msgstr "" +"Assurez vous de spécifier la bonne version supportée dans le fichier ``setup." +"py``" #: ../Doc/howto/pyporting.rst:94 msgid "" @@ -186,10 +216,16 @@ msgid "" "minor version of Python that you do support, e.g. ``Programming Language :: " "Python :: 2.7``." msgstr "" +"Votre fichier ``setup.py`` devrait contenir le bon `trove classifier`_ " +"spécifiant les versions de Python avec lesquelles vous êtes compatible. " +"Comme votre projet ne supporte pas encore Python 3, vous devriez au moins " +"spécifier ``Programming Language :: Python :: 2 :: Only``. Dans l'idéal vous " +"devriez indiquer chaque version majeure/mineure de Python que vous gérez, " +"par exemple ``Programming Language :: Python :: 2.7``." #: ../Doc/howto/pyporting.rst:102 msgid "Have good test coverage" -msgstr "" +msgstr "Obtenir une bonne couverture de code" #: ../Doc/howto/pyporting.rst:104 msgid "" @@ -213,10 +249,18 @@ msgid "" "and the `Porting to Python 3`_ book (which is free online). There is also a " "handy `cheat sheet`_ from the Python-Future project." msgstr "" +"Une fois que votre code est bien testé, vous êtes prêt à démarrer votre " +"portage vers Python 3 ! Mais afin de comprendre comment votre code va " +"changer et à quoi s'intéresser spécifiquement pendant que vous codez, vous " +"aurez sûrement envie de découvrir quels sont les changements introduits par " +"Python 3 par rapport à Python 2. Pour atteindre cet objectif, les deux " +"meilleurs moyens sont de lire le document `\"What's New\"`_ de chaque " +"version de Python 3 et le livre `Porting to Python 3`_ (gratuit en ligne). " +"Il y a également une `cheat sheet`_ très pratique du projet Python-Future." #: ../Doc/howto/pyporting.rst:126 msgid "Update your code" -msgstr "" +msgstr "Mettre à jour votre code" #: ../Doc/howto/pyporting.rst:128 msgid "" @@ -242,6 +286,16 @@ msgid "" "transform your application code knowing that any tests which fail is a " "translation failure." msgstr "" +"Indépendamment de l'outil sur lequel se porte votre choix, celui-ci mettra à " +"jour votre code afin qu'il puisse être exécuté par Python 3 tout en " +"maintenant sa compatibilité avec la version de Python 2 dont vous êtes " +"parti. En fonction du niveau de prudence que vous visez, vous pouvez " +"exécuter l'outil sur votre suite de test d'abord puis inspecter visuellement " +"la différence afin de vous assurer que la transformation est exacte. Après " +"avoir transformé votre suite de test et vérifié que tous les tests " +"s'exécutent comme attendu, vous pouvez transformer le code de votre " +"application avec l'assurance que chaque test qui échoue correspond à un " +"échec de traduction." #: ../Doc/howto/pyporting.rst:146 msgid "" @@ -256,6 +310,18 @@ msgid "" "watch out for which can be considered large issues that may be hard to debug " "if not watched for." msgstr "" +"Malheureusement les outils ne peuvent pas automatiser tous les changements " +"requis pour permettre à votre code de s'exécuter sous Python 3 et il y a " +"donc quelques points sur lesquels vous devrez travailler manuellement afin " +"d'atteindre la compatibilité totale Python 3 (les étapes nécessaires peuvent " +"varier en fonction de l'outil utilisé). Lisez la documentation de l'outil " +"que vous avez choisi afin d'identifier ce qu'il corrige par défaut et ce qui " +"peut être appliqué de façon optionnelle afin de savoir ce qui sera (ou non) " +"corrigé pour vous ou ce que vous devrez modifier vous-même (par exemple, le " +"remplacement ``io.open()`` plutôt que la fonction native ``open()`` est " +"inactif par défaut dans *Modernize*). Heureusement, il n'y a que quelques " +"points à surveiller qui peuvent réellement être considérés comme des " +"problèmes difficiles à déboguer si vous n'y prêtez pas attention." #: ../Doc/howto/pyporting.rst:157 msgid "Division" @@ -271,16 +337,27 @@ msgid "" "Q`` flag. If you have not been doing this then you will need to go through " "your code and do two things:" msgstr "" +"Dans Python 3, ``5 / 2 == 2.5`` et non ``2``; toutes les divisions entre des " +"valeurs ``int`` renvoient un ``float``. Ce changement était en réalité " +"planifié depuis Python 2.2, publié en 2002. Depuis cette date, les " +"utilisateurs ont été encouragés à ajouter ``from __future__ import " +"division`` à tous les fichiers utilisant les opérateurs ``/`` et ``//`` ou à " +"exécuter l'interpréteur avec l'option ``-Q``. Si vous n'avez pas suivi cette " +"recommandation, vous devrez manuellement modifier votre code et effectuer " +"deux changements :" #: ../Doc/howto/pyporting.rst:167 msgid "Add ``from __future__ import division`` to your files" -msgstr "" +msgstr "Ajouter ``from __future__ import division`` à vos fichiers" #: ../Doc/howto/pyporting.rst:168 msgid "" "Update any division operator as necessary to either use ``//`` to use floor " "division or continue using ``/`` and expect a float" msgstr "" +"Remplacer tous les opérateurs de division par ``//`` pour la division " +"entière, le cas échant, ou utiliser ``/`` et vous attendre à un résultat " +"flottant" #: ../Doc/howto/pyporting.rst:171 msgid "" @@ -291,7 +368,7 @@ msgstr "" #: ../Doc/howto/pyporting.rst:176 msgid "Text versus binary data" -msgstr "" +msgstr "Texte et données binaires" #: ../Doc/howto/pyporting.rst:178 msgid "" @@ -304,6 +381,16 @@ msgid "" "supporting multiple languages as APIs wouldn't bother explicitly supporting " "``unicode`` when they claimed text data support." msgstr "" +"Dans Python 2, il était possible d'utiliser le type ``str`` pour du texte et " +"pour des données binaires. Malheureusement cet amalgame entre deux concepts " +"différents peut conduire à du code fragile pouvant parfois fonctionner pour " +"les deux types de données et parfois non. Cela a également conduit à des API " +"confuses si les auteurs ne déclaraient pas explicitement que quelque chose " +"qui acceptait ``str`` était compatible avec du texte ou des données binaires " +"et pas un seul des deux types. Cela a compliqué la situation pour les " +"personnes devant gérer plusieurs langages avec des API qui ne se " +"préoccupaient pas de la gestion de ``unicode`` lorsqu'elles affirmaient être " +"compatibles avec des données au format texte." #: ../Doc/howto/pyporting.rst:187 msgid "" @@ -338,11 +425,11 @@ msgstr "" #: ../Doc/howto/pyporting.rst:212 msgid "**Text data**" -msgstr "" +msgstr "**Format texte**" #: ../Doc/howto/pyporting.rst:212 msgid "**Binary data**" -msgstr "" +msgstr "**Format binaire**" #: ../Doc/howto/pyporting.rst:214 msgid "__mod__ (``%`` operator)" @@ -350,27 +437,27 @@ msgstr "" #: ../Doc/howto/pyporting.rst:216 msgid "\\" -msgstr "" +msgstr "\\" #: ../Doc/howto/pyporting.rst:216 msgid "decode" -msgstr "" +msgstr "decode" #: ../Doc/howto/pyporting.rst:218 msgid "encode" -msgstr "" +msgstr "encode" #: ../Doc/howto/pyporting.rst:220 msgid "format" -msgstr "" +msgstr "format" #: ../Doc/howto/pyporting.rst:222 msgid "isdecimal" -msgstr "" +msgstr "isdecimal" #: ../Doc/howto/pyporting.rst:224 msgid "isnumeric" -msgstr "" +msgstr "isnumeric" #: ../Doc/howto/pyporting.rst:227 msgid "" @@ -381,6 +468,14 @@ msgid "" "possible. This allows your code to work with only text internally and thus " "eliminates having to keep track of what type of data you are working with." msgstr "" +"Vous pouvez rendre le problème plus simple à gérer en réalisant les " +"opérations d'encodage et de décodage entre données binaires et texte aux " +"extrémités de votre code. Cela signifie que lorsque vous recevez du texte " +"dans un format binaire, vous devez immédiatement le décoder. À l'inverse si " +"votre code doit transmettre du texte sous forme binaire, encodez-le le plus " +"tard possible. Cela vous permet de ne manipuler que du texte à l'intérieur " +"de votre code et permet de ne pas se préoccuper du type des données sur " +"lesquelles vous travaillez." #: ../Doc/howto/pyporting.rst:234 msgid "" @@ -419,6 +514,16 @@ msgid "" "back: ``str(b'3') == b'3'``. But in Python 3 you get the string " "representation of the bytes object: ``str(b'3') == \"b'3'\"``." msgstr "" +"Les constructeurs des types ``str`` et ``bytes`` possèdent une sémantique " +"différente pour les mêmes arguments sous Python 2 et 3. Passer un entier à " +"``bytes`` sous Python 2 produit une représentation de cet entier en chaîne " +"de caractères : ``bytes(3) == '3'``. Mais sous Python 3, fournir un argument " +"entier à ``bytes`` produit un objet *bytes* de la longueur de l'entier " +"spécifié, rempli par des octets nuls : ``bytes(3) == b'\\x00\\x00\\x00'``. " +"La même prudence est nécessaire lorsque vous passez un objet *bytes* à " +"``str``. En Python 2, vous récupérez simplement l'objet *bytes* initial : " +"``str(b'3') == b'3'``. Mais en Python 3, vous récupérez la représentation en " +"chaîne de caractères de l'objet *bytes* : ``str(b'3') == \"b'3'\"``." #: ../Doc/howto/pyporting.rst:262 msgid "" @@ -431,14 +536,25 @@ msgid "" "``six.indexbytes()`` which will return an integer like in Python 3: ``six." "indexbytes(b'123', 1)``." msgstr "" +"Enfin, l'indiçage des données binaires exige une manipulation prudente (bien " +"que le découpage, ou *slicing* en anglais, ne nécessite pas d'attention " +"particulière). En Python 2, ``b'123'[1] == b'2'`` tandis qu'en Python 3 " +"``b'123'[1] == 50``. Puisque les données binaires ne sont simplement qu'une " +"collection de nombres en binaire, Python 3 renvoie la valeur entière de " +"l'octet indicé. Mais en Python 2, étant donné que ``bytes == str``, " +"l'indiçage renvoie une tranche de longueur 1 de *bytes*. Le projet six_ " +"dispose d'une fonction appelée ``six.indexbytes()`` qui renvoie un entier " +"comme en Python 3 : ``six.indexbytes(b'123', 1)``." #: ../Doc/howto/pyporting.rst:271 msgid "To summarize:" -msgstr "" +msgstr "Pour résumer :" #: ../Doc/howto/pyporting.rst:273 msgid "Decide which of your APIs take text and which take binary data" msgstr "" +"Décidez lesquelles de vos API travaillent sur du texte et lesquelles " +"travaillent sur des données binaires" #: ../Doc/howto/pyporting.rst:274 msgid "" @@ -446,6 +562,10 @@ msgid "" "and code for binary data works with ``bytes`` in Python 2 (see the table " "above for what methods you cannot use for each type)" msgstr "" +"Assurez vous que votre code travaillant sur du texte fonctionne aussi avec " +"le type ``unicode`` et que le code travaillant sur du binaire fonctionne " +"avec le type ``bytes`` en Python 2 (voir le tableau ci-dessus pour la liste " +"des méthodes utilisables par chaque type)" #: ../Doc/howto/pyporting.rst:277 msgid "" @@ -458,12 +578,16 @@ msgid "" "Decode binary data to text as soon as possible, encode text as binary data " "as late as possible" msgstr "" +"Décodez les données binaires en texte dès que possible, encodez votre texte " +"au format binaire le plus tard possible" #: ../Doc/howto/pyporting.rst:281 msgid "" "Open files using :func:`io.open` and make sure to specify the ``b`` mode " "when appropriate" msgstr "" +"Ouvrez les fichiers avec la fonction :func:`io.open` et assurez-vous de " +"spécifier le mode ``b`` le cas échéant" #: ../Doc/howto/pyporting.rst:283 msgid "Be careful when indexing binary data" @@ -471,7 +595,7 @@ msgstr "" #: ../Doc/howto/pyporting.rst:286 msgid "Prevent compatibility regressions" -msgstr "" +msgstr "Prévenir les régressions de compatibilité" #: ../Doc/howto/pyporting.rst:288 msgid "" @@ -480,12 +604,19 @@ msgid "" "Python 3. This is especially true if you have a dependency which is blocking " "you from actually running under Python 3 at the moment." msgstr "" +"Une fois votre code traduit pour être compatible avec Python 3, vous devez " +"vous assurer que votre code n'a pas régressé ou qu'il ne fonctionne pas sous " +"Python 3. Ceci est particulièrement important si une de vos dépendances vous " +"empêche de réellement exécuter le code sous Python 3 pour le moment." #: ../Doc/howto/pyporting.rst:293 msgid "" "To help with staying compatible, any new modules you create should have at " "least the following block of code at the top of it::" msgstr "" +"Afin de vous aider à maintenir la compatibilité, nous préconisons que tous " +"les nouveaux modules que vous créez aient au moins le bloc de code suivant " +"en en-tête : ::" #: ../Doc/howto/pyporting.rst:301 msgid "" @@ -494,6 +625,11 @@ msgid "" "warnings into errors with ``-Werror`` then you can make sure that you don't " "accidentally miss a warning." msgstr "" +"Vous pouvez également lancer Python 2 avec le paramètre ``-3`` afin d'être " +"alerté en cas de divers problèmes de compatibilité que votre code déclenche " +"durant son exécution. Si vous transformez les avertissements en erreur avec " +"``-Werror``, vous pouvez être certain que ne passez pas accidentellement à " +"côté d'un avertissement." #: ../Doc/howto/pyporting.rst:307 msgid "" @@ -504,10 +640,17 @@ msgid "" "does require you only support Python 2.7 and Python 3.4 or newer as that is " "Pylint's minimum Python version support." msgstr "" +"Vous pouvez également utiliser le projet Pylint_ et son option ``--py3k`` " +"afin de modifier votre code pour recevoir des avertissements lorsque celui-" +"ci dévie de la compatibilité Python 3. Cela vous évite par ailleurs " +"d'appliquer Modernize_ ou Futurize_ sur votre code régulièrement pour " +"détecter des régressions liées à la compatibilité. Cependant cela nécessite " +"de votre part le support de Python 2.7 et Python 3.4 ou ultérieur étant " +"donné qu'il s'agit de la version minimale gérée par Pylint." #: ../Doc/howto/pyporting.rst:316 msgid "Check which dependencies block your transition" -msgstr "" +msgstr "Vérifier quelles dépendances empêchent la migration" #: ../Doc/howto/pyporting.rst:318 msgid "" @@ -527,10 +670,17 @@ msgid "" "manually check your dependencies and to be notified quickly when you can " "start running on Python 3." msgstr "" +"Le projet fournit également du code intégrable dans votre suite de test qui " +"déclenchera un échec de test lorsque plus aucune de vos dépendances n'est " +"bloquante pour l'utilisation de Python 3. Cela vous permet de ne pas avoir à " +"vérifier manuellement vos dépendances et d'être notifié rapidement quand " +"vous pouvez exécuter votre application avec Python 3." #: ../Doc/howto/pyporting.rst:331 msgid "Update your ``setup.py`` file to denote Python 3 compatibility" msgstr "" +"Mettre à jour votre fichier ``setup.py`` pour spécifier la compatibilité " +"avec Python 3" #: ../Doc/howto/pyporting.rst:333 msgid "" @@ -540,10 +690,16 @@ msgid "" "that you support Python 2 **and** 3. Ideally you will also want to add " "classifiers for each major/minor version of Python you now support." msgstr "" +"Une fois que votre code fonctionne sous Python 3, vous devez mettre à jour " +"vos classeurs dans votre ``setup.py`` pour inclure ``Programming Language :: " +"Python :: 3`` et non seulement le support de Python 2. Cela signifiera à " +"quiconque utilise votre code que vous gérez Python 2 **et** 3. Dans l'idéal " +"vous devrez aussi ajouter une mention pour chaque version majeure/mineure de " +"Python que vous supportez désormais." #: ../Doc/howto/pyporting.rst:341 msgid "Use continuous integration to stay compatible" -msgstr "" +msgstr "Utiliser l'intégration continue pour maintenir la compatibilité" #: ../Doc/howto/pyporting.rst:343 msgid "" @@ -553,6 +709,12 @@ msgid "" "integrate tox with your continuous integration system so that you never " "accidentally break Python 2 or 3 support." msgstr "" +"Une fois que vous êtes en mesure d'exécuter votre code sous Python 3, vous " +"devrez vous assurer que celui-ci fonctionne toujours pour Python 2 & 3. tox_ " +"est vraisemblablement le meilleur outil pour exécuter vos tests avec " +"plusieurs interpréteurs Python. Vous pouvez alors intégrer *tox* à votre " +"système d'intégration continue afin de ne jamais accidentellement casser " +"votre gestion de Python 2 ou 3." #: ../Doc/howto/pyporting.rst:349 msgid "" @@ -571,6 +733,11 @@ msgid "" "don't accidentally break Python 2 or 3 compatibility regardless of which " "version you typically run your tests under while developing." msgstr "" +"Et c'est à peu près tout ! Une fois ceci fait, votre code source est " +"compatible avec Python 2 et 3 simultanément. Votre suite de test est " +"également en place de telle sorte que vous ne cassiez pas la compatibilité " +"Python 2 ou 3 indépendamment de la version que vous utilisez pendant le " +"développement." #: ../Doc/howto/pyporting.rst:362 msgid "Dropping Python 2 support completely" diff --git a/howto/sockets.po b/howto/sockets.po index 2bd180bb..990823b2 100644 --- a/howto/sockets.po +++ b/howto/sockets.po @@ -553,7 +553,7 @@ msgstr "" #: ../Doc/howto/sockets.rst:395 msgid "Performance" -msgstr "" +msgstr "Performances" #: ../Doc/howto/sockets.rst:397 msgid "" diff --git a/howto/unicode.po b/howto/unicode.po index f77b2ee4..37c001b2 100644 --- a/howto/unicode.po +++ b/howto/unicode.po @@ -427,6 +427,8 @@ msgid "" "Now that you've learned the rudiments of Unicode, we can look at Python's " "Unicode features." msgstr "" +"Maintenant que vous avez appris les rudiments de l'Unicode, nous pouvons " +"regarder les fonctionnalités Unicode de Python." #: ../Doc/howto/unicode.rst:236 msgid "The Unicode Type" @@ -538,7 +540,7 @@ msgstr "" #: ../Doc/howto/unicode.rst:374 msgid "Unicode Literals in Python Source Code" -msgstr "" +msgstr "Littéraux Unicode dans le code source Python" #: ../Doc/howto/unicode.rst:376 msgid "" @@ -573,6 +575,10 @@ msgid "" "which would display the accented characters naturally, and have the right " "characters used at runtime." msgstr "" +"Idéalement, vous devriez être capable d'écrire des littéraux dans l'encodage " +"naturel de votre langue. Vous pourriez alors éditer le code source de " +"Python avec votre éditeur favori qui affiche les caractères accentués " +"naturellement, et a les bons caractères utilisés au moment de l'exécution." #: ../Doc/howto/unicode.rst:407 msgid "" @@ -589,6 +595,12 @@ msgid "" "special; they have no significance to Python but are a convention. Python " "looks for ``coding: name`` or ``coding=name`` in the comment." msgstr "" +"La syntaxe s'inspire de la notation d'Emacs pour spécifier les variables " +"locales à un fichier. *Emacs* supporte de nombreuses variables différentes, " +"mais Python ne gère que *coding*. Les symboles ``-*-`` indiquent à Emacs " +"que le commentaire est spécial ; ils n'ont aucune signification pour Python " +"mais sont une convention. Python cherche ``coding: name`` ou " +"``coding=name`` dans le commentaire." #: ../Doc/howto/unicode.rst:423 msgid "" @@ -609,7 +621,7 @@ msgstr "" #: ../Doc/howto/unicode.rst:450 msgid "Unicode Properties" -msgstr "" +msgstr "Propriétés Unicode" #: ../Doc/howto/unicode.rst:452 msgid "" @@ -626,6 +638,8 @@ msgid "" "The following program displays some information about several characters, " "and prints the numeric value of one particular character::" msgstr "" +"Le programme suivant affiche des informations sur plusieurs caractères et " +"affiche la valeur numérique d'un caractère particulier ::" #: ../Doc/howto/unicode.rst:473 msgid "When run, this prints::" @@ -650,11 +664,11 @@ msgstr "" #: ../Doc/howto/unicode.rst:497 msgid "The documentation for the :mod:`unicodedata` module." -msgstr "" +msgstr "La documentation du module :mod:`unicodedata`." #: ../Doc/howto/unicode.rst:499 msgid "The documentation for the :mod:`codecs` module." -msgstr "" +msgstr "La documentation du module :mod:`codecs`." #: ../Doc/howto/unicode.rst:501 msgid "" @@ -666,7 +680,7 @@ msgstr "" #: ../Doc/howto/unicode.rst:508 msgid "Reading and Writing Unicode Data" -msgstr "" +msgstr "Lecture et écriture de données Unicode" #: ../Doc/howto/unicode.rst:510 msgid "" @@ -674,6 +688,10 @@ msgid "" "is input/output. How do you get Unicode strings into your program, and how " "do you convert Unicode into a form suitable for storage or transmission?" msgstr "" +"Une fois que vous avez écrit du code qui fonctionne avec des données " +"Unicode, le problème suivant concerne les entrées/sorties. Comment obtenir " +"des chaînes Unicode dans votre programme et comment convertir les chaînes " +"Unicode dans une forme appropriée pour le stockage ou la transmission ?" #: ../Doc/howto/unicode.rst:514 msgid "" @@ -683,6 +701,13 @@ msgid "" "Unicode data, for example. Many relational databases also support Unicode-" "valued columns and can return Unicode values from an SQL query." msgstr "" +"Il est possible que vous n'ayez rien à faire en fonction de vos sources " +"d'entrée et des destinations de vos données de sortie ; il convient de " +"vérifier si les bibliothèques utilisées dans votre application gèrent " +"l'Unicode nativement. Par exemple, les analyseurs XML renvoient souvent des " +"données Unicode. De nombreuses bases de données relationnelles prennent " +"également en charge les colonnes encodées en Unicode et peuvent renvoyer des " +"valeurs Unicode à partir d'une requête SQL." #: ../Doc/howto/unicode.rst:520 msgid "" @@ -733,13 +758,15 @@ msgstr "" #: ../Doc/howto/unicode.rst:553 msgid "Reading Unicode from a file is therefore simple::" -msgstr "" +msgstr "Lire de l'Unicode à partir d'un fichier est donc simple ::" #: ../Doc/howto/unicode.rst:560 msgid "" "It's also possible to open files in update mode, allowing both reading and " "writing::" msgstr "" +"Il est également possible d'ouvrir des fichiers en mode « mise à jour », " +"permettant à la fois la lecture et l'écriture ::" #: ../Doc/howto/unicode.rst:569 msgid "" @@ -756,7 +783,7 @@ msgstr "" #: ../Doc/howto/unicode.rst:580 msgid "Unicode filenames" -msgstr "" +msgstr "Noms de fichiers Unicode" #: ../Doc/howto/unicode.rst:582 msgid "" @@ -778,12 +805,20 @@ msgid "" "writing, you can usually just provide the Unicode string as the filename, " "and it will be automatically converted to the right encoding for you::" msgstr "" +"La fonction :func:`sys.getfilesystemencoding` renvoie l'encodage à utiliser " +"sur votre système actuel, au cas où vous voudriez faire l'encodage " +"manuellement, mais il n'y a pas vraiment de raisons de s'embêter avec ça. " +"Lors de l'ouverture d'un fichier pour la lecture ou l'écriture, vous pouvez " +"généralement simplement fournir la chaîne Unicode comme nom de fichier et " +"elle est automatiquement convertie à l'encodage qui convient ::" #: ../Doc/howto/unicode.rst:602 msgid "" "Functions in the :mod:`os` module such as :func:`os.stat` will also accept " "Unicode filenames." msgstr "" +"Les fonctions du module :mod:`os` telles que :func:`os.stat` acceptent " +"également les noms de fichiers Unicode." #: ../Doc/howto/unicode.rst:605 msgid "" @@ -800,27 +835,31 @@ msgstr "" #: ../Doc/howto/unicode.rst:622 msgid "will produce the following output:" -msgstr "" +msgstr "produit la sortie suivante :" #: ../Doc/howto/unicode.rst:630 msgid "" "The first list contains UTF-8-encoded filenames, and the second list " "contains the Unicode versions." msgstr "" +"La première liste contient les noms de fichiers encodés en UTF-8 et la " +"seconde contient les versions Unicode." #: ../Doc/howto/unicode.rst:636 msgid "Tips for Writing Unicode-aware Programs" -msgstr "" +msgstr "Conseils pour écrire des programmes compatibles Unicode" #: ../Doc/howto/unicode.rst:638 msgid "" "This section provides some suggestions on writing software that deals with " "Unicode." msgstr "" +"Cette section fournit quelques suggestions sur l'écriture de logiciels qui " +"traitent de l'Unicode." #: ../Doc/howto/unicode.rst:641 msgid "The most important tip is:" -msgstr "" +msgstr "Le conseil le plus important est:" #: ../Doc/howto/unicode.rst:643 msgid "" @@ -892,7 +931,7 @@ msgstr "" #: ../Doc/howto/unicode.rst:698 msgid "Revision History and Acknowledgements" -msgstr "" +msgstr "Historique des modifications et remerciements" #: ../Doc/howto/unicode.rst:700 msgid "" diff --git a/library/base64.po b/library/base64.po index acefacea..0a23257d 100644 --- a/library/base64.po +++ b/library/base64.po @@ -128,6 +128,13 @@ msgid "" "purposes the default is ``None``, so that 0 and 1 are not allowed in the " "input." msgstr "" +"La :rfc:`3548` autorise une correspondance optionnelle du chiffre 0 (zéro) " +"vers la lettre O (/o/) ainsi que du chiffre 1 (un) vers soit la lettre I (/" +"i/) ou la lettre L (/l/). L'argument optionnel *map01*, lorsqu'il diffère de " +"``None``, spécifie en quelle lettre le chiffre 1 doit être transformé " +"(lorsque *map01* n'est pas ``None``, le chiffre 0 est toujours transformé en " +"la lettre O). Pour des raisons de sécurité, le défaut est ``None``, de telle " +"sorte que 0 et 1 ne sont pas autorisés dans l'entrée." #: ../Doc/library/base64.rst:100 msgid "" @@ -211,9 +218,14 @@ msgid "" "Mechanisms for Specifying and Describing the Format of Internet Message " "Bodies" msgstr "" +":rfc:`1521` — MIME (*Multipurpose Internet Mail Extensions*) *Part One: " +"Mechanisms for Specifying and Describing the Format of Internet Message " +"Bodies*" #: ../Doc/library/base64.rst:174 msgid "" "Section 5.2, \"Base64 Content-Transfer-Encoding,\" provides the definition " "of the base64 encoding." msgstr "" +"La Section 5.2, \"*Base64 Content-Transfer-Encoding*\", donne la définition " +"de l'encodage base64." diff --git a/library/contextlib.po b/library/contextlib.po index 2df42c18..69ea837f 100644 --- a/library/contextlib.po +++ b/library/contextlib.po @@ -31,6 +31,9 @@ msgid "" "`with` statement. For more information see also :ref:`typecontextmanager` " "and :ref:`context-managers`." msgstr "" +"Ce module fournit des utilitaires pour les tâches impliquant le mot-clé :" +"keyword:`with`. Pour plus d'informations voir aussi :ref:" +"`typecontextmanager` et :ref:`context-managers`." #: ../Doc/library/contextlib.rst:18 msgid "Functions provided:" @@ -42,6 +45,10 @@ msgid "" "function for :keyword:`with` statement context managers, without needing to " "create a class or separate :meth:`__enter__` and :meth:`__exit__` methods." msgstr "" +"Cette fonction est un :term:`decorator` qui peut être utilisé pour définir " +"une fonction fabriquant des gestionnaires de contexte à utiliser avec :" +"keyword:`with`, sans nécessiter de créer une classe ou des méthodes :meth:" +"`__enter__` et :meth:`__exit__` séparées." #: ../Doc/library/contextlib.rst:27 msgid "" @@ -141,16 +148,20 @@ msgid "" "Return a context manager that closes *thing* upon completion of the block. " "This is basically equivalent to::" msgstr "" +"Renvoie un gestionnaire de contexte qui ferme *thing* à la fin du bloc. " +"C'est essentiellement équivalent à ::" #: ../Doc/library/contextlib.rst:123 msgid "And lets you write code like this::" -msgstr "" +msgstr "Et cela vous permet d'écrire du code tel que ::" #: ../Doc/library/contextlib.rst:132 msgid "" "without needing to explicitly close ``page``. Even if an error occurs, " "``page.close()`` will be called when the :keyword:`with` block is exited." msgstr "" +"sans besoin de fermer explicitement ``page``. Même si une erreur survient, " +"``page.close()`` est appelée à la fermeture du bloc :keyword:`with`." #: ../Doc/library/contextlib.rst:139 msgid ":pep:`343` - The \"with\" statement" diff --git a/library/curses.po b/library/curses.po index 5f2ccc99..4da0cd3d 100644 --- a/library/curses.po +++ b/library/curses.po @@ -1783,7 +1783,7 @@ msgstr "``KEY_CLOSE``" #: ../Doc/library/curses.rst:1345 msgid "Close" -msgstr "" +msgstr "*Close*" #: ../Doc/library/curses.rst:1347 msgid "``KEY_COMMAND``" @@ -1799,7 +1799,7 @@ msgstr "``KEY_COPY``" #: ../Doc/library/curses.rst:1349 msgid "Copy" -msgstr "" +msgstr "*Copy*" #: ../Doc/library/curses.rst:1351 msgid "``KEY_CREATE``" @@ -1823,7 +1823,7 @@ msgstr "``KEY_EXIT``" #: ../Doc/library/curses.rst:1355 msgid "Exit" -msgstr "" +msgstr "*Exit*" #: ../Doc/library/curses.rst:1357 msgid "``KEY_FIND``" @@ -1903,7 +1903,7 @@ msgstr "``KEY_REDO``" #: ../Doc/library/curses.rst:1375 msgid "Redo" -msgstr "" +msgstr "*Redo*" #: ../Doc/library/curses.rst:1377 msgid "``KEY_REFERENCE``" @@ -1951,7 +1951,7 @@ msgstr "``KEY_SAVE``" #: ../Doc/library/curses.rst:1387 msgid "Save" -msgstr "" +msgstr "*Save*" #: ../Doc/library/curses.rst:1389 msgid "``KEY_SBEG``" @@ -2199,7 +2199,7 @@ msgstr "``KEY_UNDO``" #: ../Doc/library/curses.rst:1449 msgid "Undo" -msgstr "" +msgstr "*Undo*" #: ../Doc/library/curses.rst:1451 msgid "``KEY_MOUSE``" diff --git a/library/dis.po b/library/dis.po index 5d1a4aff..6a1a1504 100644 --- a/library/dis.po +++ b/library/dis.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/dis.rst:2 msgid ":mod:`dis` --- Disassembler for Python bytecode" -msgstr "" +msgstr ":mod:`dis` – Désassembleur pour le code intermédiaire de Python" #: ../Doc/library/dis.rst:7 msgid "**Source code:** :source:`Lib/dis.py`" @@ -31,6 +31,10 @@ msgid "" "is defined in the file :file:`Include/opcode.h` and used by the compiler and " "the interpreter." msgstr "" +"La bibliothèque :mod:`dis` supporte l'analyse du :term:`bytecode` CPython " +"en le désassemblant. Le code intermédiaire CPython, que cette bibliothèque " +"prend en paramètre, est défini dans le fichier :file:`Include/opcode.h` et " +"est utilisé par le compilateur et l'interpréteur." #: ../Doc/library/dis.rst:18 msgid "" @@ -42,7 +46,7 @@ msgstr "" #: ../Doc/library/dis.rst:23 msgid "Example: Given the function :func:`myfunc`::" -msgstr "" +msgstr "Exemple : Etant donné la fonction :func:`myfunc` ::" #: ../Doc/library/dis.rst:28 msgid "" @@ -51,7 +55,7 @@ msgstr "" #: ../Doc/library/dis.rst:36 msgid "(The \"2\" is a line number)." -msgstr "" +msgstr "(Le \"2\" est un numéro de ligne)." #: ../Doc/library/dis.rst:38 msgid "The :mod:`dis` module defines the following functions and constants:" @@ -81,37 +85,40 @@ msgstr "" #: ../Doc/library/dis.rst:62 msgid "the line number, for the first instruction of each line" -msgstr "" +msgstr "le numéro de ligne, pour la première instruction de chaque ligne" #: ../Doc/library/dis.rst:63 msgid "the current instruction, indicated as ``-->``," -msgstr "" +msgstr "l'instruction en cours, indiquée par ``-->``," #: ../Doc/library/dis.rst:64 msgid "a labelled instruction, indicated with ``>>``," -msgstr "" +msgstr "une instruction libellée, indiquée par ``> >``," #: ../Doc/library/dis.rst:65 msgid "the address of the instruction," -msgstr "" +msgstr "l'adresse de l'instruction," #: ../Doc/library/dis.rst:66 msgid "the operation code name," -msgstr "" +msgstr "le nom de le code d'opération," #: ../Doc/library/dis.rst:67 msgid "operation parameters, and" -msgstr "" +msgstr "paramètres de l'opération, et" #: ../Doc/library/dis.rst:68 msgid "interpretation of the parameters in parentheses." -msgstr "" +msgstr "interprétation des paramètres entre parenthèses." #: ../Doc/library/dis.rst:70 msgid "" "The parameter interpretation recognizes local and global variable names, " "constant values, branch targets, and compare operators." msgstr "" +"L'interprétation du paramètre reconnaît les noms des variables locales et " +"globales, des valeurs constantes, des branchements cibles, et des opérateurs " +"de comparaison." #: ../Doc/library/dis.rst:76 msgid "" @@ -174,7 +181,7 @@ msgstr "" #: ../Doc/library/dis.rst:146 msgid "Python Bytecode Instructions" -msgstr "" +msgstr "Les instructions du code intermédiaire en Python" #: ../Doc/library/dis.rst:148 msgid "" diff --git a/library/functions.po b/library/functions.po index be796789..5bb97db5 100644 --- a/library/functions.po +++ b/library/functions.po @@ -815,7 +815,7 @@ msgstr "Équivalent à : ::" #: ../Doc/library/functions.rst:395 msgid "The *start* parameter was added." -msgstr "" +msgstr "Ajout du paramètre *start*." #: ../Doc/library/functions.rst:401 msgid "" diff --git a/library/getopt.po b/library/getopt.po index b53f7bac..0ca93e6c 100644 --- a/library/getopt.po +++ b/library/getopt.po @@ -19,6 +19,7 @@ msgstr "" #: ../Doc/library/getopt.rst:2 msgid ":mod:`getopt` --- C-style parser for command line options" msgstr "" +":mod:`getopt` – Analyseur de style C pour les options de ligne de commande" #: ../Doc/library/getopt.rst:8 msgid "**Source code:** :source:`Lib/getopt.py`" @@ -32,6 +33,12 @@ msgid "" "write less code and get better help and error messages should consider using " "the :mod:`argparse` module instead." msgstr "" +"Le module :mod:`getopt` est un analyseur pour les options de ligne de " +"commande dont l’API est conçue pour être familière aux utilisateurs de la " +"fonction C :c:func:`getopt`. Les utilisateurs qui ne connaissent pas la " +"fonction :c:func:`getopt` ou qui aimeraient écrire moins de code, obtenir " +"une meilleure aide et de meilleurs messages d’erreur devraient utiliser le " +"module :mod:`argparse`." #: ../Doc/library/getopt.rst:20 msgid "" @@ -41,10 +48,16 @@ msgid "" "and '``--``'). Long options similar to those supported by GNU software may " "be used as well via an optional third argument." msgstr "" +"Ce module aide les scripts à analyser les arguments de ligne de commande " +"contenus dans ``sys.argv``. Il prend en charge les mêmes conventions que la " +"fonction UNIX :c:func:`getopt` (y compris les significations spéciales des " +"arguments de la forme ``-`` et ``--``). De longues options similaires à " +"celles prises en charge par le logiciel GNU peuvent également être utilisées " +"via un troisième argument facultatif." #: ../Doc/library/getopt.rst:26 msgid "This module provides two functions and an exception:" -msgstr "" +msgstr "Ce module fournit deux fonctions et une exception :" #: ../Doc/library/getopt.rst:32 msgid "" @@ -62,6 +75,9 @@ msgid "" "arguments are considered also non-options. This is similar to the way non-" "GNU Unix systems work." msgstr "" +"Contrairement au :c:func:`getopt` GNU, après un argument n'appartenant pas à " +"une option, aucun argument ne sera considéré comme appartenant à une option. " +"Ceci est similaire à la façon dont les systèmes UNIX non-GNU fonctionnent." #: ../Doc/library/getopt.rst:44 msgid "" @@ -89,6 +105,17 @@ msgid "" "list in the same order in which they were found, thus allowing multiple " "occurrences. Long and short options may be mixed." msgstr "" +"La valeur de retour se compose de deux éléments : le premier est une liste " +"de paires ``(option, value)``, la deuxième est la liste des arguments de " +"programme laissés après que la liste d’options est été dépouillée (il s’agit " +"d’une tranche de fin de *args*). Chaque paire option-valeur retournée a " +"l’option comme premier élément, préfixée avec un trait d'union pour les " +"options courtes (par exemple, ``'-x'``) ou deux tirets pour les options " +"longues (par exemple, ``'--long-option'``), et l’argument option comme " +"deuxième élément, ou une chaîne vide si le option n’a aucun argument. Les " +"options se trouvent dans la liste dans l’ordre dans lequel elles ont été " +"trouvées, permettant ainsi plusieurs occurrences. Les options longues et " +"courtes peuvent être mélangées." #: ../Doc/library/getopt.rst:68 msgid "" @@ -97,6 +124,10 @@ msgid "" "intermixed. The :func:`getopt` function stops processing options as soon as " "a non-option argument is encountered." msgstr "" +"Cette fonction fonctionne comme :func:`getopt`, sauf que le mode de *scan* " +"GNU est utilisé par défaut. Cela signifie que les arguments option et non-" +"option peuvent être **intermixés**. La fonction :func:`getopt` arrête le " +"traitement des options dès qu’un argument de non-option est rencontré." #: ../Doc/library/getopt.rst:73 msgid "" @@ -104,6 +135,9 @@ msgid "" "environment variable :envvar:`POSIXLY_CORRECT` is set, then option " "processing stops as soon as a non-option argument is encountered." msgstr "" +"Si le premier caractère de la chaîne d’options est ``+``, ou si la variable " +"d’environnement :envvar:`POSIXLY_CORRECT` est définie, le traitement des " +"options s’arrête dès qu’un argument non-option est rencontré." #: ../Doc/library/getopt.rst:82 msgid "" @@ -115,6 +149,14 @@ msgid "" "give the error message and related option; if there is no specific option to " "which the exception relates, :attr:`opt` is an empty string." msgstr "" +"Cette exception est levée lorsqu’une option non reconnue est trouvée dans la " +"liste d’arguments ou lorsqu’une option nécessitant un argument n’en a pas " +"reçu. L’argument de l’exception est une chaîne de caractères indiquant la " +"cause de l’erreur. Pour les options longues, un argument donné à une option " +"qui n’en exige pas un entraîne également le levage de cette exception. Les " +"attributs :attr:`msg` et :attr:`opt` donnent le message d’erreur et l’option " +"connexe. S’il n’existe aucune option spécifique à laquelle l’exception se " +"rapporte, :attr:`opt` est une chaîne vide." #: ../Doc/library/getopt.rst:90 msgid "Introduced :exc:`GetoptError` as a synonym for :exc:`error`." @@ -122,19 +164,19 @@ msgstr "" #: ../Doc/library/getopt.rst:96 msgid "Alias for :exc:`GetoptError`; for backward compatibility." -msgstr "" +msgstr "Alias pour :exc:`GetoptError` ; pour la rétrocompatibilité." #: ../Doc/library/getopt.rst:98 msgid "An example using only Unix style options:" -msgstr "" +msgstr "Un exemple utilisant uniquement les options de style UNIX :" #: ../Doc/library/getopt.rst:110 msgid "Using long option names is equally easy:" -msgstr "" +msgstr "L’utilisation de noms d’options longs est tout aussi simple :" #: ../Doc/library/getopt.rst:123 msgid "In a script, typical usage is something like this::" -msgstr "" +msgstr "Dans un script, l’utilisation typique ressemble à ceci ::" #: ../Doc/library/getopt.rst:152 msgid "" @@ -142,11 +184,16 @@ msgid "" "code and more informative help and error messages by using the :mod:" "`argparse` module::" msgstr "" +"Notez qu’une interface de ligne de commande équivalente peut être produite " +"avec moins de code et des messages d’erreur et d’aide plus informatifs à " +"l’aide du module :mod:`argparse` module ::" #: ../Doc/library/getopt.rst:167 msgid "Module :mod:`argparse`" -msgstr "" +msgstr "Module :mod:`argparse`" #: ../Doc/library/getopt.rst:168 msgid "Alternative command line option and argument parsing library." msgstr "" +"Option de ligne de commande alternative et bibliothèque d’analyse " +"d’arguments." diff --git a/library/heapq.po b/library/heapq.po index 59ec4130..1f7557cb 100644 --- a/library/heapq.po +++ b/library/heapq.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/heapq.rst:2 msgid ":mod:`heapq` --- Heap queue algorithm" -msgstr "" +msgstr ":mod:`heapq` — File de priorité basée sur un tas" #: ../Doc/library/heapq.rst:13 msgid "**Source code:** :source:`Lib/heapq.py`" @@ -29,6 +29,8 @@ msgid "" "This module provides an implementation of the heap queue algorithm, also " "known as the priority queue algorithm." msgstr "" +"Ce module expose une implémentation de l'algorithme de file de priorité, " +"basée sur un tas." #: ../Doc/library/heapq.rst:20 msgid "" @@ -39,6 +41,13 @@ msgid "" "elements are considered to be infinite. The interesting property of a heap " "is that its smallest element is always the root, ``heap[0]``." msgstr "" +"Les tas sont des arbres binaires pour lesquels chaque valeur portée par un " +"nœud est inférieure ou égale à celle de ses deux fils. Cette implémentation " +"utilise des tableaux pour lesquels ``tas[k] <= tas[2*k+1]`` et ``tas[k] <= " +"tas[2*k+2]`` pour tout *k*, en commençant la numérotation à zéro. Pour " +"contenter l'opérateur de comparaison, les éléments inexistants sont " +"considérés comme porteur d'une valeur infinie. L'intérêt du tas est que son " +"plus petit élément est toujours la racine, ``tas[0]``." #: ../Doc/library/heapq.rst:27 msgid "" @@ -50,6 +59,13 @@ msgid "" "\"max heap\" is more common in texts because of its suitability for in-place " "sorting)." msgstr "" +"L'API ci-dessous diffère de la file de priorité classique par deux aspects : " +"(a) L'indiçage commence à zéro. Cela complexifie légèrement la relation " +"entre l'indice d'un nœud et les indices de ses fils mais est alignée avec " +"l'indiçage commençant à zéro que Python utilise. (b) La méthode *pop* " +"renvoie le plus petit élément et non le plus grand (appelé « tas-min » dans " +"les manuels scolaires ; le « tas-max » étant généralement plus courant dans " +"la littérature car il permet le classement sans tampon)." #: ../Doc/library/heapq.rst:34 msgid "" @@ -57,12 +73,18 @@ msgid "" "surprises: ``heap[0]`` is the smallest item, and ``heap.sort()`` maintains " "the heap invariant!" msgstr "" +"Ces deux points permettent d'aborder le tas comme une liste Python standard " +"sans surprise : ``heap[0]`` est le plus petit élément tandis que ``heap." +"sort()`` ne modifie pas le tas !" #: ../Doc/library/heapq.rst:38 msgid "" "To create a heap, use a list initialized to ``[]``, or you can transform a " "populated list into a heap via function :func:`heapify`." msgstr "" +"Pour créer un tas, utilisez une liste initialisée à ``[]`` ou bien utilisez " +"une liste existante et transformez la en tas à l'aide de la fonction :func:" +"`heapify`." #: ../Doc/library/heapq.rst:41 msgid "The following functions are provided:" @@ -71,6 +93,8 @@ msgstr "Les fonctions suivantes sont fournies :" #: ../Doc/library/heapq.rst:46 msgid "Push the value *item* onto the *heap*, maintaining the heap invariant." msgstr "" +"Introduit la valeur *item* dans le tas *heap*, en conservant l'invariance du " +"tas." #: ../Doc/library/heapq.rst:51 msgid "" @@ -78,6 +102,9 @@ msgid "" "invariant. If the heap is empty, :exc:`IndexError` is raised. To access " "the smallest item without popping it, use ``heap[0]``." msgstr "" +"Extraie le plus petit élément de *heap* en préservant l'invariant du tas. Si " +"le tas est vide, une exception :exc:`IndexError` est levée. Pour accéder au " +"plus petit élément sans le retirer, utilisez ``heap[0]``." #: ../Doc/library/heapq.rst:57 msgid "" @@ -85,10 +112,15 @@ msgid "" "*heap*. The combined action runs more efficiently than :func:`heappush` " "followed by a separate call to :func:`heappop`." msgstr "" +"Introduit l'élément *item* dans le tas, puis extraie le plus petit élément " +"de *heap*. Cette action combinée est plus efficace que :func:`heappush` " +"suivie par un appel séparé à :func:`heappop`." #: ../Doc/library/heapq.rst:65 msgid "Transform list *x* into a heap, in-place, in linear time." msgstr "" +"Transforme une liste *x* en un tas, sans utiliser de tampon et en temps " +"linéaire." #: ../Doc/library/heapq.rst:70 msgid "" @@ -96,6 +128,9 @@ msgid "" "*item*. The heap size doesn't change. If the heap is empty, :exc:" "`IndexError` is raised." msgstr "" +"Extraie le plus petit élément de *heap* et introduit le nouvel élément " +"*item*. La taille du tas ne change pas. Si le tas est vide, une exception :" +"exc:`IndexError` est levée." #: ../Doc/library/heapq.rst:73 msgid "" @@ -104,6 +139,10 @@ msgid "" "heap. The pop/push combination always returns an element from the heap and " "replaces it with *item*." msgstr "" +"Cette opération en une étape est plus efficace qu'un appel à :func:`heappop` " +"suivi d'un appel à :func:`heappush` et est plus appropriée lorsque le tas " +"est de taille fixe. La combinaison *pop*/*push* renvoie toujours un élément " +"du tas et le remplace par *item*." #: ../Doc/library/heapq.rst:78 msgid "" @@ -112,10 +151,15 @@ msgid "" "combination returns the smaller of the two values, leaving the larger value " "on the heap." msgstr "" +"La valeur renvoyée peut être plus grande que l'élément *item* ajouté. Si " +"cela n'est pas souhaitable, utilisez plutôt :func:`heappushpop` à la place. " +"Sa combinaison *push*/*pop* renvoie le plus petit élément des deux valeurs " +"et laisse la plus grande sur le tas." #: ../Doc/library/heapq.rst:84 msgid "The module also offers three general purpose functions based on heaps." msgstr "" +"Ce module contient également trois fonctions génériques utilisant les tas." #: ../Doc/library/heapq.rst:89 msgid "" @@ -123,6 +167,9 @@ msgid "" "timestamped entries from multiple log files). Returns an :term:`iterator` " "over the sorted values." msgstr "" +"Fusionne plusieurs entrées ordonnées en une unique sortie ordonnée (par " +"exemple, fusionne des entrées datées provenant de multiples journaux " +"applicatifs). Renvoie un :term:`iterator` sur les valeurs ordonnées." #: ../Doc/library/heapq.rst:93 msgid "" @@ -130,6 +177,9 @@ msgid "" "does not pull the data into memory all at once, and assumes that each of the " "input streams is already sorted (smallest to largest)." msgstr "" +"Similaire à ``sorted(itertools.chain(*iterables))`` mais renvoie un " +"itérable, ne stocke pas toutes les données en mémoire en une fois et suppose " +"que chaque flux d'entrée est déjà classé (en ordre croissant)." #: ../Doc/library/heapq.rst:102 msgid "" @@ -160,10 +210,16 @@ msgid "" "`max` functions. If repeated usage of these functions is required, consider " "turning the iterable into an actual heap." msgstr "" +"Les deux fonctions précédentes sont les plus efficaces pour des petites " +"valeurs de *n*. Pour de grandes valeurs, il est préférable d'utiliser la " +"fonction :func:`sorted`. En outre, lorsque ``n==1``, il est plus efficace " +"d'utiliser les fonctions natives :func:`min` et :func:`max`. Si vous devez " +"utiliser ces fonctions de façon répétée, il est préférable de transformer " +"l'itérable en tas." #: ../Doc/library/heapq.rst:134 msgid "Basic Examples" -msgstr "" +msgstr "Exemples simples" #: ../Doc/library/heapq.rst:136 msgid "" @@ -171,34 +227,47 @@ msgid "" "pushing all values onto a heap and then popping off the smallest values one " "at a time::" msgstr "" +"Un `tri par tas `_ peut être " +"implémenté en introduisant toutes les valeurs dans un tas puis en effectuant " +"l'extraction des éléments un par un ::" #: ../Doc/library/heapq.rst:149 msgid "" "This is similar to ``sorted(iterable)``, but unlike :func:`sorted`, this " "implementation is not stable." msgstr "" +"Ceci est similaire à ``sorted(iterable)`` mais, contrairement à :func:" +"`sorted`, cette implémentation n'est pas stable." #: ../Doc/library/heapq.rst:152 msgid "" "Heap elements can be tuples. This is useful for assigning comparison values " "(such as task priorities) alongside the main record being tracked::" msgstr "" +"Les éléments d'un tas peuvent être des n-uplets. C'est pratique pour " +"assigner des valeurs de comparaison (par exemple, des priorités de tâches) " +"en plus de l'élément qui est suivi ::" #: ../Doc/library/heapq.rst:165 msgid "Priority Queue Implementation Notes" -msgstr "" +msgstr "Notes d'implémentation de la file de priorité" #: ../Doc/library/heapq.rst:167 msgid "" "A `priority queue `_ is common " "use for a heap, and it presents several implementation challenges:" msgstr "" +"Une `file de priorité `_ est une application courante des tas et présente plusieurs défis " +"d'implémentation :" #: ../Doc/library/heapq.rst:170 msgid "" "Sort stability: how do you get two tasks with equal priorities to be " "returned in the order they were originally added?" msgstr "" +"Stabilité du classement : comment s'assurer que deux tâches avec la même " +"priorité sont renvoyées dans l'ordre de leur ajout ?" #: ../Doc/library/heapq.rst:173 msgid "" @@ -212,12 +281,16 @@ msgid "" "If the priority of a task changes, how do you move it to a new position in " "the heap?" msgstr "" +"Si la priorité d'une tâche change, comment la déplacer à sa nouvelle " +"position dans le tas ?" #: ../Doc/library/heapq.rst:180 msgid "" "Or if a pending task needs to be deleted, how do you find it and remove it " "from the queue?" msgstr "" +"Si une tâche en attente doit être supprimée, comment la trouver et la " +"supprimer de la file ?" #: ../Doc/library/heapq.rst:183 msgid "" @@ -227,6 +300,13 @@ msgid "" "returned in the order they were added. And since no two entry counts are the " "same, the tuple comparison will never attempt to directly compare two tasks." msgstr "" +"Une solution aux deux premiers problèmes consiste à stocker les entrées sous " +"forme de liste à 3 éléments incluant la priorité, le numéro d'ajout et la " +"tâche. Le numéro d'ajout sert à briser les égalités de telle sorte que deux " +"tâches avec la même priorité sont renvoyées dans l'ordre de leur insertion. " +"Puisque deux tâches ne peuvent jamais avoir le même numéro d'ajout, la " +"comparaison des triplets ne va jamais chercher à comparer des tâches entre " +"elles." #: ../Doc/library/heapq.rst:189 msgid "" @@ -234,6 +314,9 @@ msgid "" "changes to its priority or removing it entirely. Finding a task can be done " "with a dictionary pointing to an entry in the queue." msgstr "" +"Le problème restant consiste à trouver une tâche en attente et modifier sa " +"priorité ou la supprimer. Trouver une tâche peut être réalisé à l'aide d'un " +"dictionnaire pointant vers une entrée dans la file." #: ../Doc/library/heapq.rst:193 msgid "" @@ -245,7 +328,7 @@ msgstr "" #: ../Doc/library/heapq.rst:227 msgid "Theory" -msgstr "" +msgstr "Théorie" #: ../Doc/library/heapq.rst:229 msgid "" @@ -254,12 +337,19 @@ msgid "" "elements are considered to be infinite. The interesting property of a heap " "is that ``a[0]`` is always its smallest element." msgstr "" +"Les tas sont des tableaux pour lesquels ``a[k] <= a[2*k+1]`` et ``a[k] <= " +"a[2*k+2]`` pour tout *k* en comptant les éléments à partir de 0. Pour " +"simplifier la comparaison, les éléments inexistants sont considérés comme " +"étant infinis. L'intérêt des tas est que ``a[0]`` est toujours leur plus " +"petit élément." #: ../Doc/library/heapq.rst:234 msgid "" "The strange invariant above is meant to be an efficient memory " "representation for a tournament. The numbers below are *k*, not ``a[k]``::" msgstr "" +"L'invariant étrange ci-dessus est une représentation efficace en mémoire " +"d'un tournoi. Les nombres ci-dessous sont *k* et non ``a[k]`` ::" #: ../Doc/library/heapq.rst:247 msgid "" @@ -273,6 +363,17 @@ msgid "" "two cells it tops contain three different items, but the top cell \"wins\" " "over the two topped cells." msgstr "" +"Dans l'arbre ci-dessus, chaque nœud *k* a pour enfants ``2*k+1`` et ``2*k" +"+2``. Dans les tournois binaires habituels dans les compétitions sportives, " +"chaque nœud est le vainqueur des deux nœuds inférieurs et nous pouvons " +"tracer le chemin du vainqueur le long de l'arbre afin de voir qui étaient " +"ses adversaires. Cependant, dans de nombreuses applications informatiques de " +"ces tournois, nous n'avons pas besoin de produire l'historique du vainqueur. " +"Afin d'occuper moins de mémoire, on remplace le vainqueur lors de sa " +"promotion par un autre élément à un plus bas niveau. La règle devient alors " +"qu'un nœud et les deux nœuds qu'il chapeaute contiennent trois éléments " +"différents, mais le nœud supérieur « gagne » contre les deux nœuds " +"inférieurs." #: ../Doc/library/heapq.rst:256 msgid "" @@ -284,6 +385,15 @@ msgid "" "logarithmic on the total number of items in the tree. By iterating over all " "items, you get an O(n log n) sort." msgstr "" +"Si cet invariant de tas est vérifié à tout instant, alors l'élément à " +"l'indice 0 est le vainqueur global. L'algorithme le plus simple pour le " +"retirer et trouver le vainqueur « suivant » consiste à déplacer un perdant " +"(par exemple le nœud 30 dans le diagramme ci-dessus) à la position 0, puis à " +"faire redescendre cette nouvelle racine dans l'arbre en échangeant sa valeur " +"avec celle d'un de ses fils jusqu'à ce que l'invariant soit rétabli. Cette " +"approche a un coût logarithmique par rapport au nombre total d'éléments dans " +"l'arbre. En itérant sur tous les éléments, le classement s'effectue en O(n " +"log n) opérations." #: ../Doc/library/heapq.rst:263 msgid "" @@ -296,6 +406,16 @@ msgid "" "easily go into the heap. So, a heap is a good structure for implementing " "schedulers (this is what I used for my MIDI sequencer :-)." msgstr "" +"Une propriété agréable de cet algorithme est qu'il possible d'insérer " +"efficacement de nouveaux éléments en cours de classement, du moment que les " +"éléments insérés ne sont pas « meilleurs » que le dernier élément qui a été " +"extrait. Ceci s'avère très utile dans des simulations où l'arbre contient la " +"liste des événements arrivants et que la condition de « victoire » est le " +"plus petit temps d'exécution planifié. Lorsqu'un événement programme " +"l'exécution d'autres événements, ceux-ci sont planifiés pour le futur et " +"peuvent donc rejoindre le tas. Ainsi, le tas est une bonne structure pour " +"implémenter un ordonnanceur (et c'est ce que j'ai utilisé pour mon " +"séquenceur MIDI ☺)." #: ../Doc/library/heapq.rst:272 msgid "" @@ -305,6 +425,11 @@ msgid "" "average case. However, there are other representations which are more " "efficient overall, yet the worst cases might be terrible." msgstr "" +"Plusieurs structures ont été étudiées en détail pour implémenter des " +"ordonnanceurs et les tas sont bien adaptés : ils sont raisonnablement " +"rapides, leur vitesse est presque constante et le pire cas ne diffère pas " +"trop du cas moyen. S'il existe des représentations qui sont plus efficaces " +"en général, les pires cas peuvent être terriblement mauvais." #: ../Doc/library/heapq.rst:278 msgid "" @@ -319,6 +444,18 @@ msgid "" "which are twice the size of the memory for random input, and much better for " "input fuzzily ordered." msgstr "" +"Les tas sont également très utiles pour ordonner les données sur de gros " +"disques. Vous savez probablement qu'un gros tri implique la production de " +"séquences pré-classées (dont la taille est généralement liée à la quantité " +"de mémoire CPU disponible), suivie par une passe de fusion qui est " +"généralement organisée de façon très intelligente [#]_. Il est très " +"important que le classement initial produise des séquences les plus longues " +"possibles. Les tournois sont une bonne façon d'arriver à ce résultat. Si, en " +"utilisant toute la mémoire disponible pour stocker un tournoi, vous " +"remplacez et faites percoler les éléments qui s'avèrent acceptables pour la " +"séquence courante, vous produirez des séquences d'une taille égale au double " +"de la mémoire pour une entrée aléatoire et bien mieux pour une entrée " +"approximativement triée." #: ../Doc/library/heapq.rst:288 msgid "" @@ -330,12 +467,23 @@ msgid "" "the first heap is melting. When the first heap completely vanishes, you " "switch heaps and start a new run. Clever and quite effective!" msgstr "" +"Qui plus est, si vous écrivez l'élément 0 sur le disque et que vous recevez " +"en entrée un élément qui n'est pas adapté au tournoi actuel (parce que sa " +"valeur « gagne » par rapport à la dernière valeur de sortie), alors il ne " +"peut pas être stocké dans le tas donc la taille de ce dernier diminue. La " +"mémoire libérée peut être réutilisée immédiatement pour progressivement " +"construire un deuxième tas, qui croit à la même vitesse que le premier " +"décroît. Lorsque le premier tas a complètement disparu, vous échangez les " +"tas et démarrez une nouvelle séquence. Malin et plutôt efficace !" #: ../Doc/library/heapq.rst:296 msgid "" "In a word, heaps are useful memory structures to know. I use them in a few " "applications, and I think it is good to keep a 'heap' module around. :-)" msgstr "" +"Pour résumer, les tas sont des structures de données qu'il est bon de " +"connaître. Je les utilise dans quelques applications et je pense qu'il est " +"bon de garder le module *heap* sous le coude. ☺" #: ../Doc/library/heapq.rst:300 msgid "Footnotes" @@ -353,3 +501,14 @@ msgid "" "Believe me, real good tape sorts were quite spectacular to watch! From all " "times, sorting has always been a Great Art! :-)" msgstr "" +"Les algorithmes de répartition de charge pour les disques, courants de nos " +"jours, sont plus embêtants qu'utiles, en raison de la capacité des disques à " +"réaliser des accès aléatoires. Sur les périphériques qui ne peuvent faire " +"que de la lecture séquentielle, comme les gros lecteurs à bandes, le besoin " +"était différent et il fallait être malin pour s'assurer (bien à l'avance) " +"que chaque mouvement de bande serait le plus efficace possible (c'est-à-dire " +"participerait au mieux à l'« avancée » de la fusion). Certaines cassettes " +"pouvaient même lire à l'envers et cela était aussi utilisé pour éviter de " +"remonter dans le temps. Croyez-moi, les bons tris sur bandes étaient " +"spectaculaires à regarder ! Depuis la nuit des temps, trier a toujours été " +"le Grand Art ! ☺" diff --git a/library/idle.po b/library/idle.po index 366e4817..9306b21e 100644 --- a/library/idle.po +++ b/library/idle.po @@ -23,14 +23,18 @@ msgstr "IDLE" #: ../Doc/library/idle.rst:13 msgid "IDLE is Python's Integrated Development and Learning Environment." msgstr "" +"*IDLE* est l'environnement de développement et d'apprentissage intégré de " +"Python (*Integrated Development and Learning Environment*)." #: ../Doc/library/idle.rst:15 msgid "IDLE has the following features:" -msgstr "" +msgstr "*IDLE* a les fonctionnalités suivantes :" #: ../Doc/library/idle.rst:17 msgid "coded in 100% pure Python, using the :mod:`tkinter` GUI toolkit" msgstr "" +"codé à 100% en pur Python, en utilisant l'outil d'interfaçage graphique :mod:" +"`tkinter`" #: ../Doc/library/idle.rst:19 msgid "cross-platform: works mostly the same on Windows, Unix, and Mac OS X" @@ -41,32 +45,41 @@ msgid "" "Python shell window (interactive interpreter) with colorizing of code input, " "output, and error messages" msgstr "" +"Console Python (interpréteur interactif) avec coloration du code entré, des " +"sorties et des messages d'erreur" #: ../Doc/library/idle.rst:24 msgid "" "multi-window text editor with multiple undo, Python colorizing, smart " "indent, call tips, auto completion, and other features" msgstr "" +"éditeur de texte multi-fenêtres avec annulations multiples, coloration " +"Python, indentation automatique, aide pour les appels de fonction, " +"*autocomplétion*, parmi d'autres fonctionnalités" #: ../Doc/library/idle.rst:27 msgid "" "search within any window, replace within editor windows, and search through " "multiple files (grep)" msgstr "" +"recherche dans n'importe quelle fenêtre, remplacement dans une fenêtre " +"d'édition et recherche dans des fichiers multiples (*grep*)" #: ../Doc/library/idle.rst:30 msgid "" "debugger with persistent breakpoints, stepping, and viewing of global and " "local namespaces" msgstr "" +"débogueur avec points d'arrêt persistants, pas-à-pas et visualisation des " +"espaces de nommage locaux et globaux" #: ../Doc/library/idle.rst:33 msgid "configuration, browsers, and other dialogs" -msgstr "" +msgstr "configuration, navigateur et d'autres fenêtres de dialogue" #: ../Doc/library/idle.rst:36 msgid "Menus" -msgstr "" +msgstr "Menus" #: ../Doc/library/idle.rst:38 msgid "" @@ -85,63 +98,69 @@ msgstr "" #: ../Doc/library/idle.rst:48 msgid "File menu (Shell and Editor)" -msgstr "" +msgstr "Menu *File* (Console et Éditeur)" #: ../Doc/library/idle.rst:51 msgid "New File" -msgstr "" +msgstr "*New File*" #: ../Doc/library/idle.rst:51 msgid "Create a new file editing window." -msgstr "" +msgstr "Crée une nouvelle fenêtre d'édition." #: ../Doc/library/idle.rst:54 msgid "Open..." -msgstr "" +msgstr "*Open...*" #: ../Doc/library/idle.rst:54 msgid "Open an existing file with an Open dialog." msgstr "" +"Ouvre un fichier existant avec une fenêtre de dialogue pour l'ouverture." #: ../Doc/library/idle.rst:57 msgid "Recent Files" -msgstr "" +msgstr "*Recent Files*" #: ../Doc/library/idle.rst:57 msgid "Open a list of recent files. Click one to open it." msgstr "" +"Ouvre une liste des fichiers récents. Cliquez sur l'un d'eux pour l'ouvrir." #: ../Doc/library/idle.rst:60 msgid "Open Module..." -msgstr "" +msgstr "*Open Module...*" #: ../Doc/library/idle.rst:60 msgid "Open an existing module (searches sys.path)." -msgstr "" +msgstr "Ouvre un module existant (cherche dans *sys.path*)." #: ../Doc/library/idle.rst:68 msgid "Class Browser" -msgstr "" +msgstr "*Class Browser*" #: ../Doc/library/idle.rst:67 msgid "" "Show functions, classes, and methods in the current Editor file in a tree " "structure. In the shell, open a module first." msgstr "" +"Montre les fonctions, classes et méthodes dans une arborescence pour le " +"fichier en cours d'édition. Dans la console, ouvre d'abord un module." #: ../Doc/library/idle.rst:72 msgid "Path Browser" -msgstr "" +msgstr "*Path Browser*" #: ../Doc/library/idle.rst:71 msgid "" "Show sys.path directories, modules, functions, classes and methods in a tree " "structure." msgstr "" +"Affiche les dossiers de *sys.path*, les modules, fonctions, classes et " +"méthodes dans une arborescence." #: ../Doc/library/idle.rst:78 msgid "Save" -msgstr "" +msgstr "*Save*" #: ../Doc/library/idle.rst:75 msgid "" @@ -150,161 +169,180 @@ msgid "" "and after the window title. If there is no associated file, do Save As " "instead." msgstr "" +"Enregistre la fenêtre active sous le fichier associé, s'il existe. Les " +"fenêtres qui ont été modifiées depuis leur ouverture ou leur dernier " +"enregistrement ont un \\* avant et après le titre de la fenêtre. S'il n'y a " +"aucun fichier associé, exécute *Save As* à la place." #: ../Doc/library/idle.rst:82 msgid "Save As..." -msgstr "" +msgstr "*Save As...*" #: ../Doc/library/idle.rst:81 msgid "" "Save the current window with a Save As dialog. The file saved becomes the " "new associated file for the window." msgstr "" +"Enregistre la fenêtre active avec une fenêtre de dialogue d'enregistrement. " +"Le fichier enregistré devient le nouveau fichier associé pour cette fenêtre." #: ../Doc/library/idle.rst:86 msgid "Save Copy As..." -msgstr "" +msgstr "*Save Copy As...*" #: ../Doc/library/idle.rst:85 msgid "" "Save the current window to different file without changing the associated " "file." msgstr "" +"Enregistre la fenêtre active sous un fichier différent sans changer le " +"fichier associé." #: ../Doc/library/idle.rst:89 msgid "Print Window" -msgstr "" +msgstr "*Print Window*" #: ../Doc/library/idle.rst:89 msgid "Print the current window to the default printer." -msgstr "" +msgstr "Imprime la fenêtre active avec l'imprimante par défaut." #: ../Doc/library/idle.rst:92 msgid "Close" -msgstr "" +msgstr "*Close*" #: ../Doc/library/idle.rst:92 msgid "Close the current window (ask to save if unsaved)." -msgstr "" +msgstr "Ferme la fenêtre active (demande à enregistrer si besoin)." #: ../Doc/library/idle.rst:95 msgid "Exit" -msgstr "" +msgstr "*Exit*" #: ../Doc/library/idle.rst:95 msgid "Close all windows and quit IDLE (ask to save unsaved windows)." msgstr "" +"Ferme toutes les fenêtres et quitte *IDLE* (demande à enregistrer les " +"fenêtres non sauvegardées)." #: ../Doc/library/idle.rst:98 msgid "Edit menu (Shell and Editor)" -msgstr "" +msgstr "Menu *Edit* (console et éditeur)" #: ../Doc/library/idle.rst:102 msgid "Undo" -msgstr "" +msgstr "*Undo*" #: ../Doc/library/idle.rst:101 msgid "" "Undo the last change to the current window. A maximum of 1000 changes may " "be undone." msgstr "" +"Annule le dernier changement dans la fenêtre active. Un maximum de 1000 " +"changements peut être annulé." #: ../Doc/library/idle.rst:105 msgid "Redo" -msgstr "" +msgstr "*Redo*" #: ../Doc/library/idle.rst:105 msgid "Redo the last undone change to the current window." -msgstr "" +msgstr "Ré-applique le dernier changement annulé dans la fenêtre active." #: ../Doc/library/idle.rst:108 ../Doc/library/idle.rst:319 msgid "Cut" -msgstr "" +msgstr "*Cut*" #: ../Doc/library/idle.rst:108 ../Doc/library/idle.rst:319 msgid "" "Copy selection into the system-wide clipboard; then delete the selection." msgstr "" +"Copie la sélection dans le presse-papier global ; puis supprime la sélection." #: ../Doc/library/idle.rst:111 ../Doc/library/idle.rst:322 msgid "Copy" -msgstr "" +msgstr "*Copy*" #: ../Doc/library/idle.rst:111 ../Doc/library/idle.rst:322 msgid "Copy selection into the system-wide clipboard." -msgstr "" +msgstr "Copie la sélection dans le presse-papier global." #: ../Doc/library/idle.rst:114 ../Doc/library/idle.rst:325 msgid "Paste" -msgstr "" +msgstr "*Paste*" #: ../Doc/library/idle.rst:114 ../Doc/library/idle.rst:325 msgid "Insert contents of the system-wide clipboard into the current window." -msgstr "" +msgstr "Insère le contenu du presse-papier global dans la fenêtre active." #: ../Doc/library/idle.rst:116 msgid "The clipboard functions are also available in context menus." msgstr "" +"Les fonctions du presse-papier sont aussi disponibles dans les menus " +"contextuels." #: ../Doc/library/idle.rst:119 msgid "Select All" -msgstr "" +msgstr "*Select All*" #: ../Doc/library/idle.rst:119 msgid "Select the entire contents of the current window." -msgstr "" +msgstr "Sélectionne la totalité du contenu de la fenêtre active." #: ../Doc/library/idle.rst:122 msgid "Find..." -msgstr "" +msgstr "*Find...*" #: ../Doc/library/idle.rst:122 msgid "Open a search dialog with many options" -msgstr "" +msgstr "Ouvre une fenêtre de recherche avec de nombreuses options" #: ../Doc/library/idle.rst:125 msgid "Find Again" -msgstr "" +msgstr "*Find Again*" #: ../Doc/library/idle.rst:125 msgid "Repeat the last search, if there is one." -msgstr "" +msgstr "Répète la dernière recherche, s'il y en a une." #: ../Doc/library/idle.rst:128 msgid "Find Selection" -msgstr "" +msgstr "*Find Selection*" #: ../Doc/library/idle.rst:128 msgid "Search for the currently selected string, if there is one." -msgstr "" +msgstr "Cherche la chaîne sélectionnée, s'il y en a une." #: ../Doc/library/idle.rst:131 msgid "Find in Files..." -msgstr "" +msgstr "*Find in Files...*" #: ../Doc/library/idle.rst:131 msgid "Open a file search dialog. Put results in a new output window." msgstr "" +"Ouvre une fenêtre de recherche de fichiers. Présente les résultats dans une " +"nouvelle fenêtre d'affichage." #: ../Doc/library/idle.rst:134 msgid "Replace..." -msgstr "" +msgstr "*Replace...*" #: ../Doc/library/idle.rst:134 msgid "Open a search-and-replace dialog." -msgstr "" +msgstr "Ouvre une fenêtre de recherche et remplacement." #: ../Doc/library/idle.rst:137 msgid "Go to Line" -msgstr "" +msgstr "*Go to Line*" #: ../Doc/library/idle.rst:137 msgid "Move cursor to the line number requested and make that line visible." msgstr "" +"Déplace le curseur sur la ligne de numéro demandé et rend cette ligne " +"visible." #: ../Doc/library/idle.rst:141 msgid "Show Completions" -msgstr "" +msgstr "*Show Completions*" #: ../Doc/library/idle.rst:140 msgid "" @@ -314,17 +352,19 @@ msgstr "" #: ../Doc/library/idle.rst:145 msgid "Expand Word" -msgstr "" +msgstr "*Expand Word*" #: ../Doc/library/idle.rst:144 msgid "" "Expand a prefix you have typed to match a full word in the same window; " "repeat to get a different expansion." msgstr "" +"Complète un préfixe que vous avez saisi pour correspondre à un mot complet " +"de la même fenêtre ; recommencez pour obtenir un autre complément." #: ../Doc/library/idle.rst:149 msgid "Show call tip" -msgstr "" +msgstr "*Show call tip*" #: ../Doc/library/idle.rst:148 msgid "" @@ -334,87 +374,98 @@ msgstr "" #: ../Doc/library/idle.rst:152 msgid "Show surrounding parens" -msgstr "" +msgstr "*Show surrounding parens*" #: ../Doc/library/idle.rst:152 msgid "Highlight the surrounding parenthesis." -msgstr "" +msgstr "Surligne les parenthèses encadrantes." #: ../Doc/library/idle.rst:155 msgid "Format menu (Editor window only)" -msgstr "" +msgstr "Menu *Format* (fenêtre d'édition uniquement)" #: ../Doc/library/idle.rst:158 msgid "Indent Region" -msgstr "" +msgstr "*Indent Region*" #: ../Doc/library/idle.rst:158 msgid "Shift selected lines right by the indent width (default 4 spaces)." msgstr "" +"Décale les lignes sélectionnées vers la droite d'un niveau d'indentation (4 " +"espaces par défaut)." #: ../Doc/library/idle.rst:161 msgid "Dedent Region" -msgstr "" +msgstr "*Dedent Region*" #: ../Doc/library/idle.rst:161 msgid "Shift selected lines left by the indent width (default 4 spaces)." msgstr "" +"Décale les lignes sélectionnées vers la gauche d'un niveau d'indentation (4 " +"espaces par défaut)." #: ../Doc/library/idle.rst:164 msgid "Comment Out Region" -msgstr "" +msgstr "*Comment Out Region*" #: ../Doc/library/idle.rst:164 msgid "Insert ## in front of selected lines." -msgstr "" +msgstr "Insère ## devant les lignes sélectionnées." #: ../Doc/library/idle.rst:167 msgid "Uncomment Region" -msgstr "" +msgstr "*Uncomment Region*" #: ../Doc/library/idle.rst:167 msgid "Remove leading # or ## from selected lines." -msgstr "" +msgstr "Enlève les # ou ## au début des lignes sélectionnées." #: ../Doc/library/idle.rst:171 msgid "Tabify Region" -msgstr "" +msgstr "*Tabify Region*" #: ../Doc/library/idle.rst:170 msgid "" "Turn *leading* stretches of spaces into tabs. (Note: We recommend using 4 " "space blocks to indent Python code.)" msgstr "" +"Transforme les blocs d'espaces *au début des lignes* en tabulations. " +"(Note : Nous recommandons d'utiliser des blocs de 4 espaces pour indenter du " +"code Python.)" #: ../Doc/library/idle.rst:174 msgid "Untabify Region" -msgstr "" +msgstr "*Untabify Region*" #: ../Doc/library/idle.rst:174 msgid "Turn *all* tabs into the correct number of spaces." -msgstr "" +msgstr "Transforme *toutes* les tabulations en le bon nombre d'espaces." #: ../Doc/library/idle.rst:177 msgid "Toggle Tabs" -msgstr "" +msgstr "*Toggle Tabs*" #: ../Doc/library/idle.rst:177 msgid "Open a dialog to switch between indenting with spaces and tabs." msgstr "" +"Ouvre une boîte de dialogue permettant de passer des espaces aux tabulations " +"(et inversement) pour l'indentation." #: ../Doc/library/idle.rst:181 msgid "New Indent Width" -msgstr "" +msgstr "*New Indent Width*" #: ../Doc/library/idle.rst:180 msgid "" "Open a dialog to change indent width. The accepted default by the Python " "community is 4 spaces." msgstr "" +"Ouvre une boîte de dialogue pour changer la taille de l'indentation. La " +"valeur par défaut acceptée par la communauté Python est de 4 espaces." #: ../Doc/library/idle.rst:186 msgid "Format Paragraph" -msgstr "" +msgstr "*Format Paragraph*" #: ../Doc/library/idle.rst:184 msgid "" @@ -422,10 +473,14 @@ msgid "" "multiline string or selected line in a string. All lines in the paragraph " "will be formatted to less than N columns, where N defaults to 72." msgstr "" +"Reformate le paragraphe actif, délimité par des lignes vides, en un bloc de " +"commentaires, ou la chaîne de caractères multi-lignes ou ligne sélectionnée " +"en chaîne de caractères. Toutes les lignes du paragraphe seront formatées à " +"moins de N colonnes, avec N valant 72 par défaut." #: ../Doc/library/idle.rst:189 msgid "Strip trailing whitespace" -msgstr "" +msgstr "*Strip trailing whitespace*" #: ../Doc/library/idle.rst:189 msgid "" @@ -434,19 +489,19 @@ msgstr "" #: ../Doc/library/idle.rst:195 msgid "Run menu (Editor window only)" -msgstr "" +msgstr "Menu *Run* (fenêtre d'édition uniquement)" #: ../Doc/library/idle.rst:198 msgid "Python Shell" -msgstr "" +msgstr "Console Python" #: ../Doc/library/idle.rst:198 msgid "Open or wake up the Python Shell window." -msgstr "" +msgstr "Ouvre ou active la fenêtre de console Python." #: ../Doc/library/idle.rst:205 msgid "Check Module" -msgstr "" +msgstr "*Check Module*" #: ../Doc/library/idle.rst:201 msgid "" @@ -456,10 +511,16 @@ msgid "" "there is a syntax error, the approximate location is indicated in the Editor " "window." msgstr "" +"Vérifie la syntaxe du module actuellement ouvert dans la fenêtre d'édition. " +"Si le module n'a pas été enregistré, *IDLE* va soit demander à enregistrer à " +"l'utilisateur, soit enregistrer automatiquement, selon l'option sélectionnée " +"dans l'onglet *General* de la fenêtre de configuration d'*IDLE*. S'il y a " +"une erreur de syntaxe, l'emplacement approximatif est indiqué dans la " +"fenêtre d'édition." #: ../Doc/library/idle.rst:214 msgid "Run Module" -msgstr "" +msgstr "*Run Module*" #: ../Doc/library/idle.rst:208 msgid "" @@ -473,39 +534,41 @@ msgstr "" #: ../Doc/library/idle.rst:217 msgid "Shell menu (Shell window only)" -msgstr "" +msgstr "Menu Shell (fenêtre de console uniquement)" #: ../Doc/library/idle.rst:220 msgid "View Last Restart" -msgstr "" +msgstr "*View Last Restart*" #: ../Doc/library/idle.rst:220 msgid "Scroll the shell window to the last Shell restart." msgstr "" +"Fait défiler la fenêtre de console jusqu'au dernier redémarrage de la " +"console." #: ../Doc/library/idle.rst:223 msgid "Restart Shell" -msgstr "" +msgstr "*Restart Shell*" #: ../Doc/library/idle.rst:223 msgid "Restart the shell to clean the environment." -msgstr "" +msgstr "Redémarre la console pour nettoyer l'environnement." #: ../Doc/library/idle.rst:226 msgid "Interrupt Execution" -msgstr "" +msgstr "*Interrupt Execution*" #: ../Doc/library/idle.rst:226 msgid "Stop a running program." -msgstr "" +msgstr "Arrête un programme en cours d'exécution." #: ../Doc/library/idle.rst:229 msgid "Debug menu (Shell window only)" -msgstr "" +msgstr "Menu *Debug* (fenêtre de console uniquement)" #: ../Doc/library/idle.rst:236 msgid "Go to File/Line" -msgstr "" +msgstr "*Go to File/Line*" #: ../Doc/library/idle.rst:232 msgid "" @@ -515,10 +578,16 @@ msgid "" "and lines found by Find in Files. Also available in the context menu of the " "Shell window and Output windows." msgstr "" +"Cherche, sur la ligne active et la ligne en-dessous, un nom de fichier et un " +"numéro de ligne. Le cas échéant, ouvre le fichier s'il n'est pas encore " +"ouvert et montre la ligne. Utilisez ceci pour visualiser les lignes de code " +"source référencées dans un *traceback* d'exception et les lignes trouvées " +"par *Find in Files*. Également disponible dans le menu contextuel des " +"fenêtres de console et d'affichage." #: ../Doc/library/idle.rst:245 msgid "Debugger (toggle)" -msgstr "" +msgstr "*Debugger* ([dés]activer)" #: ../Doc/library/idle.rst:243 msgid "" @@ -529,30 +598,34 @@ msgstr "" #: ../Doc/library/idle.rst:249 msgid "Stack Viewer" -msgstr "" +msgstr "*Stack Viewer*" #: ../Doc/library/idle.rst:248 msgid "" "Show the stack traceback of the last exception in a tree widget, with access " "to locals and globals." msgstr "" +"Montre l'état de la pile au moment de la dernière erreur dans une " +"arborescence, avec accès aux variables locales et globales." #: ../Doc/library/idle.rst:252 msgid "Auto-open Stack Viewer" -msgstr "" +msgstr "*Auto-open Stack Viewer*" #: ../Doc/library/idle.rst:252 msgid "" "Toggle automatically opening the stack viewer on an unhandled exception." msgstr "" +"Active ou désactive l'ouverture automatique de l'afficheur de pile après une " +"erreur non gérée." #: ../Doc/library/idle.rst:255 msgid "Options menu (Shell and Editor)" -msgstr "" +msgstr "Menu *Options* (console et éditeur)" #: ../Doc/library/idle.rst:267 msgid "Configure IDLE" -msgstr "" +msgstr "*Configure IDLE*" #: ../Doc/library/idle.rst:258 msgid "" @@ -583,7 +656,7 @@ msgstr "" #: ../Doc/library/idle.rst:274 msgid "Window menu (Shell and Editor)" -msgstr "" +msgstr "Menu *Windows* (console et éditeur)" #: ../Doc/library/idle.rst:279 msgid "Zoom Height" @@ -604,19 +677,20 @@ msgstr "" #: ../Doc/library/idle.rst:285 msgid "Help menu (Shell and Editor)" -msgstr "" +msgstr "Menu *Help* (console et éditeur)" #: ../Doc/library/idle.rst:288 msgid "About IDLE" -msgstr "" +msgstr "About *IDLE*" #: ../Doc/library/idle.rst:288 msgid "Display version, copyright, license, credits, and more." msgstr "" +"Affiche la version, les copyrights, la licence, les crédits, entre autres." #: ../Doc/library/idle.rst:292 msgid "IDLE Help" -msgstr "" +msgstr "*IDLE Help*" #: ../Doc/library/idle.rst:291 msgid "" @@ -626,17 +700,19 @@ msgstr "" #: ../Doc/library/idle.rst:296 msgid "Python Docs" -msgstr "" +msgstr "*Python Docs*" #: ../Doc/library/idle.rst:295 msgid "" "Access local Python documentation, if installed, or start a web browser and " "open docs.python.org showing the latest Python documentation." msgstr "" +"Accède à la documentation Python locale, si installée, ou ouvre docs.python." +"org dans un navigateur pour afficher la documentation Python la plus récente." #: ../Doc/library/idle.rst:299 msgid "Turtle Demo" -msgstr "" +msgstr "*Turtle Demo*" #: ../Doc/library/idle.rst:299 msgid "Run the turtledemo module with example python code and turtle drawings." @@ -650,7 +726,7 @@ msgstr "" #: ../Doc/library/idle.rst:313 msgid "Context Menus" -msgstr "" +msgstr "Menus Contextuels" #: ../Doc/library/idle.rst:315 msgid "" @@ -665,22 +741,26 @@ msgid "" "the debugger. Breakpoints for a file are saved in the user's .idlerc " "directory." msgstr "" +"Les fenêtres d'édition ont aussi des fonctions de points d'arrêt. Les lignes " +"avec un point d'arrêt activé sont marquées. Les points d'arrêt n'ont d'effet " +"que lorsque l'exécution se déroule sous débogueur. Les points d'arrêt pour " +"un fichier sont enregistrés dans le dossier *.idlerc* de l'utilisateur." #: ../Doc/library/idle.rst:332 msgid "Set Breakpoint" -msgstr "" +msgstr "*Set Breakpoint*" #: ../Doc/library/idle.rst:332 msgid "Set a breakpoint on the current line." -msgstr "" +msgstr "Place un point d'arrêt sur la ligne active." #: ../Doc/library/idle.rst:335 msgid "Clear Breakpoint" -msgstr "" +msgstr "*Clear Breakpoint*" #: ../Doc/library/idle.rst:335 msgid "Clear the breakpoint on that line." -msgstr "" +msgstr "Enlève le point d'arrêt sur cette ligne." #: ../Doc/library/idle.rst:337 msgid "Shell and Output windows have the following." @@ -688,15 +768,15 @@ msgstr "" #: ../Doc/library/idle.rst:341 msgid "Go to file/line" -msgstr "" +msgstr "*Go to file/line*" #: ../Doc/library/idle.rst:340 msgid "Same as in Debug menu." -msgstr "" +msgstr "Même effet que dans le menu *Debug*." #: ../Doc/library/idle.rst:344 msgid "Editing and navigation" -msgstr "" +msgstr "Édition et navigation" #: ../Doc/library/idle.rst:346 msgid "" @@ -707,47 +787,54 @@ msgstr "" #: ../Doc/library/idle.rst:349 msgid ":kbd:`Backspace` deletes to the left; :kbd:`Del` deletes to the right" msgstr "" +":kbd:`Retour arrière` supprime à gauche ; :kbd:`Suppr` supprime à droite" #: ../Doc/library/idle.rst:351 msgid "" ":kbd:`C-Backspace` delete word left; :kbd:`C-Del` delete word to the right" msgstr "" +":kbd:`C-Retour arrière` supprime le mot à gauche ; :kbd:`C-Suppr` supprime " +"le mot à droite" #: ../Doc/library/idle.rst:353 msgid "Arrow keys and :kbd:`Page Up`/:kbd:`Page Down` to move around" msgstr "" +"Utilisez les touches flèche et :kbd:`Page Haut` / :kbd:`Page Bas` pour vous " +"déplacer" #: ../Doc/library/idle.rst:355 msgid ":kbd:`C-LeftArrow` and :kbd:`C-RightArrow` moves by words" msgstr "" +":kbd:`C-Flèche Gauche` et :kbd:`C-Flèche Droite` déplacent de mot en mot" #: ../Doc/library/idle.rst:357 msgid ":kbd:`Home`/:kbd:`End` go to begin/end of line" -msgstr "" +msgstr ":kbd:`Début`/:kbd:`Fin` vont au début / à la fin de la ligne" #: ../Doc/library/idle.rst:359 msgid ":kbd:`C-Home`/:kbd:`C-End` go to begin/end of file" -msgstr "" +msgstr ":kbd:`C-Début` / :kbd:`C-Fin` vont au début / à la fin du fichier" #: ../Doc/library/idle.rst:361 msgid "Some useful Emacs bindings are inherited from Tcl/Tk:" -msgstr "" +msgstr "Quelques raccourcis *Emacs* utiles sont hérités de *Tcl/Tk* :" #: ../Doc/library/idle.rst:363 msgid ":kbd:`C-a` beginning of line" -msgstr "" +msgstr ":kbd:`C-a` début de ligne" #: ../Doc/library/idle.rst:365 msgid ":kbd:`C-e` end of line" -msgstr "" +msgstr ":kbd:`C-e` fin de ligne" #: ../Doc/library/idle.rst:367 msgid ":kbd:`C-k` kill line (but doesn't put it in clipboard)" msgstr "" +":kbd:`C-k` supprime la ligne (mais ne la met pas dans le presse-papier)" #: ../Doc/library/idle.rst:369 msgid ":kbd:`C-l` center window around the insertion point" -msgstr "" +msgstr ":kbd:`C-l` centre la fenêtre autour du point d’insertion" #: ../Doc/library/idle.rst:371 msgid "" @@ -760,25 +847,32 @@ msgid "" ":kbd:`C-f` go forward one character without deleting (usually you can also " "use the cursor key for this)" msgstr "" +":kbd:`C-f` avance d'un caractère sans le supprimer (habituellement vous " +"pouvez également utiliser les touches flèches pour faire cela)" #: ../Doc/library/idle.rst:377 msgid "" ":kbd:`C-p` go up one line (usually you can also use the cursor key for this)" msgstr "" +":kbd:`C-p` remonte d'une ligne (habituellement vous pouvez également " +"utiliser les touches flèches pour faire cela)" #: ../Doc/library/idle.rst:380 msgid ":kbd:`C-d` delete next character" -msgstr "" +msgstr ":kbd:`C-d` supprime le caractère suivant" #: ../Doc/library/idle.rst:382 msgid "" "Standard keybindings (like :kbd:`C-c` to copy and :kbd:`C-v` to paste) may " "work. Keybindings are selected in the Configure IDLE dialog." msgstr "" +"Les raccourcis clavier standards (comme :kbd:`C-c` pour copier et :kbd:`C-v` " +"pour coller) peuvent fonctionner. Les raccourcis clavier sont sélectionnés " +"dans la fenêtre de configuration d'*IDLE*." #: ../Doc/library/idle.rst:387 msgid "Automatic indentation" -msgstr "" +msgstr "Indentation automatique" #: ../Doc/library/idle.rst:389 msgid "" @@ -796,13 +890,16 @@ msgstr "" #: ../Doc/library/idle.rst:399 msgid "Completions" -msgstr "" +msgstr "Complétions" #: ../Doc/library/idle.rst:401 msgid "" "Completions are supplied for functions, classes, and attributes of classes, " "both built-in and user-defined. Completions are also provided for filenames." msgstr "" +"Les complétions sont fournies pour les fonctions, classes et attributs de " +"classes incluses par défaut et celles définies par l'utilisateur. Les " +"complétions sont aussi fournies pour les noms de fichiers." #: ../Doc/library/idle.rst:405 msgid "" @@ -811,12 +908,19 @@ msgid "" "of those characters (plus zero or more other characters) a tab is typed the " "ACW will open immediately if a possible continuation is found." msgstr "" +"La fenêtre d'auto-complétion (*ACW*, *AutoCompleteWindow*) s'ouvre après un " +"délai prédéfini (deux secondes par défaut) après qu'un *\"*.\"** ou (dans " +"une chaîne) un os.sep est saisi. Si, après un de ces caractères " +"(éventuellement suivi d'autres caractères), une tabulation est saisie, " +"l'**ACW** s'ouvre immédiatement si une complétion compatible est trouvée." #: ../Doc/library/idle.rst:410 msgid "" "If there is only one possible completion for the characters entered, a :kbd:" "`Tab` will supply that completion without opening the ACW." msgstr "" +"S'il n'y a qu'une seule complétion possible pour le caractère saisi, un :kbd:" +"`Tab` fournit cette complétion sans ouvrir l'*ACW*." #: ../Doc/library/idle.rst:413 msgid "" @@ -837,6 +941,13 @@ msgid "" "will return or a double click. Cursor keys, Page Up/Down, mouse selection, " "and the scroll wheel all operate on the ACW." msgstr "" +"Si une chaîne de caractère est saisie, la sélection de l'*ACW* va à l'entrée " +"la plus proche de ces caractères. Saisir un :kbd:`Tab` saisit la plus longue " +"correspondance non ambiguë dans la console ou l'éditeur. Deux :kbd:`Tab` à " +"la suite fournissent la sélection de l'*ACW*, de la même manière que la " +"touche *\"Entrée\"* ou un double-clic. Les touches flèches, Page Haut/Bas, " +"la sélection à la souris et la molette de la souris fonctionnent tous sur " +"l'*ACW*." #: ../Doc/library/idle.rst:427 msgid "" @@ -844,10 +955,15 @@ msgid "" "after a '.', e.g. '_'. This allows access to modules with ``__all__`` set, " "or to class-private attributes." msgstr "" +"Les attributs *\"cachés\"* peuvent être atteints en saisissant le début d'un " +"nom caché après un *\"*.\"**, e.g.\"**_\"**. Ceci permet l'accès aux modules " +"utilisant ``__all__`` ou aux attributs privés des classes." #: ../Doc/library/idle.rst:431 msgid "Completions and the 'Expand Word' facility can save a lot of typing!" msgstr "" +"Les complétions et la fonctionnalité *\"*Expand Word*\"* peuvent vous faire " +"économiser beaucoup de temps !" #: ../Doc/library/idle.rst:433 msgid "" @@ -857,16 +973,24 @@ msgid "" "situation. Note that IDLE itself places quite a few modules in sys.modules, " "so much can be found by default, e.g. the re module." msgstr "" +"Les complétions sont actuellement limitées à ce qui est présent dans les " +"espaces de nommage. Les noms dans une fenêtre d'édition qui ne viennent pas " +"de ``__main__`` et :data:`sys.modules` ne sont pas trouvés. Exécutez votre " +"module avec vos importations pour corriger cette situation. Notez qu'*IDLE* " +"lui-même place quelques modules dans *sys.modules*, qui peuvent être donc " +"accédés par défaut, comme le module *re*." #: ../Doc/library/idle.rst:439 msgid "" "If you don't like the ACW popping up unbidden, simply make the delay longer " "or disable the extension." msgstr "" +"Si vous n'aimez pas que l'*ACW* s'affiche spontanément, vous pouvez " +"simplement augmenter le délai ou désactiver l'extension." #: ../Doc/library/idle.rst:443 msgid "Calltips" -msgstr "" +msgstr "Info-bulles" #: ../Doc/library/idle.rst:445 msgid "" @@ -884,6 +1008,10 @@ msgid "" "consists of all lines up the fifth line or the first blank line. These " "details may change." msgstr "" +"Une info-bulle contient la signature de la fonction et la première ligne de " +"la *docstring*. Pour les fonctions incluses par défaut sans signature " +"accessible, l'info-bulle contient toutes les lignes jusqu'à la cinquième " +"ligne ou la première ligne vide. Ces détails sont sujets à changement." #: ../Doc/library/idle.rst:456 msgid "" @@ -891,6 +1019,10 @@ msgid "" "into the user process, including those imported by Idle itself, and what " "definitions have been run, all since the last restart." msgstr "" +"L'ensemble des fonctions *accessibles* dépend des modules qui ont été " +"importés dans le processus utilisateur, y compris ceux importés par *IDLE* " +"lui-même et quelles définitions ont été exécutées, le tout depuis le dernier " +"redémarrage." #: ../Doc/library/idle.rst:460 msgid "" @@ -900,6 +1032,12 @@ msgid "" "Idle does not import turtle. The menu or shortcut do nothing either. Enter " "``import turtle`` and then ``turtle.write(`` will work." msgstr "" +"Par exemple, redémarrez la console et saisissez ``itertools.count(``. Une " +"info-bulle s'affiche parce que *IDLE* importe *itertools* dans le processus " +"utilisateur pour son propre usage (ceci pourrait changer). Saisissez " +"``turtle.write(`` et rien ne s'affiche. *IDLE* n'importe pas *turtle*. Le " +"menu ou le raccourci ne font rien non plus. Saisir ``import *turtle`` puis " +"``turtle.write(`` fonctionnera." #: ../Doc/library/idle.rst:466 msgid "" @@ -907,27 +1045,35 @@ msgid "" "might want to run a file after writing the import statements at the top, or " "immediately run an existing file before editing." msgstr "" +"Dans l'éditeur, les commandes d'importation n'ont pas d'effet jusqu'à ce que " +"le fichier soit exécuté. Vous pouvez exécuter un fichier après avoir écrit " +"les commandes d'importation au début, ou immédiatement exécuter un fichier " +"existant avant de l'éditer." #: ../Doc/library/idle.rst:471 msgid "Python Shell window" -msgstr "" +msgstr "Fenêtre de console Python" #: ../Doc/library/idle.rst:473 msgid ":kbd:`C-c` interrupts executing command" -msgstr "" +msgstr ":kbd:`C-c` interrompt l'exécution de la commande" #: ../Doc/library/idle.rst:475 msgid "" ":kbd:`C-d` sends end-of-file; closes window if typed at a ``>>>`` prompt" msgstr "" +":kbd:`C-d` envoie fin-de-fichier (*EOF*) ; cela ferme la fenêtre s'il est " +"saisi à une invite ``>>>``" #: ../Doc/library/idle.rst:477 msgid ":kbd:`Alt-/` (Expand word) is also useful to reduce typing" msgstr "" +":kbd:`Alt-/` (Compléter le mot) est également utile pour réduire la quantité " +"de texte saisie" #: ../Doc/library/idle.rst:479 msgid "Command history" -msgstr "" +msgstr "Historique des commandes" #: ../Doc/library/idle.rst:481 msgid "" @@ -942,10 +1088,11 @@ msgstr "" #: ../Doc/library/idle.rst:486 msgid ":kbd:`Return` while on any previous command retrieves that command" msgstr "" +":kbd:`Entrée` sur une des commandes précédentes récupère cette commande" #: ../Doc/library/idle.rst:490 msgid "Text colors" -msgstr "" +msgstr "Coloration du texte" #: ../Doc/library/idle.rst:492 msgid "" @@ -956,6 +1103,15 @@ msgid "" "``def``, strings, and comments. For any text window, these are the cursor " "(when present), found text (when possible), and selected text." msgstr "" +"*IDLE* affiche par défaut le texte en noir sur blanc mais colore le texte " +"qui possède une signification spéciale. Pour la console, ceci concerne les " +"sorties de la console et de l'utilisateur ainsi que les erreurs de " +"l'utilisateur. Pour le code Python, dans l'invite de commande de la console " +"ou sur un éditeur, ce sont les mots-clefs, noms de fonctions et de classes " +"incluses par défaut, les noms suivant ``class`` et ``def``, les chaînes de " +"caractères et les commentaires. Pour n'importe quelle fenêtre de texte, ce " +"sont le curseur (si présent), le texte trouvé (s'il y en a) et le texte " +"sélectionné." #: ../Doc/library/idle.rst:499 msgid "" @@ -964,10 +1120,15 @@ msgid "" "Highlighting tab. The marking of debugger breakpoint lines in the editor " "and text in popups and dialogs is not user-configurable." msgstr "" +"La coloration du texte est faite en arrière-plan, donc du texte non coloré " +"est parfois visible. Pour changer les couleurs, utilisez l'onglet " +"*Highlighting* de la fenêtre de configuration d'*IDLE*. Le marquage des " +"points d'arrêt du débogueur dans l'éditeur et du texte dans les dialogues " +"n'est pas configurable." #: ../Doc/library/idle.rst:506 msgid "Startup and code execution" -msgstr "" +msgstr "Démarrage et exécution du code" #: ../Doc/library/idle.rst:508 msgid "" @@ -980,6 +1141,14 @@ msgid "" "from the IDLE shell, or for executing import statements to import common " "modules." msgstr "" +"Quand il est démarré avec l'option ``-s``, *IDLE* exécutera le fichier " +"référencé par la variable d'environnement :envvar:`IDLE*STARTUP` ou :envvar:" +"`PYTHONSTARTUP`. *IDLE* cherche d'abord ``IDLESTARTUP`` ; si ``IDLESTARTUP`` " +"est présent, le fichier référencé est exécuté. Si ``IDLESTARTUP`` n'est pas " +"présent, alors *IDLE* cherche ``PYTHONSTARTUP``. Les fichiers référencés par " +"ces variables d'environnement sont de bons endroits pour stocker des " +"fonctions qui sont utilisées fréquemment depuis la console d'*IDLE* ou pour " +"exécuter des commandes d'importation des modules communs." #: ../Doc/library/idle.rst:516 msgid "" @@ -989,14 +1158,20 @@ msgid "" "will be executed in the Tk namespace, so this file is not useful for " "importing functions to be used from IDLE's Python shell." msgstr "" +"De plus, ``Tk`` charge lui aussi un fichier de démarrage s'il est présent. " +"Notez que le fichier de *Tk* est chargé sans condition. Ce fichier " +"additionnel est ``.Idle.py`` et est recherché dans le dossier personnel de " +"l'utilisateur. Les commandes dans ce fichier sont exécutées dans l'espace de " +"nommage de *Tk*, donc ce fichier n'est pas utile pour importer des fonctions " +"à utiliser depuis la console Python d'*IDLE*." #: ../Doc/library/idle.rst:524 msgid "Command line usage" -msgstr "" +msgstr "Utilisation de la ligne de commande" #: ../Doc/library/idle.rst:540 msgid "If there are arguments:" -msgstr "" +msgstr "S'il y a des arguments :" #: ../Doc/library/idle.rst:542 msgid "" @@ -1005,12 +1180,18 @@ msgid "" "No editor window is opened, even if that is the default set in the Options " "dialog." msgstr "" +"Si ``-``, ``-c`` ou ``-r`` sont utilisés, tous les arguments sont placés " +"dans ``sys.argv[1:...]`` et ``sys.argv[0]`` est assigné à `''``, ``'-c'``, " +"ou ``'-r'``. Aucune fenêtre d'édition n'est ouverte, même si c'est le " +"comportement par défaut fixé dans la fenêtre d'options." #: ../Doc/library/idle.rst:547 msgid "" "Otherwise, arguments are files opened for editing and ``sys.argv`` reflects " "the arguments passed to IDLE itself." msgstr "" +"Sinon, les arguments sont des fichiers ouverts pour édition et ``sys.argv`` " +"reflète les arguments passés à *IDLE* lui-même." #: ../Doc/library/idle.rst:552 msgid "IDLE-console differences" @@ -1045,7 +1226,7 @@ msgstr "" #: ../Doc/library/idle.rst:573 msgid "Running without a subprocess" -msgstr "" +msgstr "Exécution sans sous-processus" #: ../Doc/library/idle.rst:575 msgid "" @@ -1054,6 +1235,10 @@ msgid "" "externally visible and no data is sent to or received from the Internet. If " "firewall software complains anyway, you can ignore it." msgstr "" +"Par défaut *IDLE* exécute le code de l'utilisateur dans un sous-processus " +"séparé via un connecteur sur l'interface de la boucle locale. Cette " +"connexion n'est pas visible de l'extérieur et rien n'est envoyé ou reçu " +"d'Internet. Si un pare-feu s'en plaint quand même, vous pouvez l'ignorer." #: ../Doc/library/idle.rst:580 msgid "" @@ -1077,10 +1262,21 @@ msgid "" "these reasons, it is preferable to run IDLE with the default subprocess if " "at all possible." msgstr "" +"Si *IDLE* est démarré avec l'option *-n* de la ligne de commande, il " +"s'exécute dans un seul processus et ne crée pas de sous-processus pour " +"exécuter le serveur RPC d'exécution de Python. Ceci peut être utile si " +"Python ne peut pas créer de sous-processus ou de connecteur *RPC* sur votre " +"plateforme. Cependant, dans ce mode, le code de l'utilisateur n'est pas " +"isolé de *IDLE* lui-même. De plus, l'environnement n'est pas réinitialisé " +"quand *Run/Run Module* (`F5`) est sélectionné. Si votre code a été modifié, " +"vous devez *reload*() les modules affectés et ré-importer tous les éléments " +"spécifiques (e.g. *from foo import baz*) pour que les changements prennent " +"effet. Pour toutes ces raisons, il est préférable d'exécuter *IDLE* avec le " +"sous-processus par défaut si c'est possible." #: ../Doc/library/idle.rst:601 msgid "Help and preferences" -msgstr "" +msgstr "Aide et préférences" #: ../Doc/library/idle.rst:604 msgid "Additional help sources" @@ -1097,7 +1293,7 @@ msgstr "" #: ../Doc/library/idle.rst:614 msgid "Setting preferences" -msgstr "" +msgstr "Modifier les préférences" #: ../Doc/library/idle.rst:616 msgid "" @@ -1109,7 +1305,7 @@ msgstr "" #: ../Doc/library/idle.rst:623 msgid "Extensions" -msgstr "" +msgstr "Extensions" #: ../Doc/library/idle.rst:625 msgid "" diff --git a/library/io.po b/library/io.po index 7d70af88..c45b7473 100644 --- a/library/io.po +++ b/library/io.po @@ -1206,7 +1206,7 @@ msgstr "" #: ../Doc/library/io.rst:880 msgid "Performance" -msgstr "" +msgstr "Performances" #: ../Doc/library/io.rst:883 msgid "Binary I/O" diff --git a/library/numbers.po b/library/numbers.po index 21e50454..c45eeb05 100644 --- a/library/numbers.po +++ b/library/numbers.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/numbers.rst:2 msgid ":mod:`numbers` --- Numeric abstract base classes" -msgstr "" +msgstr ":mod:`numbers` — Classes de base abstraites numériques" #: ../Doc/library/numbers.rst:10 msgid "" @@ -27,16 +27,23 @@ msgid "" "more operations. None of the types defined in this module can be " "instantiated." msgstr "" +"Le module :mod:`numbers` (:pep:`3141`) définit une hiérarchie de :term:" +"`classes de base abstraites` numériques qui définissent " +"progressivement plus d'opérations. Aucun des types définis dans ce module ne " +"peut être instancié." #: ../Doc/library/numbers.rst:17 msgid "" "The root of the numeric hierarchy. If you just want to check if an argument " "*x* is a number, without caring what kind, use ``isinstance(x, Number)``." msgstr "" +"La base de la hiérarchie numérique. Si vous voulez juste vérifier qu'un " +"argument *x* est un nombre, peu importe le type, utilisez ``isinstance(x, " +"Number)``." #: ../Doc/library/numbers.rst:22 msgid "The numeric tower" -msgstr "" +msgstr "La tour numérique" #: ../Doc/library/numbers.rst:26 msgid "" @@ -46,26 +53,35 @@ msgid "" "``, ``*``, ``/``, :func:`abs`, :meth:`conjugate`, ``==``, and ``!=``. All " "except ``-`` and ``!=`` are abstract." msgstr "" +"Les sous-classes de ce type décrivent des nombres complexes et incluent les " +"opérations qui fonctionnent sur le type natif :class:`complex`. Ce sont : " +"les conversions vers :class:`complex` et :class:`bool`, :attr:`.real`, :attr:" +"`.imag`, ``+``, ``-``, ``*``, ``/``, :func:`abs`, :meth:`conjugate`, ``==`` " +"et ``!=``. Toutes sauf ``-`` et ``!=`` sont abstraites." #: ../Doc/library/numbers.rst:34 msgid "Abstract. Retrieves the real component of this number." -msgstr "" +msgstr "Abstrait. Récupère la partie réelle de ce nombre." #: ../Doc/library/numbers.rst:38 msgid "Abstract. Retrieves the imaginary component of this number." -msgstr "" +msgstr "Abstrait. Retrouve la partie imaginaire de ce nombre." #: ../Doc/library/numbers.rst:42 msgid "" "Abstract. Returns the complex conjugate. For example, ``(1+3j).conjugate() " "== (1-3j)``." msgstr "" +"Abstrait. Renvoie le complexe conjugué. Par exemple, ``(1+3j).conjugate() == " +"(1-3j)``." #: ../Doc/library/numbers.rst:47 msgid "" "To :class:`Complex`, :class:`Real` adds the operations that work on real " "numbers." msgstr "" +":class:`Real` ajoute les opérations qui fonctionnent sur les nombres réels " +"à :class:`Complex`." #: ../Doc/library/numbers.rst:50 msgid "" @@ -73,12 +89,17 @@ msgid "" "func:`round`, :func:`math.floor`, :func:`math.ceil`, :func:`divmod`, ``//``, " "``%``, ``<``, ``<=``, ``>``, and ``>=``." msgstr "" +"En bref, celles-ci sont : une conversion vers :class:`float`, :func:`math." +"trunc`, :func:`round`, :func:`math.floor`, :func:`math.ceil`, :func:" +"`divmod`, ``//``, ``%``, ``<``, ``<=``, ``>`` et ``>=``." #: ../Doc/library/numbers.rst:54 msgid "" "Real also provides defaults for :func:`complex`, :attr:`~Complex.real`, :" "attr:`~Complex.imag`, and :meth:`~Complex.conjugate`." msgstr "" +"*Real* fournit également des valeurs par défaut pour :func:`complex`, :attr:" +"`~Complex.real`, :attr:`~Complex.imag` et :meth:`~Complex.conjugate`." #: ../Doc/library/numbers.rst:60 msgid "" @@ -86,6 +107,9 @@ msgid "" "`~Rational.denominator` properties, which should be in lowest terms. With " "these, it provides a default for :func:`float`." msgstr "" +"Dérive :class:`Real` et ajoute les propriétés :attr:`~Rational.numerator` " +"et :attr:`~Rational.denominator` qui doivent être les plus petits possible. " +"Avec celles-ci, il fournit une valeur par défaut pour :func:`float`." #: ../Doc/library/numbers.rst:67 ../Doc/library/numbers.rst:71 msgid "Abstract." @@ -98,10 +122,15 @@ msgid "" "`~Rational.denominator`. Adds abstract methods for ``**`` and bit-string " "operations: ``<<``, ``>>``, ``&``, ``^``, ``|``, ``~``." msgstr "" +"Dérive :class:`Rational` et ajoute une conversion en :class:`int`. Fournit " +"des valeurs par défaut pour :func:`float`, :attr:`~Rational.numerator` et :" +"attr:`~Rational.denominator`. Ajoute des méthodes abstraites pour ``**`` et " +"les opérations au niveau des bits: ``<<``, ``>>``, ``&``, ``^``, ``|``, " +"``~``." #: ../Doc/library/numbers.rst:83 msgid "Notes for type implementors" -msgstr "" +msgstr "Notes pour implémenter des types" #: ../Doc/library/numbers.rst:85 msgid "" @@ -110,10 +139,15 @@ msgid "" "the real numbers. For example, :class:`fractions.Fraction` implements :func:" "`hash` as follows::" msgstr "" +"Les développeurs doivent veiller à ce que des nombres égaux soient bien " +"égaux lors de comparaisons et à ce qu'ils soient hachés aux mêmes valeurs. " +"Cela peut être subtil s'il y a deux dérivations différentes des nombres " +"réels. Par exemple, :class:`fractions.Fraction` implémente :func:`hash` " +"comme suit ::" #: ../Doc/library/numbers.rst:104 msgid "Adding More Numeric ABCs" -msgstr "" +msgstr "Ajouter plus d'ABC numériques" #: ../Doc/library/numbers.rst:106 msgid "" @@ -121,10 +155,14 @@ msgid "" "poor hierarchy if it precluded the possibility of adding those. You can add " "``MyFoo`` between :class:`Complex` and :class:`Real` with::" msgstr "" +"Il est bien entendu possible de créer davantage d’ABC pour les nombres et " +"cette hiérarchie serait médiocre si elle excluait la possibilité d'en " +"ajouter. Vous pouvez ajouter ``MyFoo`` entre :class:`Complex` et :class:" +"`Real` ainsi ::" #: ../Doc/library/numbers.rst:116 msgid "Implementing the arithmetic operations" -msgstr "" +msgstr "Implémentation des opérations arithmétiques" #: ../Doc/library/numbers.rst:118 msgid "" @@ -134,6 +172,12 @@ msgid "" "there. For subtypes of :class:`Integral`, this means that :meth:`__add__` " "and :meth:`__radd__` should be defined as::" msgstr "" +"Nous voulons implémenter les opérations arithmétiques de sorte que les " +"opérations en mode mixte appellent une implémentation dont l'auteur connaît " +"les types des deux arguments, ou convertissent chacun dans le type natif le " +"plus proche et effectuent l'opération sur ces types. Pour les sous-types de :" +"class:`Integral`, cela signifie que :meth:`__add__` et :meth:`__radd__` " +"devraient être définis comme suit ::" #: ../Doc/library/numbers.rst:149 msgid "" @@ -143,10 +187,16 @@ msgid "" "an instance of ``A``, which is a subtype of :class:`Complex` (``a : A <: " "Complex``), and ``b : B <: Complex``. I'll consider ``a + b``:" msgstr "" +"Il existe 5 cas différents pour une opération de type mixte sur des sous-" +"classes de :class:`Complex`. Nous nous référerons à tout le code ci-dessus " +"qui ne se réfère pas à ``MyIntegral`` et ``OtherTypeIKnowAbout`` comme " +"\"expression générique\". ``a`` est une instance de ``A``, qui est un sous-" +"type de :class:`Complex` (``a : A <: Complex``) et ``b : B <: Complex``. " +"Considérons ``a + b``:" #: ../Doc/library/numbers.rst:156 msgid "If ``A`` defines an :meth:`__add__` which accepts ``b``, all is well." -msgstr "" +msgstr "Si ``A`` définit une :meth:`__add__` qui accepte ``b``, tout va bien." #: ../Doc/library/numbers.rst:158 msgid "" @@ -156,18 +206,27 @@ msgid "" "`NotImplemented` from :meth:`__add__`. (Or ``A`` may not implement :meth:" "`__add__` at all.)" msgstr "" +"Si ``A`` fait appel au code générique et que celui-ci renvoie une valeur de :" +"meth:`__add__`, nous manquons la possibilité que ``B`` définisse une :meth:" +"`__radd__` plus intelligent, donc le code générique devrait retourner :const:" +"`NotImplemented` dans :meth:`__add__` (ou alors ``A`` ne doit pas " +"implémenter :meth:`__add__` du tout.)" #: ../Doc/library/numbers.rst:164 msgid "" "Then ``B``'s :meth:`__radd__` gets a chance. If it accepts ``a``, all is " "well." msgstr "" +"Alors :meth:`__radd__` de ``B`` a une chance. si elle accepte ``a``, tout va " +"bien." #: ../Doc/library/numbers.rst:166 msgid "" "If it falls back to the boilerplate, there are no more possible methods to " "try, so this is where the default implementation should live." msgstr "" +"Si elle fait appel au code générique, il n'y a plus de méthode possible à " +"essayer, c'est donc ici que l'implémentation par défaut intervient." #: ../Doc/library/numbers.rst:169 msgid "" @@ -175,6 +234,9 @@ msgid "" "because it was implemented with knowledge of ``A``, so it can handle those " "instances before delegating to :class:`Complex`." msgstr "" +"Si ``B < : A```, Python essaie ``B.__radd__`` avant ``A.__add__``. C'est " +"valable parce qu'elle est implémentée avec la connaissance de ``A``, donc " +"elle peut gérer ces instances avant de déléguer à :class:`Complex`." #: ../Doc/library/numbers.rst:174 msgid "" @@ -182,6 +244,9 @@ msgid "" "then the appropriate shared operation is the one involving the built in :" "class:`complex`, and both :meth:`__radd__` s land there, so ``a+b == b+a``." msgstr "" +"Si ``A <: Complex`` et ``B <: Real`` sans autre information, alors " +"l'opération commune appropriée est celle impliquant :class:`complex` et les " +"deux :meth:`__radd__` atterrissent à cet endroit, donc ``a+b == b+a``." #: ../Doc/library/numbers.rst:179 msgid "" @@ -190,3 +255,7 @@ msgid "" "reverse instances of any given operator. For example, :class:`fractions." "Fraction` uses::" msgstr "" +"Comme la plupart des opérations sur un type donné seront très similaires, il " +"peut être utile de définir une fonction accessoire qui génère les instances " +"résultantes et inverses d'un opérateur donné. Par exemple, :class:`fractions." +"Fraction` utilise ::" diff --git a/library/os.path.po b/library/os.path.po index 6433f93e..62d6b76a 100644 --- a/library/os.path.po +++ b/library/os.path.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/os.path.rst:2 msgid ":mod:`os.path` --- Common pathname manipulations" -msgstr "" +msgstr ":mod:`os.path` — manipulation courante des chemins" #: ../Doc/library/os.path.rst:9 msgid "" @@ -40,6 +40,11 @@ msgid "" "explicitly when an application desires shell-like path expansion. (See also " "the :mod:`glob` module.)" msgstr "" +"Contrairement à une invite de commandes Unix, Python ne fait aucune " +"extension de chemin *automatique*. Des fonctions telles que :func:" +"`expanduser` et :func:`expandvars` peuvent être appelées explicitement " +"lorsqu'une application souhaite une extension de chemin semblable à celui " +"d'une invite de commande (voir aussi le module :mod:`glob`)." #: ../Doc/library/os.path.rst:26 msgid "" @@ -51,14 +56,21 @@ msgid "" "path that is *always* in one of the different formats. They all have the " "same interface:" msgstr "" +"Comme les différents systèmes d'exploitation ont des conventions de noms de " +"chemins différentes, il existe plusieurs versions de ce module dans la " +"bibliothèque standard. Le module :mod:`os.path` est toujours le module de " +"chemin adapté au système d'exploitation sur lequel Python tourne, et donc " +"adapté pour les chemins locaux. Cependant, vous pouvez également importer et " +"utiliser les modules individuels si vous voulez manipuler un chemin qui est " +"*toujours* dans l'un des différents formats. Ils ont tous la même interface :" #: ../Doc/library/os.path.rst:34 msgid ":mod:`posixpath` for UNIX-style paths" -msgstr "" +msgstr ":mod:`posixpath` pour les chemins de type UNIX" #: ../Doc/library/os.path.rst:35 msgid ":mod:`ntpath` for Windows paths" -msgstr "" +msgstr ":mod:`ntpath` pour les chemins Windows" #: ../Doc/library/os.path.rst:36 msgid ":mod:`macpath` for old-style MacOS paths" @@ -74,6 +86,9 @@ msgid "" "platforms, this is equivalent to calling the function :func:`normpath` as " "follows: ``normpath(join(os.getcwd(), path))``." msgstr "" +"Renvoie une version absolue et normalisée du chemin d'accès *path*. Sur la " +"plupart des plates-formes, cela équivaut à appeler la fonction :func:" +"`normpath` comme suit : ``normpath(join(os.getcwd(), chemin))```." #: ../Doc/library/os.path.rst:51 msgid "" @@ -83,6 +98,11 @@ msgid "" "program; where :program:`basename` for ``'/foo/bar/'`` returns ``'bar'``, " "the :func:`basename` function returns an empty string (``''``)." msgstr "" +"Renvoie le nom de base du chemin d'accès *path*. C'est le second élément de " +"la paire renvoyée en passant *path* à la fonction :func:`split`. Notez que " +"le résultat de cette fonction est différent de celui du programme Unix :" +"program:`basename` ; là où :program:`basename` pour ``'/foo/bar/'`` renvoie " +"``'bar'``, la fonction :func:`basename` renvoie une chaîne vide (``''``)." #: ../Doc/library/os.path.rst:61 msgid "" diff --git a/library/parser.po b/library/parser.po index 3a674c60..6ee97856 100644 --- a/library/parser.po +++ b/library/parser.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/parser.rst:3 msgid ":mod:`parser` --- Access Python parse trees" -msgstr "" +msgstr ":mod:`parser` — Accès aux arbres syntaxiques" #: ../Doc/library/parser.rst:20 msgid "" @@ -30,6 +30,13 @@ msgid "" "in a manner identical to the code forming the application. It is also " "faster." msgstr "" +"Le module :mod:`parser` expose une interface à l'analyseur et au compilateur " +"de byte-code internes de Python. Son objectif principal est de permettre à " +"du code Python de modifier l'arbre syntaxique d'une expression Python puis " +"de la rendre exécutable. Cette approche est plus fiable que celle consistant " +"à manipuler des chaines de caractères, puisque l'analyse est faite avec le " +"même analyseur que celui utilisé pour le code de l'application. C'est aussi " +"plus rapide." #: ../Doc/library/parser.rst:29 msgid "" @@ -37,6 +44,9 @@ msgid "" "Syntax Tree (AST) generation and compilation stage, using the :mod:`ast` " "module." msgstr "" +"À partir de Python 2.5, il est plus pratique de faire ces manipulations " +"entre la génération de l'AST (*Abstract Syntax Tree*) et la compilation, en " +"utilisant le module :mod:`ast`." #: ../Doc/library/parser.rst:33 msgid "" @@ -54,6 +64,10 @@ msgid "" "editing the parse trees for Python code, but some examples of using the :mod:" "`parser` module are presented." msgstr "" +"Certaines particularités de ce module sont importantes à retenir pour en " +"faire un bon usage. Ce n'est pas un tutoriel sur la modification d'arbres " +"syntaxiques Python, mais certains exemples d'utilisation du module :mod:" +"`parser` sont présentés." #: ../Doc/library/parser.rst:44 msgid "" diff --git a/library/shutil.po b/library/shutil.po index 1056faf3..58099563 100644 --- a/library/shutil.po +++ b/library/shutil.po @@ -31,6 +31,10 @@ msgid "" "support file copying and removal. For operations on individual files, see " "also the :mod:`os` module." msgstr "" +"Le module :mod:`shutil` propose des opérations de haut niveau sur les " +"fichiers et ensembles de fichiers. En particulier, des fonctions pour copier " +"et déplacer les fichiers sont proposées. Pour les opérations individuelles " +"sur les fichiers, reportez-vous au module :mod:`os`." #: ../Doc/library/shutil.rst:24 msgid "" @@ -46,10 +50,16 @@ msgid "" "be correct. On Windows, file owners, ACLs and alternate data streams are not " "copied." msgstr "" +"Sur les plateformes POSIX, cela signifie que le propriétaire et le groupe du " +"fichier sont perdus, ainsi que les *ACLs*. Sur Mac OS, le clonage de " +"ressource et autres métadonnées ne sont pas utilisés. Cela signifie que les " +"ressources seront perdues et que le type de fichier et les codes créateur ne " +"seront pas corrects. Sur Windows, les propriétaires des fichiers, *ACLs* et " +"flux de données alternatifs ne sont pas copiés." #: ../Doc/library/shutil.rst:37 msgid "Directory and files operations" -msgstr "" +msgstr "Opérations sur les répertoires et les fichiers" #: ../Doc/library/shutil.rst:41 msgid "" @@ -61,6 +71,13 @@ msgid "" "the *fsrc* object is not 0, only the contents from the current file position " "to the end of the file will be copied." msgstr "" +"Copie le contenu de l'objet fichier *fsrc* dans l'objet fichier *fdst*. " +"L'entier *length*, si spécifié, est la taille du tampon. En particulier, une " +"valeur de *length* négative signifie la copie des données sans découper la " +"source en morceaux ; par défaut les données sont lues par morceaux pour " +"éviter la consommation mémoire non-contrôlée. À noter que si la position " +"courante dans l'objet *fsrc* n'est pas 0, seul le contenu depuis la position " +"courante jusqu'à la fin est copié." #: ../Doc/library/shutil.rst:52 msgid "" diff --git a/library/sunau.po b/library/sunau.po index f2ebeb70..42325111 100644 --- a/library/sunau.po +++ b/library/sunau.po @@ -124,7 +124,7 @@ msgstr "``'r'``" #: ../Doc/library/sunau.rst:50 msgid "Read only mode." -msgstr "" +msgstr "Mode lecture seule." #: ../Doc/library/sunau.rst:53 msgid "``'w'``" @@ -132,7 +132,7 @@ msgstr "``'w'``" #: ../Doc/library/sunau.rst:53 msgid "Write only mode." -msgstr "" +msgstr "Mode écriture seule." #: ../Doc/library/sunau.rst:55 msgid "Note that it does not allow read/write files." @@ -146,7 +146,7 @@ msgstr "" #: ../Doc/library/sunau.rst:63 msgid "A synonym for :func:`.open`, maintained for backwards compatibility." -msgstr "" +msgstr "Un synonyme de :func:`.open`, maintenu pour la rétrocompatibilité." #: ../Doc/library/sunau.rst:66 msgid "The :mod:`sunau` module defines the following exception:" @@ -202,15 +202,15 @@ msgstr "" #: ../Doc/library/sunau.rst:125 msgid "Returns sample width in bytes." -msgstr "" +msgstr "Renvoie la largeur de l'échantillon en octets." #: ../Doc/library/sunau.rst:130 msgid "Returns sampling frequency." -msgstr "" +msgstr "Renvoie la fréquence d'échantillonnage." #: ../Doc/library/sunau.rst:135 msgid "Returns number of audio frames." -msgstr "" +msgstr "Renvoie le nombre de trames audio." #: ../Doc/library/sunau.rst:140 msgid "" @@ -240,13 +240,17 @@ msgstr "" #: ../Doc/library/sunau.rst:166 msgid "Rewind the file pointer to the beginning of the audio stream." -msgstr "" +msgstr "Remet le pointeur de fichier au début du flux audio." #: ../Doc/library/sunau.rst:168 msgid "" "The following two methods define a term \"position\" which is compatible " "between them, and is otherwise implementation dependent." msgstr "" +"Les deux fonctions suivantes utilisent le vocabulaire \"position\". Ces " +"positions sont compatible entre elles, la \"position\" de l'un est " +"compatible avec la \"position\" de l'autre. Cette position est dépendante de " +"l'implémentation." #: ../Doc/library/sunau.rst:174 msgid "" @@ -268,11 +272,11 @@ msgstr "" #: ../Doc/library/sunau.rst:189 msgid "Returns ``None``." -msgstr "" +msgstr "Renvoie ``None``." #: ../Doc/library/sunau.rst:194 msgid "Raise an error." -msgstr "" +msgstr "Lève une erreur." #: ../Doc/library/sunau.rst:200 msgid "AU_write Objects" @@ -286,7 +290,7 @@ msgstr "" #: ../Doc/library/sunau.rst:207 msgid "Set the number of channels." -msgstr "" +msgstr "Définit le nombre de canaux." #: ../Doc/library/sunau.rst:212 msgid "Set the sample width (in bytes.)" @@ -323,7 +327,7 @@ msgstr "" #: ../Doc/library/sunau.rst:247 msgid "Write audio frames, without correcting *nframes*." -msgstr "" +msgstr "Écrit les trames audio sans corriger *nframes*." #: ../Doc/library/sunau.rst:252 msgid "Write audio frames and make sure *nframes* is correct." diff --git a/library/sysconfig.po b/library/sysconfig.po index 60c8bf32..d5039250 100644 --- a/library/sysconfig.po +++ b/library/sysconfig.po @@ -274,7 +274,7 @@ msgstr "" #: ../Doc/library/sysconfig.rst:162 msgid "Other functions" -msgstr "" +msgstr "Autres fonctions" #: ../Doc/library/sysconfig.rst:166 msgid "" diff --git a/library/thread.po b/library/thread.po index 13fb2770..8cdd0990 100644 --- a/library/thread.po +++ b/library/thread.po @@ -37,6 +37,13 @@ msgid "" "provided. The :mod:`threading` module provides an easier to use and higher-" "level threading API built on top of this module." msgstr "" +"Ce module fournit les primitives de bas niveau pour travailler avec de " +"multiples fils d'exécution (aussi appelés :dfn:`light-weight processes` ou :" +"dfn:`tasks`) — plusieurs fils d'exécution de contrôle partagent leur espace " +"de données global. Pour la synchronisation, de simples verrous (aussi " +"appelés des :dfn:`mutexes` ou des :dfn:`binary semaphores`) sont fournis. Le " +"module :mod:`threading` fournit une API de fils d'exécution de haut niveau, " +"plus facile à utiliser et construite à partir de ce module." #: ../Doc/library/thread.rst:31 msgid "" @@ -80,6 +87,8 @@ msgid "" "Raise the :exc:`SystemExit` exception. When not caught, this will cause the " "thread to exit silently." msgstr "" +"Lève une exception :exc:`SystemExit`. Quand elle n'est pas interceptée, le " +"fil d'exécution se terminera silencieusement." #: ../Doc/library/thread.rst:84 msgid "" @@ -143,18 +152,24 @@ msgid "" "Releases the lock. The lock must have been acquired earlier, but not " "necessarily by the same thread." msgstr "" +"Relâche le verrou. Le verrou doit avoir été acquis plus tôt, mais pas " +"nécessairement par le même fil d'exécution." #: ../Doc/library/thread.rst:139 msgid "" "Return the status of the lock: ``True`` if it has been acquired by some " "thread, ``False`` if not." msgstr "" +"Renvoie le statut du verrou : ``True`` s'il a été acquis par certains fils " +"d'exécution, sinon ``False``." #: ../Doc/library/thread.rst:142 msgid "" "In addition to these methods, lock objects can also be used via the :keyword:" "`with` statement, e.g.::" msgstr "" +"En plus de ces méthodes, les objets verrous peuvent aussi être utilisés via " +"l'instruction :keyword:`with`, e.g. : ::" #: ../Doc/library/thread.rst:152 msgid "**Caveats:**" @@ -166,6 +181,10 @@ msgid "" "exception will be received by an arbitrary thread. (When the :mod:`signal` " "module is available, interrupts always go to the main thread.)" msgstr "" +"Les fils d'exécution interagissent étrangement avec les interruptions : " +"l'exception :exc:`KeyboardInterrupt` sera reçue par un fil d'exécution " +"arbitraire. (Quand le module :mod:`signal` est disponible, les interruptions " +"vont toujours au fil d'exécution principal)." #: ../Doc/library/thread.rst:160 msgid "" @@ -179,6 +198,9 @@ msgid "" "the :exc:`KeyboardInterrupt` exception will happen after the lock has been " "acquired." msgstr "" +"Il n'est pas possible d'interrompre la méthode :meth:`acquire` sur un verrou " +"— l'exception :exc:`KeyboardInterrupt` surviendra après que le verrou a été " +"acquis." #: ../Doc/library/thread.rst:168 msgid "" @@ -194,3 +216,6 @@ msgid "" "that :keyword:`try` ... :keyword:`finally` clauses are honored), and the " "standard I/O files are not flushed." msgstr "" +"Quand le fil d'exécution principal s'arrête, il ne fait pas son nettoyage " +"habituel (excepté que les clauses :keyword:`try`… :keyword:`finally` sont " +"honorées) et les fichiers d'entrée/sortie standards ne sont pas nettoyés." diff --git a/library/timeit.po b/library/timeit.po index 01b4f238..4d5e13eb 100644 --- a/library/timeit.po +++ b/library/timeit.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/timeit.rst:2 msgid ":mod:`timeit` --- Measure execution time of small code snippets" -msgstr "" +msgstr ":mod:`timeit` — Mesurer le temps d'exécution de fragments de code" #: ../Doc/library/timeit.rst:14 msgid "**Source code:** :source:`Lib/timeit.py`" @@ -32,20 +32,29 @@ msgid "" "execution times. See also Tim Peters' introduction to the \"Algorithms\" " "chapter in the *Python Cookbook*, published by O'Reilly." msgstr "" +"Ce module fournit une façon simple de mesurer le temps d'exécution de " +"fragments de code Python. Il expose une :ref:`timeit-command-line-interface` " +"ainsi qu'une :ref:`interface Python `. Ce module permet " +"d'éviter un certain nombre de problèmes classiques liés à la mesure des " +"temps d'exécution. Voir par exemple à ce sujet l'introduction par Tim Peters " +"du chapitre « Algorithmes » dans le livre *Python Cookbook*, aux éditions " +"O'Reilly." #: ../Doc/library/timeit.rst:26 msgid "Basic Examples" -msgstr "" +msgstr "Exemples simples" #: ../Doc/library/timeit.rst:28 msgid "" "The following example shows how the :ref:`timeit-command-line-interface` can " "be used to compare three different expressions:" msgstr "" +"L'exemple suivant illustre l'utilisation de l':ref:`timeit-command-line-" +"interface` afin de comparer trois expressions différentes :" #: ../Doc/library/timeit.rst:40 msgid "This can be achieved from the :ref:`python-interface` with::" -msgstr "" +msgstr "L':ref:`python-interface` peut être utilisée aux mêmes fins avec : ::" #: ../Doc/library/timeit.rst:50 msgid "" @@ -56,11 +65,13 @@ msgstr "" #: ../Doc/library/timeit.rst:58 msgid "Python Interface" -msgstr "" +msgstr "Interface Python" #: ../Doc/library/timeit.rst:60 msgid "The module defines three convenience functions and a public class:" msgstr "" +"Ce module définit une classe publique ainsi que trois fonctions destinées à " +"simplifier son usage :" #: ../Doc/library/timeit.rst:65 msgid "" @@ -89,6 +100,7 @@ msgstr "" #: ../Doc/library/timeit.rst:93 msgid "Class for timing execution speed of small code snippets." msgstr "" +"Classe permettant de mesurer le temps d'exécution de fragments de code." #: ../Doc/library/timeit.rst:95 msgid "" @@ -124,6 +136,13 @@ msgid "" "statement, the setup statement and the timer function to be used are passed " "to the constructor." msgstr "" +"Mesure le temps *number* exécution de l'instruction principale. Ceci exécute " +"l'instruction de mise en place une seule fois puis renvoie un flottant " +"correspondant au temps nécessaire à l'exécution de l'instruction principale " +"à plusieurs reprises, mesuré en secondes. L'argument correspond au nombre " +"d'itérations dans la boucle, par défaut un million. L'instruction " +"principale, l'instruction de mise en place et la fonction de chronométrage " +"utilisée sont passées au constructeur." #: ../Doc/library/timeit.rst:124 msgid "" @@ -137,7 +156,7 @@ msgstr "" #: ../Doc/library/timeit.rst:136 msgid "Call :meth:`.timeit` a few times." -msgstr "" +msgstr "Appelle :meth:`.timeit` plusieurs fois." #: ../Doc/library/timeit.rst:138 msgid "" @@ -146,6 +165,10 @@ msgid "" "call :meth:`.timeit`. The second argument specifies the *number* argument " "for :meth:`.timeit`." msgstr "" +"Cette fonction d'agrément appelle :meth:`.timeit` à plusieurs reprises et " +"renvoie une liste de résultats. Le premier argument spécifie le nombre " +"d'appels à :meth:`.timeit`. Le second argument spécifie l'argument *number* " +"de :meth:`.timeit`." #: ../Doc/library/timeit.rst:145 msgid "" @@ -158,6 +181,16 @@ msgid "" "only number you should be interested in. After that, you should look at the " "entire vector and apply common sense rather than statistics." msgstr "" +"Il est tentant de vouloir calculer la moyenne et l'écart-type des résultats " +"et notifier ces valeurs. Ce n'est cependant pas très utile. En pratique, la " +"valeur la plus basse donne une estimation basse de la vitesse maximale à " +"laquelle votre machine peut exécuter le fragment de code spécifié ; les " +"valeurs hautes de la liste sont typiquement provoquées non pas par une " +"variabilité de la vitesse d'exécution de Python, mais par d'autres processus " +"interférant avec la précision du chronométrage. Le :func:`min` du résultat " +"est probablement la seule valeur à laquelle vous devriez vous intéresser. " +"Pour aller plus loin, vous devriez regarder l'intégralité des résultats et " +"utiliser le bon sens plutôt que les statistiques." #: ../Doc/library/timeit.rst:158 msgid "Helper to print a traceback from the timed code." @@ -165,7 +198,7 @@ msgstr "" #: ../Doc/library/timeit.rst:160 msgid "Typical use::" -msgstr "" +msgstr "Usage typique : ::" #: ../Doc/library/timeit.rst:168 msgid "" @@ -182,14 +215,16 @@ msgstr "Interface en ligne de commande" msgid "" "When called as a program from the command line, the following form is used::" msgstr "" +"Lorsque le module est appelé comme un programme en ligne de commande, la " +"syntaxe suivante est utilisée : ::" #: ../Doc/library/timeit.rst:182 msgid "Where the following options are understood:" -msgstr "" +msgstr "Les options suivantes sont gérées :" #: ../Doc/library/timeit.rst:188 msgid "how many times to execute 'statement'" -msgstr "" +msgstr "nombre d'exécutions de l'instruction *statement*" #: ../Doc/library/timeit.rst:192 msgid "how many times to repeat the timer (default 3)" @@ -198,6 +233,7 @@ msgstr "" #: ../Doc/library/timeit.rst:196 msgid "statement to be executed once initially (default ``pass``)" msgstr "" +"instruction exécutée une seule fois à l'initialisation (``pass`` par défaut)" #: ../Doc/library/timeit.rst:200 msgid "use :func:`time.time` (default on all platforms but Windows)" @@ -213,7 +249,7 @@ msgstr "" #: ../Doc/library/timeit.rst:212 msgid "print a short usage message and exit" -msgstr "" +msgstr "affiche un court message d'aide puis quitte" #: ../Doc/library/timeit.rst:214 msgid "" @@ -222,12 +258,19 @@ msgid "" "quotes and using leading spaces. Multiple :option:`-s` options are treated " "similarly." msgstr "" +"Une instruction sur plusieurs lignes peut être donnée en entrée en " +"spécifiant chaque ligne comme un argument séparé. Indenter une ligne est " +"possible en encadrant l'argument de guillemets et en le préfixant par des " +"espaces. Plusieurs :option:`-s` sont gérées de la même façon." #: ../Doc/library/timeit.rst:219 msgid "" "If :option:`-n` is not given, a suitable number of loops is calculated by " "trying successive powers of 10 until the total time is at least 0.2 seconds." msgstr "" +"Si :option:`-n` n'est pas donnée, le nombre de boucles adapté est déterminé " +"automatiquement en essayant les puissances de 10 successives jusqu'à ce que " +"le temps total d'exécution dépasse 0,2 secondes." #: ../Doc/library/timeit.rst:222 msgid "" @@ -259,10 +302,14 @@ msgid "" "It is possible to provide a setup statement that is executed only once at " "the beginning:" msgstr "" +"Il est possible de fournir une instruction de mise en place exécutée une " +"seule fois au début du chronométrage :" #: ../Doc/library/timeit.rst:261 msgid "The same can be done using the :class:`Timer` class and its methods::" msgstr "" +"La même chose peut être réalisée en utilisant la classe :class:`Timer` et " +"ses méthodes : ::" #: ../Doc/library/timeit.rst:271 msgid "" @@ -270,9 +317,16 @@ msgid "" "lines. Here we compare the cost of using :func:`hasattr` vs. :keyword:`try`/:" "keyword:`except` to test for missing and present object attributes:" msgstr "" +"Les exemples qui suivent montrent comment chronométrer des expressions sur " +"plusieurs lignes. Nous comparons ici le coût d'utilisation de :func:" +"`hasattr` par rapport à :keyword:`try`/:keyword:`except` pour tester la " +"présence ou l'absence d'attributs d'un objet :" #: ../Doc/library/timeit.rst:316 msgid "" "To give the :mod:`timeit` module access to functions you define, you can " "pass a *setup* parameter which contains an import statement::" msgstr "" +"Afin de permettre à :mod:`timeit` d'accéder aux fonctions que vous avez " +"définies, vous pouvez passer au paramètre *setup* une instruction " +"d'importation: ::" diff --git a/library/tkinter.po b/library/tkinter.po index ee5eba01..06c228cd 100644 --- a/library/tkinter.po +++ b/library/tkinter.po @@ -37,22 +37,25 @@ msgstr "" #: ../Doc/library/tkinter.rst:24 msgid "`Python Tkinter Resources `_" -msgstr "" +msgstr "`Python Tkinter Resources `_" #: ../Doc/library/tkinter.rst:23 msgid "" "The Python Tkinter Topic Guide provides a great deal of information on using " "Tk from Python and links to other sources of information on Tk." msgstr "" +"Le *Python Tkinter Topic Guide* fournit beaucoup d'informations sur " +"l'utilisation de Tk à partir de Python et des liens vers d'autres sources " +"d'information sur Tk." #: ../Doc/library/tkinter.rst:27 msgid "`TKDocs `_" -msgstr "" +msgstr "`TKDocs `_" #: ../Doc/library/tkinter.rst:27 msgid "" "Extensive tutorial plus friendlier widget pages for some of the widgets." -msgstr "" +msgstr "Tutoriel complet plus convivial pour certains des objets graphiques." #: ../Doc/library/tkinter.rst:30 msgid "" @@ -62,15 +65,15 @@ msgstr "" #: ../Doc/library/tkinter.rst:30 msgid "On-line reference material." -msgstr "" +msgstr "Documents de référence en ligne." #: ../Doc/library/tkinter.rst:33 msgid "`Tkinter docs from effbot `_" -msgstr "" +msgstr "`Documents Tkinter sur effbot `_" #: ../Doc/library/tkinter.rst:33 msgid "Online reference for tkinter supported by effbot.org." -msgstr "" +msgstr "Référence en ligne pour *tkinter* réalisée par *effbot.org*." #: ../Doc/library/tkinter.rst:36 msgid "`Tcl/Tk manual `_" @@ -87,7 +90,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:39 msgid "Book by Mark Lutz, has excellent coverage of Tkinter." -msgstr "" +msgstr "Livre de Mark Lutz, qui couvre excellemment bien Tkinter." #: ../Doc/library/tkinter.rst:42 msgid "" @@ -106,6 +109,8 @@ msgid "" "`Python and Tkinter Programming `_" msgstr "" +"`Python and Tkinter Programming `_" #: ../Doc/library/tkinter.rst:45 msgid "The book by John Grayson (ISBN 1-884777-81-3)." @@ -113,7 +118,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:49 msgid "Tkinter Modules" -msgstr "" +msgstr "Modules Tkinter" #: ../Doc/library/tkinter.rst:51 msgid "" @@ -136,7 +141,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:65 msgid "Or, more often::" -msgstr "" +msgstr "Ou, plus souvent : ::" #: ../Doc/library/tkinter.rst:72 msgid "" @@ -144,6 +149,9 @@ msgid "" "toplevel widget of Tk which usually is the main window of an application. " "Each instance has its own associated Tcl interpreter." msgstr "" +"La classe :class:`Tk` est instanciée sans argument. Cela crée un widget de " +"haut niveau de Tk qui est généralement la fenêtre principale d'une " +"application. Chaque instance a son propre interpréteur Tcl associé." #: ../Doc/library/tkinter.rst:78 msgid "The *useTk* parameter was added." @@ -160,10 +168,18 @@ msgid "" "window created (and the Tk subsystem initialized) by calling its :meth:" "`loadtk` method." msgstr "" +"La fonction :func:`Tcl` est une fonction fabrique qui crée un objet " +"similaire à celui créé par la classe :class:`Tk`, sauf qu'elle n'initialise " +"pas le sous-système Tk. Ceci est le plus souvent utile lorsque vous pilotez " +"l'interpréteur Tcl dans un environnement où vous ne voulez pas créer des " +"fenêtres de haut niveau supplémentaires, ou alors si c'est impossible (comme " +"les systèmes Unix/Linux sans un serveur X). Un objet créé par :func:`Tcl` " +"peut avoir une fenêtre de haut niveau créée (et le sous-système Tk " +"initialisé) en appelant sa méthode :meth:`loadtk`." #: ../Doc/library/tkinter.rst:94 msgid "Other modules that provide Tk support include:" -msgstr "" +msgstr "Parmi les modules qui savent gérer Tk, nous pouvons citer :" #: ../Doc/library/tkinter.rst:97 msgid ":mod:`ScrolledText`" @@ -172,6 +188,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:97 msgid "Text widget with a vertical scroll bar built in." msgstr "" +"Outil d'affichage de texte avec une barre de défilement verticale intégrée." #: ../Doc/library/tkinter.rst:100 msgid ":mod:`tkColorChooser`" @@ -179,7 +196,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:100 msgid "Dialog to let the user choose a color." -msgstr "" +msgstr "Boîte de dialogue permettant à l'utilisateur de choisir une couleur." #: ../Doc/library/tkinter.rst:103 msgid ":mod:`tkCommonDialog`" @@ -188,6 +205,8 @@ msgstr "" #: ../Doc/library/tkinter.rst:103 msgid "Base class for the dialogs defined in the other modules listed here." msgstr "" +"Classe de base pour les boîtes de dialogue définies dans les autres modules " +"listés ici." #: ../Doc/library/tkinter.rst:106 msgid ":mod:`tkFileDialog`" @@ -196,6 +215,8 @@ msgstr "" #: ../Doc/library/tkinter.rst:106 msgid "Common dialogs to allow the user to specify a file to open or save." msgstr "" +"Boîtes de dialogue standard permettant à l'utilisateur de spécifier un " +"fichier à ouvrir ou à enregistrer." #: ../Doc/library/tkinter.rst:109 msgid ":mod:`tkFont`" @@ -203,7 +224,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:109 msgid "Utilities to help work with fonts." -msgstr "" +msgstr "Utilitaires pour gérer les polices de caractères." #: ../Doc/library/tkinter.rst:112 msgid ":mod:`tkMessageBox`" @@ -211,7 +232,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:112 msgid "Access to standard Tk dialog boxes." -msgstr "" +msgstr "Accès aux boîtes de dialogue Tk standard." #: ../Doc/library/tkinter.rst:115 msgid ":mod:`tkSimpleDialog`" @@ -219,7 +240,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:115 msgid "Basic dialogs and convenience functions." -msgstr "" +msgstr "Boîtes de dialogue simples et fonctions utilitaires." #: ../Doc/library/tkinter.rst:119 msgid ":mod:`Tkdnd`" @@ -233,11 +254,11 @@ msgstr "" #: ../Doc/library/tkinter.rst:122 msgid ":mod:`turtle`" -msgstr "" +msgstr ":mod:`turtle`" #: ../Doc/library/tkinter.rst:122 msgid "Turtle graphics in a Tk window." -msgstr "" +msgstr "Tortue graphique dans une fenêtre Tk." #: ../Doc/library/tkinter.rst:124 msgid "" @@ -247,7 +268,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:129 msgid "Tkinter Life Preserver" -msgstr "" +msgstr "Guide de survie Tkinter" #: ../Doc/library/tkinter.rst:134 msgid "" @@ -255,23 +276,26 @@ msgid "" "Tkinter. Rather, it is intended as a stop gap, providing some introductory " "orientation on the system." msgstr "" +"Cette section n'est pas conçue pour être un tutoriel exhaustif de Tk ou " +"Tkinter. Il s'agit plutôt d'un guide d'introduction au système." #: ../Doc/library/tkinter.rst:138 msgid "Credits:" -msgstr "" +msgstr "Crédits :" #: ../Doc/library/tkinter.rst:140 msgid "Tkinter was written by Steen Lumholt and Guido van Rossum." -msgstr "" +msgstr "*Tkinter* a été écrit par Steen Lumholt et Guido van Rossum." #: ../Doc/library/tkinter.rst:142 msgid "Tk was written by John Ousterhout while at Berkeley." -msgstr "" +msgstr "*Tk* a été écrit par John Ousterhout de Berkeley." #: ../Doc/library/tkinter.rst:144 msgid "" "This Life Preserver was written by Matt Conway at the University of Virginia." msgstr "" +"Ce guide de survie a été écrit par Matt Conway de l'Université de Virginie." #: ../Doc/library/tkinter.rst:146 msgid "" @@ -284,16 +308,20 @@ msgid "" "Fredrik Lundh elaborated and revised the class interface descriptions, to " "get them current with Tk 4.2." msgstr "" +"Fredrik Lundh a élaboré et mis à jour les descriptions de l'interface des " +"classes, en cohérence avec Tk 4.2." #: ../Doc/library/tkinter.rst:152 msgid "" "Mike Clarkson converted the documentation to LaTeX, and compiled the User " "Interface chapter of the reference manual." msgstr "" +"Mike Clarkson a converti la documentation en LaTeX et a compilé le chapitre " +"*Interface utilisateur* du manuel de référence." #: ../Doc/library/tkinter.rst:157 msgid "How To Use This Section" -msgstr "" +msgstr "Mode d'emploi" #: ../Doc/library/tkinter.rst:159 msgid "" @@ -301,6 +329,9 @@ msgid "" "background material, while the second half can be taken to the keyboard as a " "handy reference." msgstr "" +"Cette section est divisée en deux parties : la première moitié (à peu près) " +"couvre la partie théorique, tandis que la seconde moitié peut être utilisée " +"comme guide pratique." #: ../Doc/library/tkinter.rst:163 msgid "" @@ -329,6 +360,10 @@ msgid "" "for the novice. The book is not exhaustive, and for many details it defers " "to the man pages." msgstr "" +"Addison-Wesley a publié un livre intitulé *Tcl and the Tk Toolkit* de John " +"Ousterhout (ISBN 0-201-63337-X) qui est une bonne introduction à Tcl et Tk " +"pour débutants. Le livre n'est pas exhaustif et, pour beaucoup de détails, " +"il renvoie aux pages du manuel." #: ../Doc/library/tkinter.rst:181 msgid "" @@ -343,6 +378,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:188 msgid "The Tk/Tcl development is largely taking place at ActiveState." msgstr "" +"Le développement de Tk/Tcl se déroule en grande partie au sein d'ActiveState." #: ../Doc/library/tkinter.rst:191 msgid "" @@ -355,19 +391,19 @@ msgstr "" #: ../Doc/library/tkinter.rst:193 msgid "`Practical Programming in Tcl and Tk `_" -msgstr "" +msgstr "`Practical Programming in Tcl and Tk `_" #: ../Doc/library/tkinter.rst:194 msgid "Brent Welch's encyclopedic book." -msgstr "" +msgstr "Le livre encyclopédique de Brent Welch." #: ../Doc/library/tkinter.rst:198 msgid "A Simple Hello World Program" -msgstr "" +msgstr "Un simple programme *Hello World*" #: ../Doc/library/tkinter.rst:234 msgid "A (Very) Quick Look at Tcl/Tk" -msgstr "" +msgstr "Un (très) rapide aperçu de Tcl/Tk" #: ../Doc/library/tkinter.rst:236 msgid "" @@ -375,6 +411,9 @@ msgid "" "programmers almost always refer to the classes at the very bottom of the " "hierarchy." msgstr "" +"La hiérarchie de classes semble compliquée mais, dans la pratique, les " +"développeurs d'applications se réfèrent presque toujours aux classes situées " +"tout en bas de la hiérarchie." #: ../Doc/library/tkinter.rst:240 msgid "Notes:" @@ -385,6 +424,9 @@ msgid "" "These classes are provided for the purposes of organizing certain functions " "under one namespace. They aren't meant to be instantiated independently." msgstr "" +"Ces classes sont fournies dans le but d'organiser certaines fonctions sous " +"un seul espace de nommage. Elles n'ont pas vocation à être instanciées " +"indépendamment." #: ../Doc/library/tkinter.rst:245 msgid "" @@ -392,6 +434,10 @@ msgid "" "application. Application programmers need not instantiate one explicitly, " "the system creates one whenever any of the other classes are instantiated." msgstr "" +"La classe :class:`Tk` est destinée à être instanciée une seule fois dans une " +"application. Les développeurs d'applications n'ont pas besoin d'en " +"instancier une explicitement, Le système en crée une au besoin quand une des " +"autres classes est instanciée." #: ../Doc/library/tkinter.rst:249 msgid "" @@ -399,6 +445,9 @@ msgid "" "for subclassing to make \"real\" widgets (in C++, this is called an " "'abstract class')." msgstr "" +"La classe :class:`Widget` n'est pas destinée à être instanciée, elle est " +"destinée uniquement au sous-classement pour faire de « vrais » objets " +"graphiques (en C++, on appelle cela une « classe abstraite »)." #: ../Doc/library/tkinter.rst:253 msgid "" @@ -415,22 +464,31 @@ msgid "" "*options* that help configure it, and the *actions* that make it do useful " "things." msgstr "" +"Les scripts Tk sont des programmes Tcl. Comme tous les programmes Tcl, les " +"scripts Tk ne sont que des listes de commandes séparées par des espaces. Un " +"objet graphique Tk n'est constitué que de sa *classe*, des *options* qui " +"l'aident à se configurer et des *actions* qui lui font faire des choses " +"utiles." #: ../Doc/library/tkinter.rst:262 msgid "To make a widget in Tk, the command is always of the form::" msgstr "" +"Pour créer un objet graphique en Tk, la commande est toujours de la " +"forme : ::" #: ../Doc/library/tkinter.rst:267 msgid "*classCommand*" -msgstr "" +msgstr "*classCommand*" #: ../Doc/library/tkinter.rst:267 msgid "denotes which kind of widget to make (a button, a label, a menu...)" msgstr "" +"indique le type d'objet graphique à réaliser (un bouton, une étiquette, un " +"menu…)" #: ../Doc/library/tkinter.rst:274 msgid "*newPathname*" -msgstr "" +msgstr "*newPathname*" #: ../Doc/library/tkinter.rst:270 msgid "" @@ -440,6 +498,13 @@ msgid "" "children are delimited by more periods. For example, ``.myApp.controlPanel." "okButton`` might be the name of a widget." msgstr "" +"est le nouveau nom pour cet objet graphique. Tous les noms dans Tk doivent " +"être uniques. Pour vous aider à respecter cette règle, les objets " +"graphiques dans Tk sont nommés avec des *noms d'accès*, tout comme les " +"fichiers dans le système de fichiers. L'objet graphique de niveau " +"supérieur, la racine (*root* en anglais), s'appelle ``.`` (point) et les " +"enfants sont délimités par plusieurs points. Par exemple, ``.myApp." +"controlPanel.okButton`` pourrait être le nom d'un objet graphique." #: ../Doc/library/tkinter.rst:280 msgid "*options*" @@ -452,6 +517,11 @@ msgid "" "by a '-', like Unix shell command flags, and values are put in quotes if " "they are more than one word." msgstr "" +"configure l'apparence de l'objet graphique et, dans certains cas, son " +"comportement. Les options se présentent sous la forme d'une liste de " +"paramètres et de valeurs. Les paramètres sont précédés d'un « - », comme les " +"paramètres d'une ligne de commande du shell Unix, et les valeurs sont mises " +"entre guillemets si elles font plus d'un mot." #: ../Doc/library/tkinter.rst:282 ../Doc/library/tkinter.rst:543 #: ../Doc/library/tkinter.rst:719 @@ -466,10 +536,15 @@ msgid "" "someOptions), in C++, you would express this as fred." "someAction(someOptions), and in Tk, you say::" msgstr "" +"Une fois créé, le chemin d'accès à l'objet graphique devient une nouvelle " +"commande. Cette nouvelle *commande d'objet graphique* est l'interface du " +"programmeur pour que le nouvel objet graphique effectue une *action*. En C, " +"cela prend la forme ``someAction(fred, someOptions)``, en C++, cela prend la " +"forme `fred.someAction(someOptions)` et, en Tk, vous dites ::" #: ../Doc/library/tkinter.rst:298 msgid "Note that the object name, ``.fred``, starts with a dot." -msgstr "" +msgstr "Notez que le nom de l'objet, ``.fred``, commence par un point." #: ../Doc/library/tkinter.rst:300 msgid "" @@ -478,6 +553,11 @@ msgid "" "greyed out), but does not work if fred is a label (disabling of labels is " "not supported in Tk)." msgstr "" +"Comme vous pouvez vous y attendre, les valeurs autorisées pour *someAction* " +"dépendent de la classe de l'objet graphique : ``.fred disable`` fonctionne " +"si ``fred`` est un bouton (``fred`` devient grisé), mais ne fonctionne pas " +"si ``fred`` est une étiquette (la désactivation des étiquettes n'existe pas " +"dans Tk)." #: ../Doc/library/tkinter.rst:304 msgid "" @@ -486,20 +566,29 @@ msgid "" "``delete`` command, would need arguments to specify what range of text to " "delete." msgstr "" +"Les valeurs possibles de *someOptions* dépendent de l'action. Certaines " +"actions, comme ``disable``, ne nécessitent aucun argument ; d'autres, comme " +"la commande ``delete`` d'une zone de saisie, nécessitent des arguments pour " +"spécifier l'étendue du texte à supprimer." #: ../Doc/library/tkinter.rst:312 msgid "Mapping Basic Tk into Tkinter" -msgstr "" +msgstr "Correspondance entre *Basic Tk* et *Tkinter*" #: ../Doc/library/tkinter.rst:314 msgid "Class commands in Tk correspond to class constructors in Tkinter. ::" msgstr "" +"Les commandes de classes dans Tk correspondent aux constructeurs de classes " +"dans Tkinter. ::" #: ../Doc/library/tkinter.rst:318 msgid "" "The master of an object is implicit in the new name given to it at creation " "time. In Tkinter, masters are specified explicitly. ::" msgstr "" +"Le constructeur d'un objet est implicite dans le nouveau nom qui lui est " +"donné lors de la création. Dans Tkinter, les constructeurs sont spécifiés " +"explicitement. ::" #: ../Doc/library/tkinter.rst:323 msgid "" @@ -509,6 +598,13 @@ msgid "" "indices, in dictionary style, for established instances. See section :ref:" "`tkinter-setting-options` on setting options. ::" msgstr "" +"Les options de configuration dans Tk sont données dans des listes de " +"paramètres séparés par des traits d'union suivies de leurs valeurs. Dans " +"Tkinter, les options sont spécifiées sous forme d'arguments par mots-clés " +"dans le constructeur d'instance, et d'arguments par mots-clés pour " +"configurer les appels ou sous forme d'une entrée, dans le style " +"dictionnaire, d'instance pour les instances établies. Voir la section :ref:" +"`tkinter-setting-options` pour la façon de définir les options.::" #: ../Doc/library/tkinter.rst:333 msgid "" @@ -531,15 +627,15 @@ msgstr "" #: ../Doc/library/tkinter.rst:352 msgid "How Tk and Tkinter are Related" -msgstr "" +msgstr "Relations entre Tk et Tkinter" #: ../Doc/library/tkinter.rst:354 msgid "From the top down:" -msgstr "" +msgstr "De haut en bas :" #: ../Doc/library/tkinter.rst:357 msgid "Your App Here (Python)" -msgstr "" +msgstr "Votre application (Python)" #: ../Doc/library/tkinter.rst:357 msgid "A Python application makes a :mod:`Tkinter` call." @@ -569,7 +665,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:374 msgid "Tk Widgets (C and Tcl)" -msgstr "" +msgstr "Objets graphiques Tk (C et Tcl)" #: ../Doc/library/tkinter.rst:370 msgid "" @@ -582,53 +678,65 @@ msgstr "" #: ../Doc/library/tkinter.rst:377 msgid "Tk (C)" -msgstr "" +msgstr "Tk (C)" #: ../Doc/library/tkinter.rst:377 msgid "The Tk part of the Tk Widgets implement the final mapping to ..." msgstr "" +"La partie Tk des objets graphiques Tk implémente la correspondance finale " +"avec …" #: ../Doc/library/tkinter.rst:381 msgid "Xlib (C)" -msgstr "" +msgstr "Xlib (C)" #: ../Doc/library/tkinter.rst:380 msgid "the Xlib library to draw graphics on the screen." msgstr "" +"la bibliothèque *Xlib* pour dessiner des éléments graphiques à l'écran." #: ../Doc/library/tkinter.rst:384 msgid "Handy Reference" -msgstr "" +msgstr "Guide pratique" #: ../Doc/library/tkinter.rst:390 msgid "Setting Options" -msgstr "" +msgstr "Définition des options" #: ../Doc/library/tkinter.rst:392 msgid "" "Options control things like the color and border width of a widget. Options " "can be set in three ways:" msgstr "" +"Les options contrôlent des paramètres tels que la couleur et la largeur de " +"la bordure d'un objet graphique. Les options peuvent être réglées de trois " +"façons :" #: ../Doc/library/tkinter.rst:398 msgid "At object creation time, using keyword arguments" -msgstr "" +msgstr "Lors de la création de l'objet, à l'aide d'arguments par mots-clés" #: ../Doc/library/tkinter.rst:404 msgid "After object creation, treating the option name like a dictionary index" msgstr "" +"Après la création de l'objet, en manipulant le nom de l'option comme une " +"entrée de dictionnaire" #: ../Doc/library/tkinter.rst:409 msgid "" "Use the config() method to update multiple attrs subsequent to object " "creation" msgstr "" +"Utilisez la méthode ``config()`` pour mettre à jour plusieurs attributs " +"après la création de l'objet" #: ../Doc/library/tkinter.rst:411 msgid "" "For a complete explanation of a given option and its behavior, see the Tk " "man pages for the widget in question." msgstr "" +"Pour l'explication complète d'une option donnée et de son comportement, voir " +"les pages de manuel Tk de l'objet graphique en question." #: ../Doc/library/tkinter.rst:414 msgid "" @@ -638,6 +746,12 @@ msgid "" "particular widget. The Standard Options are documented on the :manpage:" "`options(3)` man page." msgstr "" +"Notez que les pages de manuel listent « OPTIONS STANDARD » et « OPTIONS " +"SPÉCIFIQUES D'OBJETS GRAPHIQUES » pour chaque objet graphique. La première " +"est une liste d'options communes à de nombreux objets graphiques, la seconde " +"est une liste d'options propres à cet objet graphique particulier. Les " +"options standard sont documentées sur la page de manuel :manpage:" +"`options(3)`." #: ../Doc/library/tkinter.rst:420 msgid "" @@ -646,6 +760,12 @@ msgid "" "given widget responds to a particular option depends on the class of the " "widget; buttons have a ``command`` option, labels do not." msgstr "" +"Aucune distinction n'est faite dans ce document entre les options standard " +"et les options spécifiques à un objet graphique. Certaines options ne " +"s'appliquent pas à certains types d'objets graphiques. La réaction d'un " +"objet graphique donné à une option particulière dépend de la classe de " +"l'objet graphique ; les boutons possèdent une option ``command``, pas les " +"étiquettes." #: ../Doc/library/tkinter.rst:425 msgid "" @@ -655,6 +775,12 @@ msgid "" "The return value of these calls is a dictionary whose key is the name of the " "option as a string (for example, ``'relief'``) and whose values are 5-tuples." msgstr "" +"Les options gérées par un objet graphique donné sont listées dans la page de " +"manuel de cet objet graphique, ou peuvent être interrogées à l'exécution en " +"appelant la méthode :meth:`config` sans argument, ou en appelant la méthode :" +"meth:`keys` sur cet objet graphique. La valeur de retour de ces appels est " +"un dictionnaire dont la clé est le nom de l'option sous forme de chaîne (par " +"exemple, ``'relief'``) et dont les valeurs sont des *5-uplets*." #: ../Doc/library/tkinter.rst:431 msgid "" @@ -664,6 +790,11 @@ msgid "" "tuple passed back will contain the name of the synonym and the \"real\" " "option (such as ``('bg', 'background')``)." msgstr "" +"Certaines options, comme ``bg``, sont des synonymes d'options communes qui " +"ont des noms longs (``bg`` est une abréviation pour ``background`` « arrière-" +"plan »). Passer le nom abrégé d'une option à la méthode ``config()`` renvoie " +"un couple, pas un quintuplet. Le couple renvoyé contient le nom abrégé et le " +"nom *réel* de l'option, par exemple ``('bg','background')``." #: ../Doc/library/tkinter.rst:438 msgid "Index" @@ -695,7 +826,7 @@ msgstr "1" #: ../Doc/library/tkinter.rst:442 msgid "option name for database lookup" -msgstr "" +msgstr "nom de l'option pour la recherche dans la base de données" #: ../Doc/library/tkinter.rst:444 msgid "2" @@ -703,7 +834,7 @@ msgstr "2" #: ../Doc/library/tkinter.rst:444 msgid "option class for database lookup" -msgstr "" +msgstr "classe de l'option pour la recherche dans la base de données" #: ../Doc/library/tkinter.rst:444 msgid "``'Relief'``" @@ -727,7 +858,7 @@ msgstr "4" #: ../Doc/library/tkinter.rst:449 msgid "current value" -msgstr "" +msgstr "valeur actuelle" #: ../Doc/library/tkinter.rst:449 msgid "``'groove'``" @@ -742,10 +873,12 @@ msgid "" "Of course, the dictionary printed will include all the options available and " "their values. This is meant only as an example." msgstr "" +"Bien sûr, le dictionnaire affiché contient toutes les options disponibles et " +"leurs valeurs. Ceci n'est donné qu'à titre d'exemple." #: ../Doc/library/tkinter.rst:462 msgid "The Packer" -msgstr "" +msgstr "L'empaqueteur" #: ../Doc/library/tkinter.rst:466 msgid "" @@ -757,6 +890,14 @@ msgid "" "*to the left of*, *filling*, etc - and works everything out to determine the " "exact placement coordinates for you." msgstr "" +"L'empaqueteur est l'un des mécanismes de Tk pour la gestion de la " +"disposition des éléments sur l'écran. Les gestionnaires de géométrie sont " +"utilisés pour spécifier le positionnement relatif du positionnement des " +"objets graphiques dans leur conteneur — leur *constructeur* mutuel. " +"Contrairement au plus encombrant *placeur* (qui est utilisé moins souvent, " +"et nous n'en parlons pas ici), l'empaqueteur prend les spécifications " +"qualitatives de relation — *above*, *to the left of*, *filling*, etc — et " +"calcule tout pour déterminer les coordonnées exactes du placement pour vous." #: ../Doc/library/tkinter.rst:474 msgid "" @@ -767,6 +908,14 @@ msgid "" "you desire. Additionally, the arrangement is dynamically adjusted to " "accommodate incremental changes to the configuration, once it is packed." msgstr "" +"La taille d'un objet graphique *constructeur* est déterminée par la taille " +"des « objets graphiques hérités » à l'intérieur. L'empaqueteur est utilisé " +"pour contrôler l'endroit où les objets graphiques hérités apparaissent à " +"l'intérieur du constructeur dans lequel ils sont empaquetés. Vous pouvez " +"regrouper des objets graphiques dans des cadres, et des cadres dans d'autres " +"cadres, afin d'obtenir le type de mise en page souhaité. De plus, " +"l'arrangement est ajusté dynamiquement pour s'adapter aux changements " +"incrémentiels de la configuration, une fois qu'elle est empaquetées." #: ../Doc/library/tkinter.rst:481 msgid "" @@ -776,6 +925,12 @@ msgid "" "nothing appears. A widget will appear only after it has had, for example, " "the packer's :meth:`pack` method applied to it." msgstr "" +"Notez que les objets graphiques n'apparaissent pas tant que leur disposition " +"n'a pas été spécifiée avec un gestionnaire de géométrie. C'est une erreur " +"de débutant courante de ne pas tenir compte de la spécification de la " +"géométrie, puis d'être surpris lorsque l'objet graphique est créé mais que " +"rien n'apparaît. Un objet graphique n'apparaît qu'après que, par exemple, " +"la méthode :meth:`pack` de l'empaqueteur lui ait été appliquée." #: ../Doc/library/tkinter.rst:487 msgid "" @@ -783,71 +938,83 @@ msgid "" "where the widget is to appear within its container, and how it is to behave " "when the main application window is resized. Here are some examples::" msgstr "" +"La méthode `pack()` peut être appelée avec des paires mot-clé-option/valeur " +"qui contrôlent où l'objet graphique doit apparaître dans son conteneur et " +"comment il doit se comporter lorsque la fenêtre principale de l'application " +"est redimensionnée. En voici quelques exemples: ::" #: ../Doc/library/tkinter.rst:497 msgid "Packer Options" -msgstr "" +msgstr "Options de l'empaqueteur" #: ../Doc/library/tkinter.rst:499 msgid "" "For more extensive information on the packer and the options that it can " "take, see the man pages and page 183 of John Ousterhout's book." msgstr "" +"Pour de plus amples informations sur l'empaqueteur et les options qu'il peut " +"prendre, voir les pages de manuel et la page 183 du livre de John Ousterhout." #: ../Doc/library/tkinter.rst:503 ../Doc/library/tkinter.rst:619 msgid "anchor" -msgstr "" +msgstr "*anchor*" #: ../Doc/library/tkinter.rst:503 msgid "" "Anchor type. Denotes where the packer is to place each slave in its parcel." msgstr "" +"Type d'ancrage. Indique l'endroit où l'empaqueteur doit placer chaque " +"enfant dans son espace." #: ../Doc/library/tkinter.rst:506 msgid "expand" -msgstr "" +msgstr "*expand*" #: ../Doc/library/tkinter.rst:506 msgid "Boolean, ``0`` or ``1``." -msgstr "" +msgstr "Booléen, ``0`` ou ``1``." #: ../Doc/library/tkinter.rst:509 msgid "fill" -msgstr "" +msgstr "*fill*" #: ../Doc/library/tkinter.rst:509 msgid "Legal values: ``'x'``, ``'y'``, ``'both'``, ``'none'``." -msgstr "" +msgstr "Valeurs acceptées : ``'x'``, ``'y'``, ``'both'``, ``'none'``." #: ../Doc/library/tkinter.rst:512 msgid "ipadx and ipady" -msgstr "" +msgstr "*ipadx* et *ipady*" #: ../Doc/library/tkinter.rst:512 msgid "" "A distance - designating internal padding on each side of the slave widget." msgstr "" +"Une distance — désignant l'écart interne de chaque côté de l'objet graphique " +"hérité." #: ../Doc/library/tkinter.rst:515 msgid "padx and pady" -msgstr "" +msgstr "*padx* et *pady*" #: ../Doc/library/tkinter.rst:515 msgid "" "A distance - designating external padding on each side of the slave widget." msgstr "" +"Une distance — désignant l'écart externe de chaque côté de l'objet graphique " +"hérité." #: ../Doc/library/tkinter.rst:519 msgid "side" -msgstr "" +msgstr "*side*" #: ../Doc/library/tkinter.rst:518 msgid "Legal values are: ``'left'``, ``'right'``, ``'top'``, ``'bottom'``." -msgstr "" +msgstr "Valeurs acceptées : ``'left'``, ``'right'``, ``'top'``, ``'bottom'``." #: ../Doc/library/tkinter.rst:522 msgid "Coupling Widget Variables" -msgstr "" +msgstr "Association des variables de l'objet graphique" #: ../Doc/library/tkinter.rst:524 msgid "" @@ -858,6 +1025,13 @@ msgid "" "reason, the widget it's connected to will be updated to reflect the new " "value." msgstr "" +"L'assignation d'une valeur à certains objets graphiques (comme les objets " +"graphique de saisie de texte) peut être liée directement aux variables de " +"votre application à l'aide d'options spéciales. Ces options sont " +"``variable``, ``textvariable``, ``onvalue``, ``offvalue`` et ``value``. Ce " +"lien fonctionne dans les deux sens : si la variable change pour une raison " +"ou pour une autre, l'objet graphique auquel elle est connectée est mis à " +"jour pour refléter la nouvelle valeur." #: ../Doc/library/tkinter.rst:530 msgid "" @@ -877,10 +1051,16 @@ msgid "" "this protocol, the widget will always track the value of the variable, with " "no further intervention on your part." msgstr "" +"Il existe de nombreuses sous-classes utiles de `Variable` déjà définies : :" +"class:`StringVar`, :class:`IntVar`, :class:`DoubleVar` et :class:" +"`BooleanVar`. Pour lire la valeur courante d'une telle variable, appelez la " +"méthode :meth:`get` dessus et, pour changer sa valeur, appelez la méthode :" +"meth:`!set`. Si vous suivez ce protocole, l'objet graphique suivra toujours " +"la valeur de la variable, sans autre intervention de votre part." #: ../Doc/library/tkinter.rst:572 msgid "The Window Manager" -msgstr "" +msgstr "Le gestionnaire de fenêtres" #: ../Doc/library/tkinter.rst:576 msgid "" @@ -902,14 +1082,23 @@ msgid "" "fact that this function is part of the implementation, and not an interface " "to Tk functionality." msgstr "" +"Pour accéder à la fenêtre du plus haut niveau qui contient un objet " +"graphique donné, vous pouvez souvent simplement vous référer au parent de " +"cet objet graphique. Bien sûr, si l'objet graphique a été empaqueté à " +"l'intérieur d'un cadre, le parent ne représentera pas la fenêtre de plus " +"haut niveau. Pour accéder à la fenêtre du plus haut niveau qui contient un " +"objet graphique arbitraire, vous pouvez appeler la méthode :meth:`_root`. " +"Cette méthode commence par un soulignement pour indiquer que cette fonction " +"fait partie de l'implémentation, et non d'une interface avec la " +"fonctionnalité Tk." #: ../Doc/library/tkinter.rst:590 msgid "Here are some examples of typical usage::" -msgstr "" +msgstr "Voici quelques exemples d'utilisation courante ::" #: ../Doc/library/tkinter.rst:613 msgid "Tk Option Data Types" -msgstr "" +msgstr "Types de données des options Tk" #: ../Doc/library/tkinter.rst:618 msgid "" @@ -917,10 +1106,13 @@ msgid "" "\"se\"``, ``\"s\"``, ``\"sw\"``, ``\"w\"``, ``\"nw\"``, and also ``\"center" "\"``." msgstr "" +"Les valeurs acceptées sont des points cardinaux : ``« n »``, ``« ne »``, ``« " +"e »``, ``« se »``, ``« s »``, ``« sw »``, ``« w »``, ``« nw »`` et ``« " +"center »``." #: ../Doc/library/tkinter.rst:625 msgid "bitmap" -msgstr "" +msgstr "*bitmap*" #: ../Doc/library/tkinter.rst:622 msgid "" @@ -929,26 +1121,34 @@ msgid "" "``'warning'``. To specify an X bitmap filename, give the full path to the " "file, preceded with an ``@``, as in ``\"@/usr/contrib/bitmap/gumby.bit\"``." msgstr "" +"Il y a huit bitmaps intégrés nommés : ``« error »``, ``« gray25 »``, ``« " +"gray50 »``, ``« hourglass »``, ``« info »``, ``« questhead »``, ``« question " +"»``, ``« warning »'``. Pour spécifier un nom de fichier bitmap X, indiquez " +"le chemin complet du fichier, précédé de ``@``, comme dans ``\"@/usr/contrib/" +"bitmap/gumby.bit\"``." #: ../Doc/library/tkinter.rst:628 msgid "boolean" -msgstr "" +msgstr "*boolean*" #: ../Doc/library/tkinter.rst:628 msgid "You can pass integers 0 or 1 or the strings ``\"yes\"`` or ``\"no\"``." msgstr "" +"Vous pouvez lui donner les entiers 0 ou 1 ou les chaînes de caractères ``" +"\"yes\"`` ou ``\"no\"``." #: ../Doc/library/tkinter.rst:635 msgid "callback" -msgstr "" +msgstr "*callback*" #: ../Doc/library/tkinter.rst:631 msgid "This is any Python function that takes no arguments. For example::" msgstr "" +"N'importe quelle fonction Python qui ne prend pas d'argument. Par exemple ::" #: ../Doc/library/tkinter.rst:641 msgid "color" -msgstr "" +msgstr "*color*" #: ../Doc/library/tkinter.rst:638 msgid "" @@ -958,10 +1158,16 @@ msgid "" "where R,G,B here represent any legal hex digit. See page 160 of " "Ousterhout's book for details." msgstr "" +"Les couleurs peuvent être données sous forme de noms de couleurs Xorg dans " +"le fichier *rgb.txt*, ou sous forme de chaînes représentant les valeurs RVB " +"en 4 bits : ``« #RGB »``, 8 bits : ``« #RRVVBB »``, 12 bits``« #RRRVVVBBB " +"»``, ou 16 bits ``« #RRRRVVVVBBBB »``, où R,V,B représente ici tout chiffre " +"hexadécimal valide. Voir page 160 du livre d'Ousterhout pour plus de " +"détails." #: ../Doc/library/tkinter.rst:647 msgid "cursor" -msgstr "" +msgstr "*cursor*" #: ../Doc/library/tkinter.rst:644 msgid "" @@ -970,10 +1176,15 @@ msgid "" "use the string ``\"hand2\"``. You can also specify a bitmap and mask file " "of your own. See page 179 of Ousterhout's book." msgstr "" +"Les noms de curseurs Xorg standard que l'on trouve dans :file:`cursorfont.h` " +"peuvent être utilisés, sans le préfixe ``XC_``. Par exemple pour obtenir un " +"curseur en forme de main (:const:`XC_hand2`), utilisez la chaîne ``« hand2 " +"»``. Vous pouvez également spécifier votre propre bitmap et fichier masque. " +"Voir page 179 du livre d'Ousterhout." #: ../Doc/library/tkinter.rst:654 msgid "distance" -msgstr "" +msgstr "*distance*" #: ../Doc/library/tkinter.rst:650 msgid "" @@ -983,10 +1194,16 @@ msgid "" "``m`` for millimetres, ``p`` for printer's points. For example, 3.5 inches " "is expressed as ``\"3.5i\"``." msgstr "" +"Les distances à l'écran peuvent être spécifiées en pixels ou en distances " +"absolues. Les pixels sont donnés sous forme de nombres et les distances " +"absolues sous forme de chaînes de caractères, le dernier caractère indiquant " +"les unités : ``c`` pour les centimètres, ``i`` pour les pouces (*inches* en " +"anglais), ``m`` pour les millimètres, ``p`` pour les points d'impression. " +"Par exemple, 3,5 pouces est noté ``« 3.5i »``." #: ../Doc/library/tkinter.rst:659 msgid "font" -msgstr "" +msgstr "*font*" #: ../Doc/library/tkinter.rst:657 msgid "" @@ -994,10 +1211,14 @@ msgid "" "with positive numbers are measured in points; sizes with negative numbers " "are measured in pixels." msgstr "" +"*Tk* utilise un format de nom de police sous forme de liste, tel que " +"``{courier 10 bold}``. Les tailles de polices avec des nombres positifs sont " +"mesurées en points ; les tailles avec des nombres négatifs sont mesurées en " +"pixels." #: ../Doc/library/tkinter.rst:664 msgid "geometry" -msgstr "" +msgstr "*geometry*" #: ../Doc/library/tkinter.rst:662 msgid "" @@ -1005,20 +1226,26 @@ msgid "" "measured in pixels for most widgets (in characters for widgets displaying " "text). For example: ``fred[\"geometry\"] = \"200x100\"``." msgstr "" +"Il s'agit d'une chaîne de caractères de la forme ``largeurxhauteur``, où la " +"largeur et la hauteur sont mesurées en pixels pour la plupart des objets " +"graphiques (en caractères pour les objets graphiques affichant du texte). " +"Par exemple : ``fred[\"geometry\"] = \"200x100\"``." #: ../Doc/library/tkinter.rst:668 msgid "justify" -msgstr "" +msgstr "*justify*" #: ../Doc/library/tkinter.rst:667 msgid "" "Legal values are the strings: ``\"left\"``, ``\"center\"``, ``\"right\"``, " "and ``\"fill\"``." msgstr "" +"Les valeurs acceptées sont les chaînes de caractères : `« left »``, ``« " +"center »``, ``« right »`` et ``« fill »``." #: ../Doc/library/tkinter.rst:673 msgid "region" -msgstr "" +msgstr "*region*" #: ../Doc/library/tkinter.rst:671 msgid "" @@ -1026,10 +1253,14 @@ msgid "" "legal distance (see above). For example: ``\"2 3 4 5\"`` and ``\"3i 2i 4.5i " "2i\"`` and ``\"3c 2c 4c 10.43c\"`` are all legal regions." msgstr "" +"c'est une chaîne de caractères avec quatre éléments séparés par des espaces, " +"chacun d'eux étant une distance valide (voir ci-dessus). Par exemple : ``" +"\"2 3 4 5\"``et ``\" 3i 2i 4.5i 2i\"``et ``\"3c 2c 4c 10.43c\"`` sont toutes " +"des régions valides." #: ../Doc/library/tkinter.rst:677 msgid "relief" -msgstr "" +msgstr "*relief*" #: ../Doc/library/tkinter.rst:676 msgid "" @@ -1037,10 +1268,13 @@ msgid "" "\"raised\"``, ``\"sunken\"``, ``\"flat\"``, ``\"groove\"``, and ``\"ridge" "\"``." msgstr "" +"Détermine le style de bordure d'un objet graphique. Les valeurs valides " +"sont : ``\"raised\"``, ``\"sunken\"``, ``\"flat\"``, ``\"groove\"``, et ``" +"\"ridge\"``." #: ../Doc/library/tkinter.rst:683 msgid "scrollcommand" -msgstr "" +msgstr "*scrollcommand*" #: ../Doc/library/tkinter.rst:680 msgid "" @@ -1052,15 +1286,15 @@ msgstr "" #: ../Doc/library/tkinter.rst:687 msgid "wrap:" -msgstr "" +msgstr "*wrap*" #: ../Doc/library/tkinter.rst:686 msgid "Must be one of: ``\"none\"``, ``\"char\"``, or ``\"word\"``." -msgstr "" +msgstr "Doit être l'un d'eux : ``\"none\"``, ``\"char\"``, ou ``\"word\"``." #: ../Doc/library/tkinter.rst:690 msgid "Bindings and Events" -msgstr "" +msgstr "Liaisons et événements" #: ../Doc/library/tkinter.rst:696 msgid "" @@ -1068,10 +1302,14 @@ msgid "" "events and to have a callback function trigger when that event type occurs. " "The form of the bind method is::" msgstr "" +"La méthode `bind` de la commande d'objet graphique vous permet de surveiller " +"certains événements et d'avoir un déclencheur de fonction de rappel lorsque " +"ce type d'événement se produit. La forme de la méthode de liaison est la " +"suivante ::" #: ../Doc/library/tkinter.rst:702 msgid "where:" -msgstr "" +msgstr "où :" #: ../Doc/library/tkinter.rst:706 msgid "sequence" @@ -1082,6 +1320,9 @@ msgid "" "is a string that denotes the target kind of event. (See the bind man page " "and page 201 of John Ousterhout's book for details)." msgstr "" +"est une chaîne de caractères qui indique le type d'événement cible. (Voir " +"la page du manuel de *bind* et la page 201 du livre de John Ousterhout pour " +"plus de détails)." #: ../Doc/library/tkinter.rst:711 msgid "func" @@ -1093,10 +1334,14 @@ msgid "" "occurs. An Event instance will be passed as the argument. (Functions " "deployed this way are commonly known as *callbacks*.)" msgstr "" +"est une fonction Python, prenant un argument, à invoquer lorsque l'événement " +"se produit. Une instance d’évènement sera passée en argument. (Les fonctions " +"déployées de cette façon sont communément appelées *callbacks* ou « " +"fonctions de rappel » en français)." #: ../Doc/library/tkinter.rst:717 msgid "add" -msgstr "" +msgstr "*add*" #: ../Doc/library/tkinter.rst:714 msgid "" @@ -1105,6 +1350,10 @@ msgid "" "with. Passing a ``'+'`` means that this function is to be added to the list " "of functions bound to this event type." msgstr "" +"est facultative, soit ``''`` ou ``'+'``. L'envoi d'une chaîne de caractères " +"vide indique que cette liaison doit remplacer toute autre liaison à laquelle " +"cet événement est associé. L'envoi de``«+»`` signifie que cette fonction " +"doit être ajoutée à la liste des fonctions liées à ce type d'événement." #: ../Doc/library/tkinter.rst:726 msgid "" @@ -1117,7 +1366,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:745 msgid "The index Parameter" -msgstr "" +msgstr "Le paramètre index" #: ../Doc/library/tkinter.rst:747 msgid "" @@ -1129,6 +1378,7 @@ msgstr "" #: ../Doc/library/tkinter.rst:770 msgid "Entry widget indexes (index, view index, etc.)" msgstr "" +"Index des objets graphique de type *Entrée* (``index``, ``view index``, etc.)" #: ../Doc/library/tkinter.rst:752 msgid "" @@ -1181,29 +1431,36 @@ msgstr "" #: ../Doc/library/tkinter.rst:774 msgid "Text widget indexes" -msgstr "" +msgstr "Index des objets graphiques texte" #: ../Doc/library/tkinter.rst:773 msgid "" "The index notation for Text widgets is very rich and is best described in " "the Tk man pages." msgstr "" +"La notation de l'index des objets graphiques de type *Texte* est très riche " +"et mieux décrite dans les pages du manuel Tk." #: ../Doc/library/tkinter.rst:799 msgid "Menu indexes (menu.invoke(), menu.entryconfig(), etc.)" -msgstr "" +msgstr "Index menu (`menu.invoke()`, `menu.entryconfig()`, etc.)" #: ../Doc/library/tkinter.rst:777 msgid "" "Some options and methods for menus manipulate specific menu entries. Anytime " "a menu index is needed for an option or a parameter, you may pass in:" msgstr "" +"Certaines options et méthodes pour manipuler les menus nécessitent des " +"éléments de spécifiques. Chaque fois qu'un index de menu est nécessaire pour " +"une option ou un paramètre, vous pouvez utiliser :" #: ../Doc/library/tkinter.rst:780 msgid "" "an integer which refers to the numeric position of the entry in the widget, " "counted from the top, starting with 0;" msgstr "" +"un entier qui fait référence à la position numérique de l'entrée dans " +"l'objet graphique, comptée à partir du haut, en commençant par 0 ;" #: ../Doc/library/tkinter.rst:783 msgid "" @@ -1214,18 +1471,25 @@ msgstr "" #: ../Doc/library/tkinter.rst:786 msgid "the string ``\"last\"`` which refers to the last menu item;" msgstr "" +"la chaîne de caractères ``\"last\"`` qui fait référence au dernier élément " +"du menu ;" #: ../Doc/library/tkinter.rst:788 msgid "" "An integer preceded by ``@``, as in ``@6``, where the integer is interpreted " "as a y pixel coordinate in the menu's coordinate system;" msgstr "" +"un entier précédé de ``@``, comme dans ``@6``, où l'entier est interprété " +"comme une coordonnée y de pixels dans le système de coordonnées du menu ;" #: ../Doc/library/tkinter.rst:791 msgid "" "the string ``\"none\"``, which indicates no menu entry at all, most often " "used with menu.activate() to deactivate all entries, and finally," msgstr "" +"la chaîne de caractères ``\"none\"``, qui n'indique aucune entrée du menu, " +"le plus souvent utilisée avec ``menu.activate()`` pour désactiver toutes les " +"entrées, et enfin," #: ../Doc/library/tkinter.rst:794 msgid "" @@ -1235,10 +1499,15 @@ msgid "" "items labelled ``last``, ``active``, or ``none`` may be interpreted as the " "above literals, instead." msgstr "" +"une chaîne de texte dont le motif correspond à l'étiquette de l'entrée de " +"menu, telle qu'elle est balayée du haut vers le bas du menu. Notez que ce " +"type d'index est considéré après tous les autres, ce qui signifie que les " +"correspondances pour les éléments de menu étiquetés ``last``, ``active`` ou " +"``none`` peuvent être interprétés comme les littéraux ci-dessus, plutôt." #: ../Doc/library/tkinter.rst:802 msgid "Images" -msgstr "" +msgstr "Images" #: ../Doc/library/tkinter.rst:804 msgid "" @@ -1259,6 +1528,8 @@ msgid "" "Either type of image is created through either the ``file`` or the ``data`` " "option (other options are available as well)." msgstr "" +"L'un ou l'autre type d'image est créé par l'option ``file`` ou ``data`` " +"(d'autres options sont également disponibles)." #: ../Doc/library/tkinter.rst:814 msgid "" @@ -1268,10 +1539,16 @@ msgid "" "object is deleted, the image data is deleted as well, and Tk will display an " "empty box wherever the image was used." msgstr "" +"L'objet image peut alors être utilisé partout où un objet graphique sait " +"gérer une option ``image`` (par ex. étiquettes, boutons, menus). Dans ces " +"cas, Tk ne conserve pas de référence à l'image. Lorsque la dernière " +"référence Python à l'objet image est supprimée, les données de l'image sont " +"également supprimées, et Tk affiche une boite vide à l'endroit où l'image " +"était utilisée." #: ../Doc/library/tkinter.rst:824 msgid "File Handlers" -msgstr "" +msgstr "Gestionnaires de fichiers" #: ../Doc/library/tkinter.rst:826 msgid "" @@ -1279,10 +1556,14 @@ msgid "" "called from the Tk mainloop when I/O is possible on a file descriptor. Only " "one handler may be registered per file descriptor. Example code::" msgstr "" +"*Tk* vous permet d'enregistrer et de *désenregistrer* une fonction de rappel " +"qui est appelée depuis la boucle principale de Tk lorsque des entrées-" +"sorties sont possibles sur un descripteur de fichier. Un seul gestionnaire " +"peut être enregistré par descripteur de fichier. Exemple de code: ::" #: ../Doc/library/tkinter.rst:837 msgid "This feature is not available on Windows." -msgstr "" +msgstr "Cette fonction n'est pas disponible sous Windows." #: ../Doc/library/tkinter.rst:839 msgid "" @@ -1294,6 +1575,14 @@ msgid "" "work fine; for other files, use raw reads or ``os.read(file.fileno(), " "maxbytecount)``." msgstr "" +"Dans la mesure où vous ne savez pas combien d'octets sont disponibles en " +"lecture, il ne faut pas utiliser les méthodes :class:`~io.BufferedIOBase` " +"ou :class:`~io.TextIOBase` :meth:`~io.BufferedIOBase.read` ou :meth:`~io." +"IOBase.readline`, car elles requièrent d'indiquer le nombre de *bytes* à " +"lire. Pour les connecteurs, les méthodes :meth:`~socket.socket.socket.recv` " +"ou :meth:`~socket.socket.recvfrom` fonctionnent bien ; pour les autres " +"fichiers, utilisez des lectures brutes ou ``os.read(file.fileno(), " +"maxbytecount)``." #: ../Doc/library/tkinter.rst:850 msgid "" @@ -1303,11 +1592,17 @@ msgid "" "ORed combination of any of the three constants below. The callback is called " "as follows::" msgstr "" +"Enregistre la fonction de rappel du gestionnaire de fichiers *func*. " +"L'argument ``file`` peut être soit un objet avec une méthode :meth:`~io." +"IOBase.fileno` (comme un objet fichier ou connecteur), soit un descripteur " +"de fichier de type entier. L'argument ``mask`` est une combinaison *OU* de " +"l'une des trois constantes ci-dessous. La fonction de rappel s'utilise comme " +"suit: ::" #: ../Doc/library/tkinter.rst:861 msgid "Unregisters a file handler." -msgstr "" +msgstr "Désenregistre un gestionnaire de fichiers." #: ../Doc/library/tkinter.rst:868 msgid "Constants used in the *mask* arguments." -msgstr "" +msgstr "Constantes utilisées dans les arguments ``mask``." diff --git a/library/ttk.po b/library/ttk.po index 5a50ea76..ba4151c0 100644 --- a/library/ttk.po +++ b/library/ttk.po @@ -166,7 +166,7 @@ msgstr "" #: ../Doc/library/ttk.rst:116 msgid "cursor" -msgstr "" +msgstr "*cursor*" #: ../Doc/library/ttk.rst:116 msgid "" @@ -544,7 +544,7 @@ msgstr "" #: ../Doc/library/ttk.rst:313 msgid "justify" -msgstr "" +msgstr "*justify*" #: ../Doc/library/ttk.rst:313 msgid "" @@ -1257,7 +1257,7 @@ msgstr "" #: ../Doc/library/ttk.rst:792 msgid "font" -msgstr "" +msgstr "*font*" #: ../Doc/library/ttk.rst:792 msgid "Specifies the font to use when drawing text." @@ -1561,7 +1561,7 @@ msgstr "" #: ../Doc/library/ttk.rst:978 msgid "region" -msgstr "" +msgstr "*region*" #: ../Doc/library/ttk.rst:978 msgid "meaning" diff --git a/library/wave.po b/library/wave.po index c88079af..cfd9a462 100644 --- a/library/wave.po +++ b/library/wave.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/wave.rst:2 msgid ":mod:`wave` --- Read and write WAV files" -msgstr "" +msgstr ":mod:`wave` --- Lecture et écriture des fichiers WAV" #: ../Doc/library/wave.rst:9 msgid "**Source code:** :source:`Lib/wave.py`" @@ -30,10 +30,13 @@ msgid "" "format. It does not support compression/decompression, but it does support " "mono/stereo." msgstr "" +"Le module :mod:`wave` fournit une interface pratique pour le format de son " +"WAV. Il ne gère pas la compression ni la décompression, mais gère le mono et " +"le stéréo." #: ../Doc/library/wave.rst:16 msgid "The :mod:`wave` module defines the following function and exception:" -msgstr "" +msgstr "Le module :mod:`wave` définit la fonction et l'exception suivante :" #: ../Doc/library/wave.rst:21 msgid "" @@ -47,7 +50,7 @@ msgstr "" #: ../Doc/library/wave.rst:25 msgid "Read only mode." -msgstr "" +msgstr "Mode lecture seule." #: ../Doc/library/wave.rst:28 msgid "``'w'``, ``'wb'``" @@ -55,11 +58,13 @@ msgstr "" #: ../Doc/library/wave.rst:28 msgid "Write only mode." -msgstr "" +msgstr "Mode écriture seule." #: ../Doc/library/wave.rst:30 msgid "Note that it does not allow read/write WAV files." msgstr "" +"Notez que ce module ne permet pas de manipuler des fichiers WAV en lecture/" +"écriture." #: ../Doc/library/wave.rst:32 msgid "" @@ -76,57 +81,69 @@ msgid "" "its :meth:`close` method is called; it is the caller's responsibility to " "close the file object." msgstr "" +"Si vous donnez un objet de type fichier, l'objet *wave* ne le ferme pas " +"lorsque sa méthode :meth:`close` est appelée car c'est l'appelant qui est " +"responsable de la fermeture." #: ../Doc/library/wave.rst:45 msgid "A synonym for :func:`.open`, maintained for backwards compatibility." -msgstr "" +msgstr "Un synonyme de :func:`.open`, maintenu pour la rétrocompatibilité." #: ../Doc/library/wave.rst:50 msgid "" "An error raised when something is impossible because it violates the WAV " "specification or hits an implementation deficiency." msgstr "" +"Une erreur est levée lorsque quelque chose est impossible car elle enfreint " +"la spécification WAV ou rencontre un problème d'implémentation." #: ../Doc/library/wave.rst:57 msgid "Wave_read Objects" -msgstr "" +msgstr "Objets Wave_read" #: ../Doc/library/wave.rst:59 msgid "" "Wave_read objects, as returned by :func:`.open`, have the following methods:" msgstr "" +"Les objets Wave_read, tels qu'ils sont renvoyés par :func:`.open`, ont les " +"méthodes suivantes :" #: ../Doc/library/wave.rst:64 msgid "" "Close the stream if it was opened by :mod:`wave`, and make the instance " "unusable. This is called automatically on object collection." msgstr "" +"Ferme le flux s'il a été ouvert par :mod:`wave` et rend l'instance " +"inutilisable. Ceci est appelé automatiquement lorsque l'objet est détruit ." #: ../Doc/library/wave.rst:70 msgid "Returns number of audio channels (``1`` for mono, ``2`` for stereo)." msgstr "" +"Renvoie le nombre de canaux audio (``1`` pour mono, ``2`` pour stéréo)." #: ../Doc/library/wave.rst:75 msgid "Returns sample width in bytes." -msgstr "" +msgstr "Renvoie la largeur de l'échantillon en octets." #: ../Doc/library/wave.rst:80 msgid "Returns sampling frequency." -msgstr "" +msgstr "Renvoie la fréquence d'échantillonnage." #: ../Doc/library/wave.rst:85 msgid "Returns number of audio frames." -msgstr "" +msgstr "Renvoie le nombre de trames audio." #: ../Doc/library/wave.rst:90 msgid "Returns compression type (``'NONE'`` is the only supported type)." -msgstr "" +msgstr "Renvoie le type de compression (``'NONE'`` est le seul type géré)." #: ../Doc/library/wave.rst:95 msgid "" "Human-readable version of :meth:`getcomptype`. Usually ``'not compressed'`` " "parallels ``'NONE'``." msgstr "" +"Version compréhensible de :meth:`getcomptype`. Généralement, ``'not " +"compressed'`` équivaut à ``'NONE'``." #: ../Doc/library/wave.rst:101 msgid "" @@ -140,44 +157,52 @@ msgstr "" #: ../Doc/library/wave.rst:112 msgid "Rewind the file pointer to the beginning of the audio stream." -msgstr "" +msgstr "Remet le pointeur de fichier au début du flux audio." #: ../Doc/library/wave.rst:114 msgid "" "The following two methods are defined for compatibility with the :mod:`aifc` " "module, and don't do anything interesting." msgstr "" +"Les deux méthodes suivantes sont définies pour la compatibilité avec le " +"module :mod:`aifc` ; elles ne font rien d’intéressant." #: ../Doc/library/wave.rst:120 msgid "Returns ``None``." -msgstr "" +msgstr "Renvoie ``None``." #: ../Doc/library/wave.rst:125 msgid "Raise an error." -msgstr "" +msgstr "Lève une erreur." #: ../Doc/library/wave.rst:127 msgid "" "The following two methods define a term \"position\" which is compatible " "between them, and is otherwise implementation dependent." msgstr "" +"Les deux fonctions suivantes utilisent le vocabulaire \"position\". Ces " +"positions sont compatible entre elles, la \"position\" de l'un est " +"compatible avec la \"position\" de l'autre. Cette position est dépendante de " +"l'implémentation." #: ../Doc/library/wave.rst:133 msgid "Set the file pointer to the specified position." -msgstr "" +msgstr "Place le pointeur du fichier sur la position spécifiée." #: ../Doc/library/wave.rst:138 msgid "Return current file pointer position." -msgstr "" +msgstr "Renvoie la position actuelle du pointeur du fichier." #: ../Doc/library/wave.rst:144 msgid "Wave_write Objects" -msgstr "" +msgstr "Objets Wave_write" #: ../Doc/library/wave.rst:146 msgid "" "Wave_write objects, as returned by :func:`.open`, have the following methods:" msgstr "" +"Les objets Wave_write, tels qu'ils sont renvoyés par :func:`.open`, ont les " +"méthodes suivantes :" #: ../Doc/library/wave.rst:151 msgid "" @@ -187,15 +212,15 @@ msgstr "" #: ../Doc/library/wave.rst:157 msgid "Set the number of channels." -msgstr "" +msgstr "Définit le nombre de canaux." #: ../Doc/library/wave.rst:162 msgid "Set the sample width to *n* bytes." -msgstr "" +msgstr "Définit la largeur de l'échantillon à *n* octets." #: ../Doc/library/wave.rst:167 msgid "Set the frame rate to *n*." -msgstr "" +msgstr "Définit la fréquence des trames à *n*." #: ../Doc/library/wave.rst:172 msgid "" @@ -208,6 +233,8 @@ msgid "" "Set the compression type and description. At the moment, only compression " "type ``NONE`` is supported, meaning no compression." msgstr "" +"Définit le type de compression et la description. Pour le moment, seul le " +"type de compression ``NONE`` est géré, c'est-à-dire aucune compression." #: ../Doc/library/wave.rst:184 msgid "" @@ -215,16 +242,21 @@ msgid "" "compname)``, with values valid for the :meth:`set\\*` methods. Sets all " "parameters." msgstr "" +"Le *tuple* doit être ``(nchannels, sampwidth, framerate, nframes, comptype, " +"compname)``, avec des valeurs valides pour les méthodes :meth:`set\\*`. Tous " +"les paramètres sont obligatoires et doivent être définis." #: ../Doc/library/wave.rst:191 msgid "" "Return current position in the file, with the same disclaimer for the :meth:" "`Wave_read.tell` and :meth:`Wave_read.setpos` methods." msgstr "" +"Renvoie la position actuelle dans le fichier, avec les mêmes réserves que " +"pour les méthodes :meth:`Wave_read.tell` et :meth:`Wave_read.setpos`." #: ../Doc/library/wave.rst:197 msgid "Write audio frames, without correcting *nframes*." -msgstr "" +msgstr "Écrit les trames audio sans corriger *nframes*." #: ../Doc/library/wave.rst:202 msgid "Write audio frames and make sure *nframes* is correct." @@ -236,3 +268,6 @@ msgid "" "`writeframes` or :meth:`writeframesraw`, and any attempt to do so will " "raise :exc:`wave.Error`." msgstr "" +"Notez qu'il est impossible de définir des paramètres après avoir appelé :" +"meth:`writeframes` ou :meth:`writeframesraw`, et toute tentative en ce sens " +"lève une :exc:`wave.Error`." diff --git a/library/zipimport.po b/library/zipimport.po index 1dcfb52d..f9150d51 100644 --- a/library/zipimport.po +++ b/library/zipimport.po @@ -18,7 +18,7 @@ msgstr "" #: ../Doc/library/zipimport.rst:3 msgid ":mod:`zipimport` --- Import modules from Zip archives" -msgstr "" +msgstr ":mod:`zipimport` — Importer des modules à partir d'archives Zip" #: ../Doc/library/zipimport.rst:12 msgid "" @@ -39,6 +39,14 @@ msgid "" "lib/` would only import from the :file:`lib/` subdirectory within the " "archive." msgstr "" +"Typiquement, :data:`sys.path` est une liste de noms de répertoires sous " +"forme de chaînes. Ce module permet également à un élément de :data:`sys." +"path` d'être une chaîne nommant une archive de fichier ZIP. L'archive ZIP " +"peut contenir une structure de sous-répertoire pour prendre en charge les " +"importations de paquets, et un chemin dans l'archive peut être spécifié pour " +"importer uniquement à partir d'un sous-répertoire. Par exemple, le chemin " +"d'accès :file:`example.zip/lib/` importerait uniquement depuis le sous-" +"répertoire :file:`lib/` dans l'archive." #: ../Doc/library/zipimport.rst:25 msgid "" @@ -67,6 +75,8 @@ msgid "" "`PKZIP Application Note `_" msgstr "" +"`PKZIP Application Note `_" #: ../Doc/library/zipimport.rst:41 msgid "" @@ -78,7 +88,7 @@ msgstr "" #: ../Doc/library/zipimport.rst:47 msgid ":pep:`273` - Import Modules from Zip Archives" -msgstr "" +msgstr ":pep:`273` - Import Modules from Zip Archives" #: ../Doc/library/zipimport.rst:45 msgid "" @@ -89,29 +99,33 @@ msgstr "" #: ../Doc/library/zipimport.rst:49 msgid ":pep:`302` - New Import Hooks" -msgstr "" +msgstr ":pep:`302` — Nouveaux crochets d'importation" #: ../Doc/library/zipimport.rst:50 msgid "The PEP to add the import hooks that help this module work." msgstr "" +"Le PEP pour ajouter les crochets d'importation qui aident ce module à " +"fonctionner." #: ../Doc/library/zipimport.rst:53 msgid "This module defines an exception:" -msgstr "" +msgstr "Ce module définit une exception :" #: ../Doc/library/zipimport.rst:57 msgid "" "Exception raised by zipimporter objects. It's a subclass of :exc:" "`ImportError`, so it can be caught as :exc:`ImportError`, too." msgstr "" +"Exception levée par les objets *zipimporter*. C'est une sous-classe de :exc:" +"`ImportError`, donc il peut être pris comme :exc:`ImportError`, aussi." #: ../Doc/library/zipimport.rst:64 msgid "zipimporter Objects" -msgstr "" +msgstr "Objets *zimporter*" #: ../Doc/library/zipimport.rst:66 msgid ":class:`zipimporter` is the class for importing ZIP files." -msgstr "" +msgstr ":class:`zipimporter` est la classe pour importer des fichiers ZIP." #: ../Doc/library/zipimport.rst:70 msgid "" @@ -121,12 +135,19 @@ msgid "" "`lib` directory inside the ZIP file :file:`foo/bar.zip` (provided that it " "exists)." msgstr "" +"Créez une nouvelle instance de `zipimporter`. *archivepath* doit être un " +"chemin vers un fichier ZIP, ou vers un chemin spécifique dans un fichier " +"ZIP. Par exemple, un *archivepath* de :file:`foo/bar.zip/lib` cherchera les " +"modules dans le répertoire :file:`lib` du fichier ZIP :file:`foo/bar.zip` " +"(si celui-ci existe)." #: ../Doc/library/zipimport.rst:75 msgid "" ":exc:`ZipImportError` is raised if *archivepath* doesn't point to a valid " "ZIP archive." msgstr "" +":exc:`ZipImportError` est levée si *archivepath* ne pointe pas vers une " +"archive ZIP valide." #: ../Doc/library/zipimport.rst:80 msgid "" @@ -136,12 +157,19 @@ msgid "" "argument is ignored---it's there for compatibility with the importer " "protocol." msgstr "" +"Rechercher un module spécifié par *fullname*. *fullname* doit être le nom du " +"module entièrement qualifié (`dotted`). Elle retourne l'instance " +"`zipimporter` elle-même si le module a été trouvé, ou :const:`None` si ce " +"n'est pas le cas. L'argument optionnel *path* est ignoré --- il est là pour " +"la compatibilité avec le protocole de l'importateur." #: ../Doc/library/zipimport.rst:89 msgid "" "Return the code object for the specified module. Raise :exc:`ZipImportError` " "if the module couldn't be found." msgstr "" +"Retourne l'objet de code pour le module spécifié. Lève :exc:`ZipImportError` " +"si le module n'a pas pu être trouvé." #: ../Doc/library/zipimport.rst:95 msgid "" @@ -154,6 +182,9 @@ msgid "" "Return the value ``__file__`` would be set to if the specified module was " "imported. Raise :exc:`ZipImportError` if the module couldn't be found." msgstr "" +"Renvoie la valeur ``__file____`` qui serait définie si le module spécifié " +"était importé. Lève :exc:`ZipImportError` si le module n'a pas pu être " +"trouvé." #: ../Doc/library/zipimport.rst:110 msgid "" @@ -161,12 +192,17 @@ msgid "" "if the module couldn't be found, return :const:`None` if the archive does " "contain the module, but has no source for it." msgstr "" +"Renvoie le code source du module spécifié. Lève :exc:`ZipImportError` si le " +"module n'a pas pu être trouvé, renvoie :const:`None` si l'archive contient " +"le module, mais n'en a pas la source." #: ../Doc/library/zipimport.rst:118 msgid "" "Return ``True`` if the module specified by *fullname* is a package. Raise :" "exc:`ZipImportError` if the module couldn't be found." msgstr "" +"Renvoie ``True`` si le module spécifié par *fullname* est un paquet. Lève :" +"exc:`ZipImportError` si le module n'a pas pu être trouvé." #: ../Doc/library/zipimport.rst:124 msgid "" @@ -174,18 +210,26 @@ msgid "" "qualified (dotted) module name. It returns the imported module, or raises :" "exc:`ZipImportError` if it wasn't found." msgstr "" +"Charge le module spécifié par *fullname*. *fullname* doit être le nom du " +"module entièrement qualifié (`dotted`). Il renvoie le module importé, ou " +"augmente :exc:`ZipImportError` s'il n'a pas été trouvé." #: ../Doc/library/zipimport.rst:131 msgid "" "The file name of the importer's associated ZIP file, without a possible " "subpath." msgstr "" +"Le nom de fichier de l'archive ZIP associé à l'importateur, sans sous-chemin " +"possible." #: ../Doc/library/zipimport.rst:137 msgid "" "The subpath within the ZIP file where modules are searched. This is the " "empty string for zipimporter objects which point to the root of the ZIP file." msgstr "" +"Le sous-chemin du fichier ZIP où les modules sont recherchés. C'est la " +"chaîne vide pour les objets `zipimporter` qui pointent vers la racine du " +"fichier ZIP." #: ../Doc/library/zipimport.rst:141 msgid "" @@ -193,6 +237,9 @@ msgid "" "slash, equal the original *archivepath* argument given to the :class:" "`zipimporter` constructor." msgstr "" +"Les attributs :attr:`archive` et :attr:`prefix`, lorsqu'ils sont combinés " +"avec une barre oblique, égalent l'argument original *archivepath* donné au " +"constructeur :class:`zipimporter`." #: ../Doc/library/zipimport.rst:149 msgid "Examples" @@ -203,3 +250,5 @@ msgid "" "Here is an example that imports a module from a ZIP archive - note that the :" "mod:`zipimport` module is not explicitly used." msgstr "" +"Voici un exemple qui importe un module d'une archive ZIP — notez que le " +"module :mod:`zipimport` n'est pas explicitement utilisé." diff --git a/whatsnew/2.3.po b/whatsnew/2.3.po index 3a383bef..1c1a4169 100644 --- a/whatsnew/2.3.po +++ b/whatsnew/2.3.po @@ -324,7 +324,7 @@ msgstr "" #: ../Doc/whatsnew/2.3.rst:331 msgid ":pep:`273` - Import Modules from Zip Archives" -msgstr "" +msgstr ":pep:`273` - Import Modules from Zip Archives" #: ../Doc/whatsnew/2.3.rst:329 msgid "" @@ -784,7 +784,7 @@ msgstr "" #: ../Doc/whatsnew/2.3.rst:760 msgid ":pep:`302` - New Import Hooks" -msgstr "" +msgstr ":pep:`302` — Nouveaux crochets d'importation" #: ../Doc/whatsnew/2.3.rst:761 msgid "" diff --git a/whatsnew/2.5.po b/whatsnew/2.5.po index b51da54f..2dd19823 100644 --- a/whatsnew/2.5.po +++ b/whatsnew/2.5.po @@ -592,6 +592,9 @@ msgid "" "The cumulative effect of these changes is to turn generators from one-way " "producers of information into both producers and consumers." msgstr "" +"Ces changements cumulés transforment les générateurs de producteurs " +"unidirectionnels d'information vers un statut hybride à la fois producteur " +"et consommateur." #: ../Doc/whatsnew/2.5.rst:517 msgid ""