From c29362b42de88b77700c19be055f996ccd5ede6f Mon Sep 17 00:00:00 2001 From: ZepmanBC Date: Sat, 31 Aug 2019 12:48:44 +0200 Subject: [PATCH 1/7] traduction de faq/extending.po --- faq/extending.po | 183 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 167 insertions(+), 16 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index 8500930cc..7b7763f9e 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -6,13 +6,14 @@ msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-23 16:48+0200\n" -"PO-Revision-Date: 2018-02-15 00:37+0100\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2019-08-31 11:36+0200\n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Last-Translator: Zepmanbc \n" +"X-Generator: Poedit 2.2.3\n" #: ../Doc/faq/extending.rst:3 msgid "Extending/Embedding FAQ" @@ -32,10 +33,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:22 msgid "Most intermediate or advanced Python books will also cover this topic." msgstr "" +"La plupart des livres Python intermédiaires ou avancés couvriront également " +"ce sujet." #: ../Doc/faq/extending.rst:26 msgid "Can I create my own functions in C++?" @@ -50,9 +56,9 @@ msgid "" msgstr "" "Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. " "Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez " -"``extern \"C\"`` avant chaque fonction qui va être appelée par " -"l'interpréteur Python. Les objets C++ globaux ou statiques avec les " -"constructeurs ne sont probablement pas une bonne idée." +"``extern \"C\"`` avant chaque fonction qui sera appelée par l'interpréteur " +"Python. Les objets globaux ou statiques C++ combinés avec les constructeurs " +"n'est probablement pas une bonne idée." #: ../Doc/faq/extending.rst:37 msgid "Writing C is hard; are there any alternatives?" @@ -64,7 +70,7 @@ msgid "" "depending on what you're trying to do." msgstr "" "Il y a un certain nombre de solutions existantes qui vous permettent " -"d'écrire vos propres extensions C, selon ce que vous essayez de faire." +"d'écrire vos propres extensions en C selon ce que vous essayez de faire." #: ../Doc/faq/extending.rst:44 msgid "" @@ -74,6 +80,11 @@ msgid "" "Cython and Pyrex make it possible to write an extension without having to " "learn Python's C API." msgstr "" +"`Cython `_ et son cousin `Pyrex `_ sont des compilateurs qui " +"acceptent une forme légèrement modifiée de Python et produisent du code C " +"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir " +"à connaître l'API C de Python." #: ../Doc/faq/extending.rst:50 msgid "" @@ -85,10 +96,19 @@ msgid "" "html>`_, or `Weave `_ are also alternatives " "for wrapping C++ libraries." msgstr "" +"Si vous avez besoin d'interfacer avec une bibliothèque C ou C++ pour " +"laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer " +"d'encapsuler les types de données et fonctions de la bibliothèque avec un " +"outil tel que `SWIG `_. `SIP `__, `CXX `_ `Boost `_, ou " +"`Weave `_ sont également des alternatives " +"pour encapsuler des bibliothèques C++." #: ../Doc/faq/extending.rst:61 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:63 msgid "" @@ -99,10 +119,18 @@ msgid "" "func:`PyRun_String`; see the source for :c:func:`PyRun_SimpleString` in " "``Python/pythonrun.c``." msgstr "" +"La fonction de plus haut niveau pour ce faire est :c:func:" +"`PyRun_SimpleStringString` qui prend une chaîne pour seul argument afin de " +"l'exécuter dans le contexte du module ``__main__`` et retourne ``0``` en cas " +"de succès et ``-1`` quand une exception se produit (incluant :exc:" +"`SyntaxError`). Pour une meilleure maîtrise, utilisez :c:func:" +"`PyRun_String` ; voir le code source pour :c:func:`PyRun_SimpleString` dans " +"``Python/pythonrun.c``." #: ../Doc/faq/extending.rst:72 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:74 msgid "" @@ -110,10 +138,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 retourne sa valeur." #: ../Doc/faq/extending.rst:80 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:82 msgid "" @@ -122,6 +153,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` " +"retourne sa longueur et :c:func:`PyTuple_GetItem` retourne 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:87 msgid "" @@ -130,6 +165,11 @@ msgid "" "Note that Python bytes objects may contain null bytes so C's :c:func:" "`strlen` should not be used." msgstr "" +"Pour les bytes, :c:func:`PyBytes_Size` retourne sa longueur et :c:func:" +"`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa " +"longueur. Notez que les objets bytes en Python peuvent contenir des valeurs " +"nulles, c'est pourquoi il ne faut pas utiliser la fonction C :c:func:" +"`strlen`." #: ../Doc/faq/extending.rst:92 msgid "" @@ -137,6 +177,9 @@ msgid "" "use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:" "`PyList_Check`, etc." msgstr "" +"Pour tester le type d'un objet, assurez-vous d'abord qu'il n'est pas *NULL*, " +"puis utilisez :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:" +"`PyList_Check`, etc." #: ../Doc/faq/extending.rst:95 msgid "" @@ -147,18 +190,26 @@ msgid "" "as many other useful protocols such as numbers (:c:func:`PyNumber_Index` et " "al.) and mappings in the PyMapping APIs." msgstr "" +"Il y a aussi une API de haut niveau pour les objets Python qui est fournie " +"par l'interface dite 'abstraite' — voir ``Include/abstract.h`` pour plus de " +"détails. elle permet l'interfaçage avec tout type de séquence Python en " +"utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:" +"`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles " +"tels que les nombres (:c:func:`PyNumber_Index` et al.) et les " +"correspondances dans les APIs PyMapping." #: ../Doc/faq/extending.rst:104 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:106 msgid "You can't. Use :c:func:`PyTuple_Pack` instead." -msgstr "" +msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place." #: ../Doc/faq/extending.rst:110 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:112 msgid "" @@ -167,6 +218,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:121 msgid "" @@ -174,12 +229,18 @@ 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 pour " +"éventuellement « :c:func:`Py_DECREF`\\ *er* » la valeur de retour." #: ../Doc/faq/extending.rst:124 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:135 msgid "" @@ -188,12 +249,18 @@ msgid "" "format, and to call a function with one argument, surround the argument in " "parentheses, e.g. \"(i)\"." msgstr "" +"Notez que puisque :c:func:`PyObject_CallObject` veut *toujours* un tuple " +"comme liste d'arguments, 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:142 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:144 msgid "" @@ -202,22 +269,30 @@ msgid "" "print_error, or just allow the standard traceback mechanism to work. Then, " "the output will go wherever your ``write()`` method sends it." msgstr "" +"En 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 autorisez simplement le mécanisme de remontées standard à " +"fonctionner. Ensuite, le retour ira là où votre méthode ``write()`` le " +"destine." #: ../Doc/faq/extending.rst:149 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" msgstr "" +"La façon la plus simple pour ce faire est d'utiliser la classe :class:`io." +"StringIO` :" #: ../Doc/faq/extending.rst:161 msgid "A custom object to do the same would look like this:" msgstr "" +"Le code d'un objet à la fonctionnalité similaire ressemblerait à ceci :" #: ../Doc/faq/extending.rst:182 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:184 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:188 msgid "" @@ -227,22 +302,31 @@ 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 " +"retourne 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 est stocké dans :data:`sys.modules`." #: ../Doc/faq/extending.rst:194 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:199 msgid "" "Calling :c:func:`PyObject_SetAttrString` to assign to variables in the " "module also works." msgstr "" +"Appeler :c:func:`PyObject_SetAttrAttrStrString` pour assigner aux variables " +"du module fonctionne également." #: ../Doc/faq/extending.rst:204 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:206 msgid "" @@ -253,14 +337,22 @@ msgid "" "building a new Python type around a C structure (pointer) type will also " "work for C++ objects." msgstr "" +"Selon vos besoins, il existe de nombreuses approches. 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 de " +"construire un nouveau type Python autour d'une structure C (pointeur) " +"fonctionne également avec des objets en C++." #: ../Doc/faq/extending.rst:212 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:216 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:218 msgid "" @@ -268,30 +360,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 nouvelle ligne, s'il n'y a pas " +"de nouvelle ligne, le processus de compilation échoue. (La résolution de 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:224 msgid "How do I debug an extension?" -msgstr "" +msgstr "Comment déboguer une extension ?" #: ../Doc/faq/extending.rst:226 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 jusqu'à ce que " +"celle-ci soit chargée." #: ../Doc/faq/extending.rst:229 msgid "In your ``.gdbinit`` file (or interactively), add the command:" msgstr "" +"Dans votre fichier ``.gdbinit`` (ou manuellement), ajoutez la commande :" #: ../Doc/faq/extending.rst:235 msgid "Then, when you run GDB:" -msgstr "" +msgstr "Ensuite, lorsque vous exécutez GDB :" #: ../Doc/faq/extending.rst:247 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:249 msgid "" @@ -299,18 +401,25 @@ 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:253 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:255 msgid "For Debian, run ``apt-get install python-dev``." -msgstr "" +msgstr "Pour Debian, exécutez ``apt-get install python-dev``." #: ../Doc/faq/extending.rst:259 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:261 msgid "" @@ -320,12 +429,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:267 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:270 msgid "" @@ -335,6 +451,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 laissez " +"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:276 msgid "" @@ -345,6 +467,13 @@ msgid "" "error`` equal to ``E_EOF``, which means the input is incomplete. Here's a " "sample code fragment, untested, inspired by code from Alex Farber::" msgstr "" +"Cependant, vous devez parfois exécuter l'interpréteur Python intégré dans le " +"même fil d’exécution que votre application REST et vous ne pouvez pas " +"laisser :c:func:`PyRun_InteractiveLoop` s'arrêter en attendant les entrées " +"utilisateur. La seule solution est alors d'appeler :c:func:" +"`PyParser_ParseString` et de tester ``e.error`` égal à ``E_EOF``, ce qui " +"signifie que l'entrée est incomplète. Voici un exemple de code, non testé, " +"inspiré du code d'Alex Farber: :" #: ../Doc/faq/extending.rst:310 msgid "" @@ -357,10 +486,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 erreurs, essayez d'exécuter " +"l'objet code retourné 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 (vous pouvez ignorer **SIGINT** en " +"appelant *readline()*): ::" #: ../Doc/faq/extending.rst:432 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:434 msgid "" @@ -368,18 +508,26 @@ 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, le relier en utilisant g++ (modifiez *LINKCC* dans le " +"*Python Modules Makefile*), et rattacher votre module d'extension avec g++ " +"(par exemple, ``g++ -shared -o mymodule.so mymodule.o``)." #: ../Doc/faq/extending.rst:440 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. par héritage) ?" #: ../Doc/faq/extending.rst:442 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:445 msgid "" @@ -387,3 +535,6 @@ 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)." From 4f7fe8bc59bac29375131cc8f696f5df6f5ab447 Mon Sep 17 00:00:00 2001 From: Zepmanbc Date: Wed, 11 Sep 2019 18:51:22 +0200 Subject: [PATCH 2/7] Apply suggestions from code review Co-Authored-By: Christophe Nanteuil <35002064+christopheNan@users.noreply.github.com> --- faq/extending.po | 90 ++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index 7b7763f9e..0aa916fbc 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -40,7 +40,7 @@ msgstr "" #: ../Doc/faq/extending.rst:22 msgid "Most intermediate or advanced Python books will also cover this topic." msgstr "" -"La plupart des livres Python intermédiaires ou avancés couvriront également " +"La plupart des livres Python intermédiaires ou avancés couvrent également " "ce sujet." #: ../Doc/faq/extending.rst:26 @@ -57,8 +57,8 @@ msgstr "" "Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. " "Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez " "``extern \"C\"`` avant chaque fonction qui sera appelée par l'interpréteur " -"Python. Les objets globaux ou statiques C++ combinés avec les constructeurs " -"n'est probablement pas une bonne idée." +"Python. Les objets globaux ou statiques C++ ayant des constructeurs " +"ne sont probablement pas adaptés." #: ../Doc/faq/extending.rst:37 msgid "Writing C is hard; are there any alternatives?" @@ -96,12 +96,12 @@ msgid "" "html>`_, or `Weave `_ are also alternatives " "for wrapping C++ libraries." msgstr "" -"Si vous avez besoin d'interfacer avec une bibliothèque C ou C++ pour " +"Si vous avez besoin d'accéder à l'interface d'une bibliothèque C ou C++ pour " "laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer " "d'encapsuler les types de données et fonctions de la bibliothèque avec un " "outil tel que `SWIG `_. `SIP `__, `CXX `_ `Boost `_, ou " +"net/>`_, `Boost `_ ou " "`Weave `_ sont également des alternatives " "pour encapsuler des bibliothèques C++." @@ -121,7 +121,7 @@ msgid "" msgstr "" "La fonction de plus haut niveau pour ce faire est :c:func:" "`PyRun_SimpleStringString` qui prend une chaîne pour seul argument afin de " -"l'exécuter dans le contexte du module ``__main__`` et retourne ``0``` en cas " +"l'exécuter dans le contexte du module ``__main__`` et renvoie ``0``` en cas " "de succès et ``-1`` quand une exception se produit (incluant :exc:" "`SyntaxError`). Pour une meilleure maîtrise, utilisez :c:func:" "`PyRun_String` ; voir le code source pour :c:func:`PyRun_SimpleString` dans " @@ -140,7 +140,7 @@ msgid "" 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 retourne sa valeur." +"l'évalue et renvoie sa valeur." #: ../Doc/faq/extending.rst:80 msgid "How do I extract C values from a Python object?" @@ -154,7 +154,7 @@ msgid "" "func:`PyList_GetItem`." msgstr "" "Cela dépend du type d'objet. Si c'est un tuple, :c:func:`PyTuple_Size` " -"retourne sa longueur et :c:func:`PyTuple_GetItem` retourne l'élément à " +"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`." @@ -165,7 +165,7 @@ msgid "" "Note that Python bytes objects may contain null bytes so C's :c:func:" "`strlen` should not be used." msgstr "" -"Pour les bytes, :c:func:`PyBytes_Size` retourne sa longueur et :c:func:" +"Pour les bytes, :c:func:`PyBytes_Size` renvoie sa longueur et :c:func:" "`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa " "longueur. Notez que les objets bytes en Python peuvent contenir des valeurs " "nulles, c'est pourquoi il ne faut pas utiliser la fonction C :c:func:" @@ -195,7 +195,7 @@ msgstr "" "détails. elle permet l'interfaçage avec tout type de séquence Python en " "utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:" "`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles " -"tels que les nombres (:c:func:`PyNumber_Index` et al.) et les " +"tels que les nombres (:c:func:`PyNumber_Index` et autres) et les " "correspondances dans les APIs PyMapping." #: ../Doc/faq/extending.rst:104 @@ -221,7 +221,7 @@ 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: ::" +"`Py_BuildValue` et les valeurs des arguments ::" #: ../Doc/faq/extending.rst:121 msgid "" @@ -240,7 +240,7 @@ msgid "" 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:135 msgid "" @@ -249,9 +249,9 @@ msgid "" "format, and to call a function with one argument, surround the argument in " "parentheses, e.g. \"(i)\"." msgstr "" -"Notez que puisque :c:func:`PyObject_CallObject` veut *toujours* un tuple " -"comme liste d'arguments, pour appeler une fonction sans arguments, utilisez " -"\"()\" pour être conforme au type, et pour appeler une fonction avec un " +"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:142 @@ -269,16 +269,16 @@ msgid "" "print_error, or just allow the standard traceback mechanism to work. Then, " "the output will go wherever your ``write()`` method sends it." msgstr "" -"En code Python, définissez un objet qui possède la méthode ``write()``. " +"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 autorisez simplement le mécanisme de remontées standard à " -"fonctionner. Ensuite, le retour ira là où votre méthode ``write()`` le " -"destine." +"*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:149 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" msgstr "" -"La façon la plus simple pour ce faire est d'utiliser la classe :class:`io." +"La façon la plus simple consiste à utiliser la classe :class:`io." "StringIO` :" #: ../Doc/faq/extending.rst:161 @@ -292,7 +292,7 @@ msgstr "Comment accéder à un module écrit en Python à partir de C ?" #: ../Doc/faq/extending.rst:184 msgid "You can get a pointer to the module object as follows::" -msgstr "Vous pouvez obtenir un pointeur sur l'objet module comme suit: ::" +msgstr "Vous pouvez obtenir un pointeur sur l'objet module comme suit ::" #: ../Doc/faq/extending.rst:188 msgid "" @@ -304,9 +304,9 @@ msgid "" 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 " -"retourne simplement la valeur de ``sys.modules[\"\"]``. Notez " +"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 est stocké dans :data:`sys.modules`." +"seulement qu'il a été initialisé et qu'il est stocké dans :data:`sys.modules`." #: ../Doc/faq/extending.rst:194 msgid "" @@ -314,14 +314,14 @@ msgid "" "module) as follows::" msgstr "" "Vous pouvez alors accéder aux attributs du module (c.-à-d. à tout nom défini " -"dans le module) comme suit: ::" +"dans le module) comme suit ::" #: ../Doc/faq/extending.rst:199 msgid "" "Calling :c:func:`PyObject_SetAttrString` to assign to variables in the " "module also works." msgstr "" -"Appeler :c:func:`PyObject_SetAttrAttrStrString` pour assigner aux variables " +"Appeler :c:func:`PyObject_SetAttrString` pour assigner des valeurs aux variables " "du module fonctionne également." #: ../Doc/faq/extending.rst:204 @@ -337,11 +337,11 @@ msgid "" "building a new Python type around a C structure (pointer) type will also " "work for C++ objects." msgstr "" -"Selon vos besoins, il existe de nombreuses approches. Pour le faire " +"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 de " -"construire un nouveau type Python autour d'une structure C (pointeur) " +"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:212 @@ -360,8 +360,8 @@ 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 nouvelle ligne, s'il n'y a pas " -"de nouvelle ligne, le processus de compilation échoue. (La résolution de ce " +"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)." @@ -418,8 +418,8 @@ msgstr "Pour Debian, exécutez ``apt-get install python-dev``." #: ../Doc/faq/extending.rst:259 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*) ?" +"Comment distinguer une « entrée incomplète » (*incomplete input*) d'une « " +"entrée invalide » (*invalid input*) ?" #: ../Doc/faq/extending.rst:261 msgid "" @@ -441,7 +441,7 @@ msgid "" "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 ." +"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise." #: ../Doc/faq/extending.rst:270 msgid "" @@ -452,7 +452,7 @@ msgid "" "``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 laissez " +"`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/" @@ -468,12 +468,12 @@ msgid "" "sample code fragment, untested, inspired by code from Alex Farber::" msgstr "" "Cependant, vous devez parfois exécuter l'interpréteur Python intégré dans le " -"même fil d’exécution que votre application REST et vous ne pouvez pas " -"laisser :c:func:`PyRun_InteractiveLoop` s'arrêter en attendant les entrées " +"même fil d’exécution que le reste de votre application et vous ne pouvez pas " +"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées " "utilisateur. La seule solution est alors d'appeler :c:func:" -"`PyParser_ParseString` et de tester ``e.error`` égal à ``E_EOF``, ce qui " +"`PyParser_ParseString` et de tester si ``e.error`` égale ``E_EOF``, ce qui " "signifie que l'entrée est incomplète. Voici un exemple de code, non testé, " -"inspiré du code d'Alex Farber: :" +"inspiré d'un code écrit par Alex Farber ::" #: ../Doc/faq/extending.rst:310 msgid "" @@ -487,14 +487,14 @@ msgid "" "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 erreurs, essayez d'exécuter " -"l'objet code retourné en appelant :c:func:`PyEval_EvalCode`. Sinon, " +"`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 (vous pouvez ignorer **SIGINT** en " -"appelant *readline()*): ::" +"de la bibliothèque *readline* de GNU (il vous est possible d'ignorer **SIGINT** lors de " +"l'appel à *readline()*) ::" #: ../Doc/faq/extending.rst:432 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" @@ -509,8 +509,8 @@ msgid "" "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, le relier en utilisant g++ (modifiez *LINKCC* dans le " -"*Python Modules Makefile*), et rattacher votre module d'extension avec g++ " +"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:440 @@ -519,7 +519,7 @@ msgid "" "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. par héritage) ?" +"et d'autres en Python (p. ex. en utilisant l'héritage) ?" #: ../Doc/faq/extending.rst:442 msgid "" From 3cc14d4ff503b68d718edc612da72135bec5770a Mon Sep 17 00:00:00 2001 From: ZepmanBC Date: Wed, 11 Sep 2019 19:03:08 +0200 Subject: [PATCH 3/7] =?UTF-8?q?powrap=20+=20espaces=20ins=C3=A9cable=20pou?= =?UTF-8?q?r=20=C2=AB=20texte=20=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- faq/extending.po | 73 ++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index 0aa916fbc..4ffc3813d 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -40,8 +40,8 @@ msgstr "" #: ../Doc/faq/extending.rst:22 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." +"La plupart des livres Python intermédiaires ou avancés couvrent également ce " +"sujet." #: ../Doc/faq/extending.rst:26 msgid "Can I create my own functions in C++?" @@ -57,8 +57,8 @@ msgstr "" "Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. " "Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez " "``extern \"C\"`` avant chaque fonction qui sera appelée par l'interpréteur " -"Python. Les objets globaux ou statiques C++ ayant des constructeurs " -"ne sont probablement pas adaptés." +"Python. Les objets globaux ou statiques C++ ayant des constructeurs ne sont " +"probablement pas adaptés." #: ../Doc/faq/extending.rst:37 msgid "Writing C is hard; are there any alternatives?" @@ -154,9 +154,9 @@ msgid "" "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`." +"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:87 msgid "" @@ -231,7 +231,7 @@ msgid "" 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 pour " -"éventuellement « :c:func:`Py_DECREF`\\ *er* » la valeur de retour." +"éventuellement « :c:func:`Py_DECREF`\\ *er* » la valeur de retour." #: ../Doc/faq/extending.rst:124 msgid "" @@ -249,8 +249,8 @@ 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 " +"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)\"." @@ -269,17 +269,16 @@ 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." +"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:149 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" msgstr "" -"La façon la plus simple consiste à utiliser la classe :class:`io." -"StringIO` :" +"La façon la plus simple consiste à utiliser la classe :class:`io.StringIO` :" #: ../Doc/faq/extending.rst:161 msgid "A custom object to do the same would look like this:" @@ -306,7 +305,8 @@ msgstr "" "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`." +"seulement qu'il a été initialisé et qu'il est stocké dans :data:`sys." +"modules`." #: ../Doc/faq/extending.rst:194 msgid "" @@ -321,8 +321,8 @@ 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." +"Appeler :c:func:`PyObject_SetAttrString` pour assigner des valeurs aux " +"variables du module fonctionne également." #: ../Doc/faq/extending.rst:204 msgid "How do I interface to C++ objects from Python?" @@ -360,10 +360,10 @@ 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)." +"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:224 msgid "How do I debug an extension?" @@ -418,8 +418,8 @@ msgstr "Pour Debian, exécutez ``apt-get install python-dev``." #: ../Doc/faq/extending.rst:259 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*) ?" +"Comment distinguer une « entrée incomplète » (*incomplete input*) d'une " +"« entrée invalide » (*invalid input*) ?" #: ../Doc/faq/extending.rst:261 msgid "" @@ -469,11 +469,11 @@ msgid "" msgstr "" "Cependant, vous devez parfois exécuter l'interpréteur Python intégré dans le " "même fil d’exécution que le reste de votre application et vous ne pouvez pas " -"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées " -"utilisateur. La seule solution est alors d'appeler :c:func:" -"`PyParser_ParseString` et de tester si ``e.error`` égale ``E_EOF``, ce qui " -"signifie que l'entrée est incomplète. Voici un exemple de code, non testé, " -"inspiré d'un code écrit par Alex Farber ::" +"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées utilisateur. " +"La seule solution est alors d'appeler :c:func:`PyParser_ParseString` et de " +"tester si ``e.error`` égale ``E_EOF``, ce qui signifie que l'entrée est " +"incomplète. Voici un exemple de code, non testé, inspiré d'un code écrit " +"par Alex Farber ::" #: ../Doc/faq/extending.rst:310 msgid "" @@ -493,8 +493,8 @@ msgstr "" "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()*) ::" +"de la bibliothèque *readline* de GNU (il vous est possible d'ignorer " +"**SIGINT** lors de l'appel à *readline()*) ::" #: ../Doc/faq/extending.rst:432 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" @@ -509,9 +509,10 @@ msgid "" "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``)." +"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:440 msgid "" From 680dc0ab1f0b5ed8f140d584170e8a8050e9b8e5 Mon Sep 17 00:00:00 2001 From: Zepmanbc Date: Thu, 10 Oct 2019 18:55:56 +0200 Subject: [PATCH 4/7] Apply suggestions from code review Co-Authored-By: Jules Lasne (jlasne) --- faq/extending.po | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index 4ffc3813d..09d975f8e 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -57,7 +57,7 @@ msgstr "" "Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. " "Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez " "``extern \"C\"`` avant chaque fonction qui sera appelée par l'interpréteur " -"Python. Les objets globaux ou statiques C++ ayant des constructeurs ne sont " +"Python. Les objets globaux ou statiques C++ ayant des constructeurs ne sont " "probablement pas adaptés." #: ../Doc/faq/extending.rst:37 @@ -83,7 +83,7 @@ msgstr "" "`Cython `_ et son cousin `Pyrex `_ sont des compilateurs qui " "acceptent une forme légèrement modifiée de Python et produisent du code C " -"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir " +"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir " "à connaître l'API C de Python." #: ../Doc/faq/extending.rst:50 @@ -99,7 +99,7 @@ msgstr "" "Si vous avez besoin d'accéder à l'interface d'une bibliothèque C ou C++ pour " "laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer " "d'encapsuler les types de données et fonctions de la bibliothèque avec un " -"outil tel que `SWIG `_. `SIP `_. `SIP `__, `CXX `_, `Boost `_ ou " "`Weave `_ sont également des alternatives " @@ -153,9 +153,9 @@ 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` " +"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 :" +"spécifié. Les listes ont des fonctions similaires, :c:func:`PyListSize` et :" "c:func:`PyList_GetItem`." #: ../Doc/faq/extending.rst:87 @@ -167,7 +167,7 @@ msgid "" msgstr "" "Pour les bytes, :c:func:`PyBytes_Size` renvoie sa longueur et :c:func:" "`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa " -"longueur. Notez que les objets bytes en Python peuvent contenir des valeurs " +"longueur. Notez que les objets bytes en Python peuvent contenir des valeurs " "nulles, c'est pourquoi il ne faut pas utiliser la fonction C :c:func:" "`strlen`." @@ -192,7 +192,7 @@ msgid "" msgstr "" "Il y a aussi une API de haut niveau pour les objets Python qui est fournie " "par l'interface dite 'abstraite' — voir ``Include/abstract.h`` pour plus de " -"détails. elle permet l'interfaçage avec tout type de séquence Python en " +"détails. Elle permet l'interfaçage avec tout type de séquence Python en " "utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:" "`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles " "tels que les nombres (:c:func:`PyNumber_Index` et autres) et les " @@ -205,7 +205,7 @@ msgstr "" #: ../Doc/faq/extending.rst:106 msgid "You can't. Use :c:func:`PyTuple_Pack` instead." -msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place." +msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place." #: ../Doc/faq/extending.rst:110 msgid "How do I call an object's method from C?" @@ -219,7 +219,7 @@ msgid "" "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 à " +"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 ::" @@ -270,10 +270,10 @@ msgid "" "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 " +"``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." +"sera dirigée vers l'endroit où votre méthode ``write()`` écrit." #: ../Doc/faq/extending.rst:149 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" @@ -303,7 +303,7 @@ msgid "" 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 " +"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`." @@ -337,9 +337,9 @@ 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 " +"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 " +"\" `. 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++." @@ -441,7 +441,7 @@ msgid "" "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." +"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise." #: ../Doc/faq/extending.rst:270 msgid "" @@ -469,10 +469,10 @@ msgid "" msgstr "" "Cependant, vous devez parfois exécuter l'interpréteur Python intégré dans le " "même fil d’exécution que le reste de votre application et vous ne pouvez pas " -"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées utilisateur. " +"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées utilisateur. " "La seule solution est alors d'appeler :c:func:`PyParser_ParseString` et de " "tester si ``e.error`` égale ``E_EOF``, ce qui signifie que l'entrée est " -"incomplète. Voici un exemple de code, non testé, inspiré d'un code écrit " +"incomplète. Voici un exemple de code, non testé, inspiré d'un code écrit " "par Alex Farber ::" #: ../Doc/faq/extending.rst:310 @@ -492,7 +492,7 @@ msgstr "" "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 " +"\"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()*) ::" From eb9aba79046732e1a379b3d78876d3e948186999 Mon Sep 17 00:00:00 2001 From: ZepmanBC Date: Thu, 10 Oct 2019 19:06:53 +0200 Subject: [PATCH 5/7] suppression des double espaces + powrap --- faq/extending.po | 65 ++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index 4ffc3813d..0a5928201 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -54,10 +54,10 @@ msgid "" "each function that is going to be called by the Python interpreter. Global " "or static C++ objects with constructors are probably not a good idea." msgstr "" -"Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. " -"Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez " +"Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. " +"Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez " "``extern \"C\"`` avant chaque fonction qui sera appelée par l'interpréteur " -"Python. Les objets globaux ou statiques C++ ayant des constructeurs ne sont " +"Python. Les objets globaux ou statiques C++ ayant des constructeurs ne sont " "probablement pas adaptés." #: ../Doc/faq/extending.rst:37 @@ -83,7 +83,7 @@ msgstr "" "`Cython `_ et son cousin `Pyrex `_ sont des compilateurs qui " "acceptent une forme légèrement modifiée de Python et produisent du code C " -"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir " +"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir " "à connaître l'API C de Python." #: ../Doc/faq/extending.rst:50 @@ -99,7 +99,7 @@ msgstr "" "Si vous avez besoin d'accéder à l'interface d'une bibliothèque C ou C++ pour " "laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer " "d'encapsuler les types de données et fonctions de la bibliothèque avec un " -"outil tel que `SWIG `_. `SIP `_. `SIP `__, `CXX `_, `Boost `_ ou " "`Weave `_ sont également des alternatives " @@ -123,7 +123,7 @@ msgstr "" "`PyRun_SimpleStringString` qui prend une chaîne pour seul argument afin de " "l'exécuter dans le contexte du module ``__main__`` et renvoie ``0``` en cas " "de succès et ``-1`` quand une exception se produit (incluant :exc:" -"`SyntaxError`). Pour une meilleure maîtrise, utilisez :c:func:" +"`SyntaxError`). Pour une meilleure maîtrise, utilisez :c:func:" "`PyRun_String` ; voir le code source pour :c:func:`PyRun_SimpleString` dans " "``Python/pythonrun.c``." @@ -153,9 +153,9 @@ 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` " +"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 :" +"spécifié. Les listes ont des fonctions similaires, :c:func:`PyListSize` et :" "c:func:`PyList_GetItem`." #: ../Doc/faq/extending.rst:87 @@ -166,10 +166,9 @@ msgid "" "`strlen` should not be used." msgstr "" "Pour les bytes, :c:func:`PyBytes_Size` renvoie sa longueur et :c:func:" -"`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa " -"longueur. Notez que les objets bytes en Python peuvent contenir des valeurs " -"nulles, c'est pourquoi il ne faut pas utiliser la fonction C :c:func:" -"`strlen`." +"`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa longueur. " +"Notez que les objets bytes en Python peuvent contenir des valeurs nulles, " +"c'est pourquoi il ne faut pas utiliser la fonction C :c:func:`strlen`." #: ../Doc/faq/extending.rst:92 msgid "" @@ -192,7 +191,7 @@ msgid "" msgstr "" "Il y a aussi une API de haut niveau pour les objets Python qui est fournie " "par l'interface dite 'abstraite' — voir ``Include/abstract.h`` pour plus de " -"détails. elle permet l'interfaçage avec tout type de séquence Python en " +"détails. elle permet l'interfaçage avec tout type de séquence Python en " "utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:" "`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles " "tels que les nombres (:c:func:`PyNumber_Index` et autres) et les " @@ -205,7 +204,7 @@ msgstr "" #: ../Doc/faq/extending.rst:106 msgid "You can't. Use :c:func:`PyTuple_Pack` instead." -msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place." +msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place." #: ../Doc/faq/extending.rst:110 msgid "How do I call an object's method from C?" @@ -219,7 +218,7 @@ msgid "" "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 à " +"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 ::" @@ -269,11 +268,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." +"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:149 msgid "The easiest way to do this is to use the :class:`io.StringIO` class:" @@ -303,7 +302,7 @@ msgid "" 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 " +"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`." @@ -337,10 +336,10 @@ 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 " +"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 " +"\" `. 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++." @@ -441,7 +440,7 @@ msgid "" "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." +"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise." #: ../Doc/faq/extending.rst:270 msgid "" @@ -469,11 +468,11 @@ msgid "" msgstr "" "Cependant, vous devez parfois exécuter l'interpréteur Python intégré dans le " "même fil d’exécution que le reste de votre application et vous ne pouvez pas " -"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées utilisateur. " -"La seule solution est alors d'appeler :c:func:`PyParser_ParseString` et de " +"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées utilisateur. La " +"seule solution est alors d'appeler :c:func:`PyParser_ParseString` et de " "tester si ``e.error`` égale ``E_EOF``, ce qui signifie que l'entrée est " -"incomplète. Voici un exemple de code, non testé, inspiré d'un code écrit " -"par Alex Farber ::" +"incomplète. Voici un exemple de code, non testé, inspiré d'un code écrit par " +"Alex Farber ::" #: ../Doc/faq/extending.rst:310 msgid "" @@ -491,10 +490,10 @@ msgstr "" "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()*) ::" +"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:432 msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?" From d8d85e53bf37b6f5de38724262579add03e64eef Mon Sep 17 00:00:00 2001 From: Zepmanbc Date: Mon, 14 Oct 2019 20:47:52 +0200 Subject: [PATCH 6/7] Apply suggestions from code review Co-Authored-By: Julien Palard --- faq/extending.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index c78a0a618..09212f79b 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -121,7 +121,7 @@ msgid "" msgstr "" "La fonction de plus haut niveau pour ce faire est :c:func:" "`PyRun_SimpleStringString` qui prend une chaîne pour seul argument afin de " -"l'exécuter dans le contexte du module ``__main__`` et renvoie ``0``` en cas " +"l'exécuter dans le contexte du module ``__main__`` et renvoie ``0`` en cas " "de succès et ``-1`` quand une exception se produit (incluant :exc:" "`SyntaxError`). Pour une meilleure maîtrise, utilisez :c:func:" "`PyRun_String` ; voir le code source pour :c:func:`PyRun_SimpleString` dans " @@ -190,7 +190,7 @@ msgid "" "al.) and mappings in the PyMapping APIs." msgstr "" "Il y a aussi une API de haut niveau pour les objets Python qui est fournie " -"par l'interface dite 'abstraite' — voir ``Include/abstract.h`` pour plus de " +"par l'interface dite « abstraite » — voir ``Include/abstract.h`` pour plus de " "détails. Elle permet l'interfaçage avec tout type de séquence Python en " "utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:" "`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles " @@ -237,7 +237,7 @@ 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 " +"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" "\") ::" @@ -258,7 +258,7 @@ 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 " +"Comment puis-je récupérer la sortie de ``PyErr_Print()`` (ou tout ce qui " "s'affiche sur *stdout*/*stderr*) ?" #: ../Doc/faq/extending.rst:144 @@ -493,13 +493,13 @@ msgstr "" "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()*) ::" +"lors de l'appel à ``readline()``) ::" #: ../Doc/faq/extending.rst:432 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* ?" +"Comment puis-je trouver les symboles g++ indéfinis ``__builtin_new`` ou " +"``__pure_virtual`` ?" #: ../Doc/faq/extending.rst:434 msgid "" From 8ff42399c4bee03911ba1ad7c5b48fb877a94796 Mon Sep 17 00:00:00 2001 From: ZepmanBC Date: Mon, 14 Oct 2019 20:57:29 +0200 Subject: [PATCH 7/7] review Julien + powrap extending.rst:121: reformulation extending.rst:124: *f* extending.rst:226: reformulation --- faq/extending.po | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/faq/extending.po b/faq/extending.po index 09212f79b..b40d562af 100644 --- a/faq/extending.po +++ b/faq/extending.po @@ -190,8 +190,8 @@ msgid "" "al.) and mappings in the PyMapping APIs." msgstr "" "Il y a aussi une API de haut niveau pour les objets Python qui est fournie " -"par l'interface dite « abstraite » — voir ``Include/abstract.h`` pour plus de " -"détails. Elle permet l'interfaçage avec tout type de séquence Python en " +"par l'interface dite « abstraite » — voir ``Include/abstract.h`` pour plus " +"de détails. Elle permet l'interfaçage avec tout type de séquence Python en " "utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:" "`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles " "tels que les nombres (:c:func:`PyNumber_Index` et autres) et les " @@ -229,17 +229,16 @@ msgid "" "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 pour " -"éventuellement « :c:func:`Py_DECREF`\\ *er* » la valeur de retour." +"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:124 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" -"\") ::" +"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:135 msgid "" @@ -374,8 +373,8 @@ msgid "" "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 jusqu'à ce que " -"celle-ci soit chargée." +"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:229 msgid "In your ``.gdbinit`` file (or interactively), add the command:"