diff --git a/dict b/dict index 19152a87..b720c74b 100644 --- a/dict +++ b/dict @@ -204,6 +204,7 @@ world wxwidgets x11 x86 +YAML zope émoji ı diff --git a/howto/curses.po b/howto/curses.po index d90a8f89..f21df419 100644 --- a/howto/curses.po +++ b/howto/curses.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-05-22 23:13+0200\n" -"PO-Revision-Date: 2020-09-04 23:34+0200\n" +"PO-Revision-Date: 2022-12-16 14:42+0100\n" "Last-Translator: Khaïs COLIN \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" -"X-Generator: Poedit 2.2.4\n" +"X-Generator: Poedit 3.2.1\n" #: howto/curses.rst:5 msgid "Curses Programming with Python" @@ -141,6 +141,9 @@ msgid "" "ported version called `UniCurses `_ is " "available." msgstr "" +"La version Windows de Python n'inclut pas le module :mod:`curses`. Une " +"version portée appelée `UniCurses `_ est " +"disponible." #: howto/curses.rst:62 msgid "The Python curses module" @@ -295,7 +298,7 @@ msgstr "" "la gestion des couleurs est possible. :func:`wrapper` lance l'appelable " "fourni. Une fois que l'appelable termine, :func:`wrapper` restaure l'état " "d'origine du terminal. L'appelable est appelé à l'intérieur d'un :keyword:" -"`try`...\\ :keyword:`except` qui capture les exceptions, restaure l'état du " +"`try`…\\ :keyword:`except` qui capture les exceptions, restaure l'état du " "terminal, puis relève l'exception. Par conséquent, votre terminal ne reste " "pas dans un drôle d'état au moment de l'exception et vous pourrez lire le " "message de l'exception et la trace de la pile d'appels." @@ -568,7 +571,6 @@ msgstr "" "suivante." #: howto/curses.rst:298 -#, fuzzy msgid "" "The :meth:`~curses.window.addstr` method takes a Python string or bytestring " "as the value to be displayed. The contents of bytestrings are sent to the " @@ -580,8 +582,7 @@ msgstr "" "suite d'octets Python. Le contenu des chaînes d'octets est envoyé vers le " "terminal tel quel. Les chaînes sont encodées en octets en utilisant la " "valeur de l'attribut :attr:`encoding` de la fenêtre ; c'est par défaut " -"l'encodage du système tel que renvoyé par :func:`locale." -"getpreferredencoding`." +"l'encodage du système tel que renvoyé par :func:`locale.getencoding`." #: howto/curses.rst:304 msgid "" diff --git a/howto/descriptor.po b/howto/descriptor.po index 16825a53..28fde706 100644 --- a/howto/descriptor.po +++ b/howto/descriptor.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-05-22 23:13+0200\n" -"PO-Revision-Date: 2021-12-16 17:28+0100\n" +"PO-Revision-Date: 2022-12-16 14:41+0100\n" "Last-Translator: Mathieu Dupuy \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" -"X-Generator: Poedit 2.3\n" +"X-Generator: Poedit 3.2.1\n" #: howto/descriptor.rst:5 msgid "Descriptor HowTo Guide" @@ -44,30 +44,44 @@ msgid "" ":term:`Descriptors ` let objects customize attribute lookup, " "storage, and deletion." msgstr "" +"Les :term:`descripteurs ` permettent de personnaliser la " +"recherche, le stockage et la suppression des attributs des objets." #: howto/descriptor.rst:16 msgid "This guide has four major sections:" -msgstr "" +msgstr "Ce guide comporte quatre parties principales :" +# suit un : , début d'énumération #: howto/descriptor.rst:18 msgid "" "The \"primer\" gives a basic overview, moving gently from simple examples, " "adding one feature at a time. Start here if you're new to descriptors." msgstr "" +"l'« introduction » donne un premier aperçu, en partant d'exemples simples, " +"puis en ajoutant une fonctionnalité à la fois. Commencez par là si vous " +"débutez avec les descripteurs ;" +# énumération #: howto/descriptor.rst:21 msgid "" "The second section shows a complete, practical descriptor example. If you " "already know the basics, start there." msgstr "" +"la deuxième partie montre un exemple de descripteur complet et pratique. Si " +"vous connaissez déjà les bases, commencez par là ;" +# énumération #: howto/descriptor.rst:24 msgid "" "The third section provides a more technical tutorial that goes into the " "detailed mechanics of how descriptors work. Most people don't need this " "level of detail." msgstr "" +"la troisième partie fournit un didacticiel plus technique qui décrit de " +"manière détaillée comment fonctionnent les descripteurs. La plupart des gens " +"n'ont pas besoin de ce niveau de détail ;" +# fin d'énumération #: howto/descriptor.rst:28 msgid "" "The last section has pure Python equivalents for built-in descriptors that " @@ -75,38 +89,51 @@ msgid "" "bound methods or about the implementation of common tools like :func:" "`classmethod`, :func:`staticmethod`, :func:`property`, and :term:`__slots__`." msgstr "" +"la dernière partie contient des équivalents en pur Python des descripteurs " +"natifs écrits en C. Lisez ceci si vous êtes curieux de savoir comment les " +"fonctions se transforment en méthodes liées ou si vous voulez connaître " +"l'implémentation d'outils courants comme :func:`classmethod`, :func:" +"`staticmethod`, :func:`property` et :term:`__slots__`." #: howto/descriptor.rst:36 msgid "Primer" -msgstr "" +msgstr "Introduction" #: howto/descriptor.rst:38 msgid "" "In this primer, we start with the most basic possible example and then we'll " "add new capabilities one by one." msgstr "" +"Dans cette introduction, nous commençons par l'exemple le plus simple " +"possible, puis nous ajoutons de nouvelles fonctionnalités une par une." #: howto/descriptor.rst:43 msgid "Simple example: A descriptor that returns a constant" -msgstr "" +msgstr "Un exemple simple : un descripteur qui renvoie une constante" #: howto/descriptor.rst:45 msgid "" "The :class:`Ten` class is a descriptor whose :meth:`__get__` method always " "returns the constant ``10``:" msgstr "" +"La classe :class:`Ten` est un descripteur dont la méthode :meth:`__get__` " +"renvoie toujours la constante ``10`` :" #: howto/descriptor.rst:54 msgid "" "To use the descriptor, it must be stored as a class variable in another " "class:" msgstr "" +"Pour utiliser le descripteur, il doit être stocké en tant que variable de " +"classe dans une autre classe :" #: howto/descriptor.rst:62 msgid "" "An interactive session shows the difference between normal attribute lookup " "and descriptor lookup:" msgstr "" +"Une session interactive montre la différence entre la recherche d'attribut " +"normale et la recherche *via* un descripteur :" #: howto/descriptor.rst:73 msgid "" @@ -115,39 +142,55 @@ msgid "" "descriptor instance, recognized by its ``__get__`` method. Calling that " "method returns ``10``." msgstr "" +"Dans la recherche d'attribut ``a.x``, l'opérateur « point » trouve ``'x': " +"5`` dans le dictionnaire de classe. Dans la recherche ``a.y``, l'opérateur " +"« point » trouve une instance de descripteur, reconnue par sa méthode " +"``__get__``. L'appel de cette méthode renvoie ``10``." #: howto/descriptor.rst:78 msgid "" "Note that the value ``10`` is not stored in either the class dictionary or " "the instance dictionary. Instead, the value ``10`` is computed on demand." msgstr "" +"Notez que la valeur ``10`` n'est stockée ni dans le dictionnaire de classe " +"ni dans le dictionnaire d'instance. Non, la valeur ``10`` est calculée à la " +"demande." #: howto/descriptor.rst:81 msgid "" "This example shows how a simple descriptor works, but it isn't very useful. " "For retrieving constants, normal attribute lookup would be better." msgstr "" +"Cet exemple montre comment fonctionne un descripteur simple, mais il n'est " +"pas très utile. Pour récupérer des constantes, une recherche d'attribut " +"normale est préférable." #: howto/descriptor.rst:84 msgid "" "In the next section, we'll create something more useful, a dynamic lookup." msgstr "" +"Dans la section suivante, nous allons créer quelque chose de plus utile, une " +"recherche dynamique." #: howto/descriptor.rst:88 msgid "Dynamic lookups" -msgstr "" +msgstr "Recherches dynamiques" #: howto/descriptor.rst:90 msgid "" "Interesting descriptors typically run computations instead of returning " "constants:" msgstr "" +"Les descripteurs intéressants exécutent généralement des calculs au lieu de " +"renvoyer des constantes :" #: howto/descriptor.rst:109 msgid "" "An interactive session shows that the lookup is dynamic — it computes " "different, updated answers each time::" msgstr "" +"Une session interactive montre que la recherche est dynamique — elle calcule " +"des réponses différentes, mises à jour à chaque fois ::" #: howto/descriptor.rst:122 msgid "" @@ -158,10 +201,16 @@ msgid "" "that lets the :meth:`__get__` method learn the target directory. The " "*objtype* parameter is the class *Directory*." msgstr "" +"En plus de montrer comment les descripteurs peuvent exécuter des calculs, " +"cet exemple révèle également le but des paramètres de :meth:`__get__`. Le " +"paramètre *self* est *size*, une instance de *DirectorySize*. Le paramètre " +"*obj* est soit *g* soit *s*, une instance de *Directory*. C'est le paramètre " +"*obj* qui permet à la méthode :meth:`__get__` de connaître le répertoire " +"cible. Le paramètre *objtype* est la classe *Directory*." #: howto/descriptor.rst:131 msgid "Managed attributes" -msgstr "" +msgstr "Attributs gérés" #: howto/descriptor.rst:133 msgid "" @@ -171,6 +220,12 @@ msgid "" "dictionary. The descriptor's :meth:`__get__` and :meth:`__set__` methods " "are triggered when the public attribute is accessed." msgstr "" +"Une utilisation courante des descripteurs est la gestion de l'accès aux " +"données d'instances. Le descripteur est affecté à un attribut public dans le " +"dictionnaire de classe tandis que les données réelles sont stockées en tant " +"qu'attribut privé dans le dictionnaire d'instance. Les méthodes :meth:" +"`__get__` et :meth:`__set__` du descripteur sont déclenchées lors de l'accès " +"à l'attribut public." #: howto/descriptor.rst:139 msgid "" @@ -178,12 +233,18 @@ msgid "" "private attribute. When the public attribute is accessed, the descriptor " "logs the lookup or update:" msgstr "" +"Dans l'exemple qui suit, *age* est l'attribut public et *_age* est " +"l'attribut privé. Lors de l'accès à l'attribut public, le descripteur " +"journalise la recherche ou la mise à jour :" #: howto/descriptor.rst:172 msgid "" "An interactive session shows that all access to the managed attribute *age* " "is logged, but that the regular attribute *name* is not logged:" msgstr "" +"Une session interactive montre que tous les accès à l'attribut géré *age* " +"sont consignés, mais que rien n'est journalisé pour l'attribut normal " +"*name* :" #: howto/descriptor.rst:206 msgid "" @@ -192,16 +253,22 @@ msgid "" "only have one logged attribute and that its name is unchangeable. In the " "next example, we'll fix that problem." msgstr "" +"Un problème majeur avec cet exemple est que le nom privé *_age* est écrit en " +"dur dans la classe *LoggedAgeAccess*. Cela signifie que chaque instance ne " +"peut avoir qu'un seul attribut journalisé et que son nom est immuable. Dans " +"l'exemple suivant, nous allons résoudre ce problème." #: howto/descriptor.rst:213 msgid "Customized names" -msgstr "" +msgstr "Noms personnalisés" #: howto/descriptor.rst:215 msgid "" "When a class uses descriptors, it can inform each descriptor about which " "variable name was used." msgstr "" +"Lorsqu'une classe utilise des descripteurs, elle peut informer chaque " +"descripteur du nom de variable utilisé." #: howto/descriptor.rst:218 msgid "" @@ -211,6 +278,11 @@ msgid "" "can be recorded, giving each descriptor its own *public_name* and " "*private_name*:" msgstr "" +"Dans cet exemple, la classe :class:`Person` a deux instances de " +"descripteurs, *name* et *age*. Lorsque la classe :class:`Person` est " +"définie, :meth:`__set_name__` est appelée automatiquement dans " +"*LoggedAccess* afin que les noms de champs puissent être enregistrés, en " +"donnant à chaque descripteur ses propres *public_name* et *private_name* :" #: howto/descriptor.rst:256 msgid "" @@ -218,24 +290,30 @@ msgid "" "`__set_name__` so that the field names would be recorded. Here we call :" "func:`vars` to look up the descriptor without triggering it:" msgstr "" +"Une session interactive montre que la classe :class:`Person` a appelé :meth:" +"`__set_name__` pour que les noms des champs soient enregistrés. Ici, nous " +"appelons :func:`vars` pour rechercher le descripteur sans le déclencher :" #: howto/descriptor.rst:267 msgid "The new class now logs access to both *name* and *age*:" msgstr "" +"La nouvelle classe enregistre désormais l'accès à la fois à *name* et *age* :" #: howto/descriptor.rst:284 msgid "The two *Person* instances contain only the private names:" -msgstr "" +msgstr "Les deux instances de *Person* ne contiennent que les noms privés :" #: howto/descriptor.rst:295 msgid "Closing thoughts" -msgstr "" +msgstr "Réflexions finales" #: howto/descriptor.rst:297 msgid "" "A :term:`descriptor` is what we call any object that defines :meth:" "`__get__`, :meth:`__set__`, or :meth:`__delete__`." msgstr "" +"Nous appelons :term:`descripteur ` tout objet qui définit :meth:" +"`__get__`, :meth:`__set__` ou :meth:`__delete__`." #: howto/descriptor.rst:300 msgid "" @@ -244,6 +322,11 @@ msgid "" "it was created or the name of class variable it was assigned to. (This " "method, if present, is called even if the class is not a descriptor.)" msgstr "" +"Facultativement, les descripteurs peuvent avoir une méthode :meth:" +"`__set_name__`. Elle n'est utile que dans les cas où un descripteur doit " +"connaître soit la classe dans laquelle il a été créé, soit le nom de la " +"variable de classe à laquelle il a été affecté (cette méthode, si elle est " +"présente, est appelée même si la classe n'est pas un descripteur)." #: howto/descriptor.rst:305 msgid "" @@ -251,18 +334,28 @@ msgid "" "descriptor is accessed indirectly with ``vars(some_class)" "[descriptor_name]``, the descriptor instance is returned without invoking it." msgstr "" +"Les descripteurs sont invoqués par l'opérateur « point » lors de la " +"recherche d'attribut. Si on accède indirectement au descripteur avec " +"``vars(some_class)[descriptor_name]``, l'instance du descripteur est " +"renvoyée sans l'invoquer." #: howto/descriptor.rst:309 msgid "" "Descriptors only work when used as class variables. When put in instances, " "they have no effect." msgstr "" +"Les descripteurs ne fonctionnent que lorsqu'ils sont utilisés comme " +"variables de classe. Lorsqu'ils sont placés dans des instances, ils n'ont " +"aucun effet." #: howto/descriptor.rst:312 msgid "" "The main motivation for descriptors is to provide a hook allowing objects " "stored in class variables to control what happens during attribute lookup." msgstr "" +"La principale raison d'être des descripteurs est de fournir un point " +"d'entrée permettant aux objets stockés dans des variables de classe de " +"contrôler ce qui se passe lors de la recherche d'attributs." #: howto/descriptor.rst:315 msgid "" @@ -270,6 +363,9 @@ msgid "" "Descriptors invert that relationship and allow the data being looked-up to " "have a say in the matter." msgstr "" +"Traditionnellement, la classe appelante contrôle ce qui se passe pendant la " +"recherche. Les descripteurs inversent cette relation et permettent aux " +"données recherchées d'avoir leur mot à dire." #: howto/descriptor.rst:319 msgid "" @@ -278,20 +374,26 @@ msgid "" "`staticmethod`, :func:`property`, and :func:`functools.cached_property` are " "all implemented as descriptors." msgstr "" +"Les descripteurs sont utilisés partout dans le langage. C'est ainsi que les " +"fonctions se transforment en méthodes liées. Les outils courants tels que :" +"func:`classmethod`, :func:`staticmethod`, :func:`property` et :func:" +"`functools.cached_property` sont tous implémentés en tant que descripteurs." #: howto/descriptor.rst:326 msgid "Complete Practical Example" -msgstr "" +msgstr "Exemple complet pratique" #: howto/descriptor.rst:328 msgid "" "In this example, we create a practical and powerful tool for locating " "notoriously hard to find data corruption bugs." msgstr "" +"Dans cet exemple, nous créons un outil pratique et puissant pour localiser " +"les bogues de corruption de données notoirement difficiles à trouver." #: howto/descriptor.rst:333 msgid "Validator class" -msgstr "" +msgstr "Classe « validateur »" #: howto/descriptor.rst:335 msgid "" @@ -300,31 +402,43 @@ msgid "" "restrictions. If those restrictions aren't met, it raises an exception to " "prevent data corruption at its source." msgstr "" +"Un validateur est un descripteur pour l'accès aux attributs gérés. Avant de " +"stocker des données, il vérifie que la nouvelle valeur respecte différentes " +"restrictions de type et de plage. Si ces restrictions ne sont pas " +"respectées, il lève une exception pour empêcher la corruption des données à " +"la source." #: howto/descriptor.rst:340 msgid "" "This :class:`Validator` class is both an :term:`abstract base class` and a " "managed attribute descriptor:" msgstr "" +"Cette classe :class:`Validator` est à la fois une :term:`classe mère " +"abstraite ` et un descripteur d'attributs gérés :" #: howto/descriptor.rst:363 msgid "" "Custom validators need to inherit from :class:`Validator` and must supply a :" "meth:`validate` method to test various restrictions as needed." msgstr "" +"Les validateurs personnalisés doivent hériter de :class:`Validator` et " +"doivent fournir une méthode :meth:`validate` pour tester diverses " +"restrictions adaptées aux besoins." #: howto/descriptor.rst:368 msgid "Custom validators" -msgstr "" +msgstr "Validateurs personnalisés" #: howto/descriptor.rst:370 msgid "Here are three practical data validation utilities:" -msgstr "" +msgstr "Voici trois utilitaires concrets de validation de données :" #: howto/descriptor.rst:372 msgid "" ":class:`OneOf` verifies that a value is one of a restricted set of options." msgstr "" +":class:`OneOf` vérifie qu'une valeur fait partie d'un ensemble limité de " +"valeurs ;" #: howto/descriptor.rst:374 msgid "" @@ -332,6 +446,9 @@ msgid "" "`float`. Optionally, it verifies that a value is between a given minimum or " "maximum." msgstr "" +":class:`Number` vérifie qu'une valeur est soit un :class:`int` soit un :" +"class:`float`. Facultativement, il vérifie qu'une valeur se situe entre un " +"minimum ou un maximum donnés ;" #: howto/descriptor.rst:378 msgid "" @@ -340,28 +457,36 @@ msgid "" "`predicate `_ " "as well." msgstr "" +":class:`String` vérifie qu'une valeur est une :class:`chaîne de caractères " +"`. Éventuellement, il valide les longueurs minimale ou maximale " +"données. Il peut également valider un `prédicat `_ défini par l'utilisateur." #: howto/descriptor.rst:437 msgid "Practical application" -msgstr "" +msgstr "Application pratique" #: howto/descriptor.rst:439 msgid "Here's how the data validators can be used in a real class:" msgstr "" +"Voici comment les validateurs de données peuvent être utilisés par une " +"classe réelle :" #: howto/descriptor.rst:454 msgid "The descriptors prevent invalid instances from being created:" -msgstr "" +msgstr "Les descripteurs empêchent la création d'instances non valides :" #: howto/descriptor.rst:481 msgid "Technical Tutorial" -msgstr "" +msgstr "Tutoriel technique" #: howto/descriptor.rst:483 msgid "" "What follows is a more technical tutorial for the mechanics and details of " "how descriptors work." msgstr "" +"Ce qui suit est un tutoriel plus technique relatif aux mécanismes et détails " +"de fonctionnement des descripteurs." #: howto/descriptor.rst:488 msgid "Abstract" @@ -372,38 +497,37 @@ msgid "" "Defines descriptors, summarizes the protocol, and shows how descriptors are " "called. Provides an example showing how object relational mappings work." msgstr "" +"Ce tutoriel définit des descripteurs, résume le protocole et montre comment " +"les descripteurs sont appelés. Il fournit un exemple montrant comment " +"fonctionnent les correspondances relationnelles entre objets." #: howto/descriptor.rst:493 -#, fuzzy msgid "" "Learning about descriptors not only provides access to a larger toolset, it " "creates a deeper understanding of how Python works." msgstr "" "L'apprentissage des descripteurs permet non seulement d'accéder à un " "ensemble d'outils plus vaste, mais aussi de mieux comprendre le " -"fonctionnement de Python et d'apprécier l'élégance de sa conception." +"fonctionnement de Python." #: howto/descriptor.rst:498 -#, fuzzy msgid "Definition and introduction" msgstr "Définition et introduction" #: howto/descriptor.rst:500 -#, fuzzy msgid "" "In general, a descriptor is an attribute value that has one of the methods " "in the descriptor protocol. Those methods are :meth:`__get__`, :meth:" "`__set__`, and :meth:`__delete__`. If any of those methods are defined for " "an attribute, it is said to be a :term:`descriptor`." msgstr "" -"En général, un descripteur est un attribut objet avec un \"comportement " -"contraignant\", dont l'accès à l'attribut a été remplacé par des méthodes " -"dans le protocole du descripteur. Ces méthodes sont : :meth:`__get__`, :" -"meth:`__set__`, et :meth:`__delete__`. Si l'une de ces méthodes est définie " -"pour un objet, il s'agit d'un descripteur." +"En général, un descripteur est la valeur d'un attribut qui possède une des " +"méthodes définies dans le « protocole descripteur ». Ces méthodes sont : :" +"meth:`__get__`, :meth:`__set__` et :meth:`__delete__`. Si l'une de ces " +"méthodes est définie pour un attribut, il s'agit d'un :term:`descripteur " +"`." #: howto/descriptor.rst:505 -#, fuzzy msgid "" "The default behavior for attribute access is to get, set, or delete the " "attribute from an object's dictionary. For instance, ``a.x`` has a lookup " @@ -415,17 +539,16 @@ msgid "" "methods were defined." msgstr "" "Le comportement par défaut pour l'accès aux attributs consiste à obtenir, " -"définir ou supprimer l'attribut du dictionnaire d'un objet. Par exemple, " -"``a. x`` a une chaîne de recherche commençant par ``a. __dict__ ['x']``, " -"puis ``type (a). __dict__ ['x']``, et continuant à travers les classes de " -"base de ``type (a)`` À l'exclusion des sous-classes. Si la valeur recherchée " -"est un objet définissant l'une des méthodes de descripteur, Python peut " -"substituer le comportement par défaut et appeler à la place la méthode " -"Descriptor. Lorsque cela se produit dans la chaîne de précédence dépend de " -"quelles méthodes descripteur ont été définies." +"définir ou supprimer l'attribut dans le dictionnaire d'un objet. Par " +"exemple, pour chercher ``a.x`` Python commence par chercher ``a." +"__dict__['x']``, puis ``type(a).__dict__['x']``, et continue la recherche en " +"utilisant la MRO (l'ordre de résolution des méthodes) de ``type(a)``. Si la " +"valeur recherchée est un objet définissant l'une des méthodes de " +"descripteur, Python remplace le comportement par défaut par un appel à la " +"méthode du descripteur. Le moment où cela se produit dans la chaîne de " +"recherche dépend des méthodes définies par le descripteur." #: howto/descriptor.rst:514 -#, fuzzy msgid "" "Descriptors are a powerful, general purpose protocol. They are the " "mechanism behind properties, methods, static methods, class methods, and :" @@ -433,26 +556,24 @@ msgid "" "simplify the underlying C code and offer a flexible set of new tools for " "everyday Python programs." msgstr "" -"Les descripteurs sont un protocole puissant et à usage général. Ils sont le " -"mécanisme derrière les propriétés, les méthodes, les méthodes statiques, les " -"méthodes de classes et :func:`super()`. Ils sont utilisés dans tout Python " -"lui-même pour implémenter les nouvelles classes de style introduites dans la " -"version 2.2. Les descripteurs simplifient le code C sous-jacent et offrent " -"un ensemble flexible de nouveaux outils pour les programmes Python " -"quotidiens." +"Les descripteurs sont un protocole puissant et à usage général. Ils " +"constituent le mécanisme qui met en œuvre les propriétés, les méthodes, les " +"méthodes statiques, les méthodes de classes et :func:`super()`. Ils sont " +"utilisés dans tout Python lui-même. Les descripteurs simplifient le code C " +"sous-jacent et offrent un ensemble flexible de nouveaux outils pour les " +"programmes Python quotidiens." #: howto/descriptor.rst:522 -#, fuzzy msgid "Descriptor protocol" msgstr "Protocole descripteur" #: howto/descriptor.rst:524 msgid "``descr.__get__(self, obj, type=None) -> value``" -msgstr "``descr.__get__(self, obj, type=None) -> value``" +msgstr "``descr.__get__(self, obj, type=None) -> valeur``" #: howto/descriptor.rst:526 msgid "``descr.__set__(self, obj, value) -> None``" -msgstr "``descr.__set__(self, obj, value) -> None``" +msgstr "``descr.__set__(self, obj, valeur) -> None``" #: howto/descriptor.rst:528 msgid "``descr.__delete__(self, obj) -> None``" @@ -464,12 +585,12 @@ msgid "" "considered a descriptor and can override default behavior upon being looked " "up as an attribute." msgstr "" -"C'est tout ce qu'il y a à faire. Définissez n'importe laquelle de ces " -"méthodes et un objet est considéré comme un descripteur et peut remplacer le " -"comportement par défaut lorsqu'il est recherché comme un attribut." +"C'est tout ce qu'il y a à faire. Définissez n'importe laquelle de ces " +"méthodes et un objet est considéré comme un descripteur ; il peut alors " +"remplacer le comportement par défaut lorsqu'il est recherché en tant " +"qu'attribut." #: howto/descriptor.rst:534 -#, fuzzy msgid "" "If an object defines :meth:`__set__` or :meth:`__delete__`, it is considered " "a data descriptor. Descriptors that only define :meth:`__get__` are called " @@ -477,8 +598,8 @@ msgid "" "possible)." msgstr "" "Si un objet définit :meth:`__set__` ou :meth:`__delete__`, il est considéré " -"comme un descripteur de données. Les descripteurs qui ne définissent que :" -"meth:`__get__` sont appelés descripteurs *non-data* (ils sont généralement " +"comme un descripteur de données. Les descripteurs qui ne définissent que :" +"meth:`__get__` sont appelés descripteurs hors-données (ils sont généralement " "utilisés pour des méthodes mais d'autres utilisations sont possibles)." #: howto/descriptor.rst:539 @@ -489,13 +610,13 @@ msgid "" "takes precedence. If an instance's dictionary has an entry with the same " "name as a non-data descriptor, the dictionary entry takes precedence." msgstr "" -"Les descripteurs de données et les descripteurs *non-data* diffèrent dans la " -"façon dont les dérogations sont calculées en ce qui concerne les entrées du " -"dictionnaire d'une instance. Si le dictionnaire d'une instance comporte une " -"entrée portant le même nom qu'un descripteur de données, le descripteur de " -"données est prioritaire. Si le dictionnaire d'une instance comporte une " -"entrée portant le même nom qu'un descripteur *non-data*, l'entrée du " -"dictionnaire a la priorité." +"Les descripteurs de données et les descripteurs hors-données diffèrent dans " +"la façon dont les changements de comportement sont calculés en ce qui " +"concerne les entrées du dictionnaire d'une instance. Si le dictionnaire " +"d'une instance comporte une entrée portant le même nom qu'un descripteur de " +"données, le descripteur de données est prioritaire. Si le dictionnaire d'une " +"instance comporte une entrée portant le même nom qu'un descripteur hors-" +"données, l'entrée du dictionnaire a la priorité." #: howto/descriptor.rst:545 msgid "" @@ -504,30 +625,31 @@ msgid "" "called. Defining the :meth:`__set__` method with an exception raising " "placeholder is enough to make it a data descriptor." msgstr "" -"Pour faire un descripteur de données en lecture seule, définissez à la fois :" +"Pour créer un descripteur de données en lecture seule, définissez à la fois :" "meth:`__get__` et :meth:`__set__` avec :meth:`__set__` levant une erreur :" -"exc:`AttributeError` quand il est appelé. Définir la méthode :meth:" -"`__set__set__` avec une exception élevant le caractère générique est " -"suffisant pour en faire un descripteur de données." +"exc:`AttributeError` quand elle est appelée. Définir la méthode :meth:" +"`__set__` ne faisant que lever cette exception est suffisant pour en faire " +"un descripteur de données." #: howto/descriptor.rst:552 msgid "Overview of descriptor invocation" -msgstr "" +msgstr "Présentation de l'appel de descripteur" #: howto/descriptor.rst:554 -#, fuzzy msgid "" "A descriptor can be called directly with ``desc.__get__(obj)`` or ``desc." "__get__(None, cls)``." msgstr "" -"Un descripteur peut être appelé directement par son nom de méthode. Par " -"exemple, ``d.__get__(obj)``." +"Un descripteur peut être appelé directement par ``desc.__get__(obj)`` ou " +"``desc.__get__(None, cls)``." #: howto/descriptor.rst:557 msgid "" "But it is more common for a descriptor to be invoked automatically from " "attribute access." msgstr "" +"Mais il est plus courant qu'un descripteur soit invoqué automatiquement à " +"partir d'un accès à un attribut." #: howto/descriptor.rst:560 msgid "" @@ -536,19 +658,22 @@ msgid "" "instance ``__dict__``, its :meth:`__get__` method is invoked according to " "the precedence rules listed below." msgstr "" +"L'expression ``obj.x`` recherche l'attribut ``x`` dans les espaces de noms " +"pour ``obj``. Si la recherche trouve un descripteur en dehors de l'instance " +"``__dict__``, sa méthode :meth:`__get__` est appelée selon les règles de " +"priorité listées ci-dessous." #: howto/descriptor.rst:565 -#, fuzzy msgid "" "The details of invocation depend on whether ``obj`` is an object, class, or " "instance of super." msgstr "" -"Les détails de l'invocation dépendent du fait que ``obj`` est un objet ou " -"une classe." +"Les détails de l'appel varient selon que ``obj`` est un objet, une classe ou " +"une instance de *super*." #: howto/descriptor.rst:570 msgid "Invocation from an instance" -msgstr "" +msgstr "Appel depuis une instance" #: howto/descriptor.rst:572 msgid "" @@ -557,18 +682,26 @@ msgid "" "descriptors, then class variables, and lastly :meth:`__getattr__` if it is " "provided." msgstr "" +"La recherche d'instance consiste à parcourir la liste d'espaces de noms en " +"donnant aux descripteurs de données la priorité la plus élevée, suivis des " +"variables d'instance, puis des descripteurs hors-données, puis des variables " +"de classe, et enfin :meth:`__getattr__` s'il est fourni." #: howto/descriptor.rst:577 msgid "" "If a descriptor is found for ``a.x``, then it is invoked with: ``desc." "__get__(a, type(a))``." msgstr "" +"Si un descripteur est trouvé pour ``a.x``, alors il est appelé par ``desc." +"__get__(a, type(a))``." #: howto/descriptor.rst:580 msgid "" "The logic for a dotted lookup is in :meth:`object.__getattribute__`. Here " "is a pure Python equivalent:" msgstr "" +"La logique d'une recherche « après un point » se trouve dans :meth:`object." +"__getattribute__`. Voici un équivalent en Python pur :" #: howto/descriptor.rst:699 msgid "" @@ -576,6 +709,10 @@ msgid "" "code. That is why calling :meth:`__getattribute__` directly or with " "``super().__getattribute__`` will bypass :meth:`__getattr__` entirely." msgstr "" +"Notez qu'il n'y a pas d'appel vers :meth:`__getattr__` dans le code de :meth:" +"`__getattribute__`. C'est pourquoi appeler :meth:`__getattribute__` " +"directement ou avec ``super().__getattribute__`` contourne entièrement :meth:" +"`__getattr__`." #: howto/descriptor.rst:703 msgid "" @@ -584,11 +721,14 @@ msgid "" "`__getattribute__` raises an :exc:`AttributeError`. Their logic is " "encapsulated in a helper function:" msgstr "" +"Au lieu, c'est l'opérateur « point » et la fonction :func:`getattr` qui sont " +"responsables de l'appel de :meth:`__getattr__` chaque fois que :meth:" +"`__getattribute__` déclenche une :exc:`AttributeError`. Cette logique est " +"présentée encapsulée dans une fonction utilitaire :" #: howto/descriptor.rst:753 -#, fuzzy msgid "Invocation from a class" -msgstr "Appelé depuis un Classe" +msgstr "Appel depuis une classe" #: howto/descriptor.rst:755 msgid "" @@ -597,91 +737,99 @@ msgid "" "__getattribute__` but the instance dictionary lookup is replaced by a search " "through the class's :term:`method resolution order`." msgstr "" +"La logique pour une recherche « après un point » telle que ``A.x`` se trouve " +"dans :meth:`type.__getattribute__`. Les étapes sont similaires à celles de :" +"meth:`object.__getattribute__` mais la recherche dans le dictionnaire " +"d'instance est remplacée par une recherche suivant l':term:`ordre de " +"résolution des méthodes ` de la classe." #: howto/descriptor.rst:760 msgid "If a descriptor is found, it is invoked with ``desc.__get__(None, A)``." msgstr "" +"Si un descripteur est trouvé, il est appelé par ``desc.__get__(None, A)``." #: howto/descriptor.rst:762 msgid "" "The full C implementation can be found in :c:func:`type_getattro()` and :c:" "func:`_PyType_Lookup()` in :source:`Objects/typeobject.c`." msgstr "" +"L'implémentation C complète peut être trouvée dans :c:func:`type_getattro()` " +"et :c:func:`_PyType_Lookup()` dans :source:`Objects/typeobject.c`." #: howto/descriptor.rst:767 msgid "Invocation from super" -msgstr "" +msgstr "Appel depuis super" #: howto/descriptor.rst:769 msgid "" "The logic for super's dotted lookup is in the :meth:`__getattribute__` " "method for object returned by :class:`super()`." msgstr "" +"La logique de la recherche « après un point » de super se trouve dans la " +"méthode :meth:`__getattribute__` de l'objet renvoyé par :class:`super()`." #: howto/descriptor.rst:772 -#, fuzzy msgid "" "A dotted lookup such as ``super(A, obj).m`` searches ``obj.__class__." "__mro__`` for the base class ``B`` immediately following ``A`` and then " "returns ``B.__dict__['m'].__get__(obj, A)``. If not a descriptor, ``m`` is " "returned unchanged." msgstr "" -"L'objet renvoyé par ``super()`` a également une méthode personnalisée :meth:" -"`__getattribute__` pour invoquer des descripteurs. La recherche d'attribut " -"``super(B, obj).m`` recherche dans ``obj.__class__.__mro__`` la classe qui " -"suit immédiatement B, appelons la A, et renvoie ``A.__dict__['m']." -"__get__(obj, B)``. Si ce n'est pas un descripteur, ``m`` est renvoyé " -"inchangé. S'il n'est pas dans le dictionnaire, la recherche de ``m`` revient " -"à une recherche utilisant :meth:`object.__getattribute__`." +"La recherche d'attribut ``super(A, obj).m`` recherche dans ``obj.__class__." +"__mro__`` la classe ``B`` qui suit immédiatement A, et renvoie ``B." +"__dict__['m'].__get__(obj, A)``. Si ce n'est pas un descripteur, ``m`` est " +"renvoyé inchangé." #: howto/descriptor.rst:777 -#, fuzzy msgid "" "The full C implementation can be found in :c:func:`super_getattro()` in :" "source:`Objects/typeobject.c`. A pure Python equivalent can be found in " "`Guido's Tutorial `_." msgstr "" -"Les détails d'implémentation sont dans :c:func:`super_getattro()` dans :" -"source:`Objects/typeobject.c` et un équivalent Python pur peut être trouvé " -"dans `Guido's Tutorial`_." +"L'implémentation C complète est dans :c:func:`super_getattro()` dans :source:" +"`Objects/typeobject.c`. Un équivalent Python pur peut être trouvé dans " +"`Guido's Tutorial `_ (page en anglais)." #: howto/descriptor.rst:784 msgid "Summary of invocation logic" -msgstr "" +msgstr "Résumé de la logique d'appel" #: howto/descriptor.rst:786 msgid "" "The mechanism for descriptors is embedded in the :meth:`__getattribute__()` " "methods for :class:`object`, :class:`type`, and :func:`super`." msgstr "" +"Le fonctionnement des descripteurs se trouve dans les méthodes :meth:" +"`__getattribute__()` de :class:`object`, :class:`type` et :func:`super`." #: howto/descriptor.rst:789 msgid "The important points to remember are:" -msgstr "Les points importants à retenir sont :" +msgstr "Les points importants à retenir sont :" #: howto/descriptor.rst:791 -#, fuzzy msgid "Descriptors are invoked by the :meth:`__getattribute__` method." -msgstr "les descripteurs sont appelés par la méthode :meth:`__getattribute__`" +msgstr "" +"les descripteurs sont appelés par la méthode :meth:`__getattribute__` ;" #: howto/descriptor.rst:793 msgid "" "Classes inherit this machinery from :class:`object`, :class:`type`, or :func:" "`super`." msgstr "" +"les classes héritent ce mécanisme de :class:`object`, :class:`type` ou :func:" +"`super` ;" #: howto/descriptor.rst:796 -#, fuzzy msgid "" "Overriding :meth:`__getattribute__` prevents automatic descriptor calls " "because all the descriptor logic is in that method." msgstr "" "redéfinir :meth:`__getattribute____` empêche les appels automatiques de " -"descripteurs" +"descripteur car toute la logique des descripteurs est dans cette méthode ;" #: howto/descriptor.rst:799 -#, fuzzy msgid "" ":meth:`object.__getattribute__` and :meth:`type.__getattribute__` make " "different calls to :meth:`__get__`. The first includes the instance and may " @@ -689,25 +837,25 @@ msgid "" "includes the class." msgstr "" ":meth:`objet.__getattribute__` et :meth:`type.__getattribute__` font " -"différents appels à :meth:`__get__`." +"différents appels à :meth:`__get__`. La première inclut l'instance et peut " +"inclure la classe. La seconde met ``None`` pour l'instance et inclut " +"toujours la classe ;" #: howto/descriptor.rst:804 -#, fuzzy msgid "Data descriptors always override instance dictionaries." msgstr "" -"les descripteurs de données remplacent toujours les dictionnaires " +"les descripteurs de données sont toujours prioritaires sur les dictionnaires " "d'instances." #: howto/descriptor.rst:806 -#, fuzzy msgid "Non-data descriptors may be overridden by instance dictionaries." msgstr "" -"les descripteurs *non-data* peuvent être remplacés par des dictionnaires " +"les descripteurs hors-données peuvent céder la priorité aux dictionnaires " "d'instance." #: howto/descriptor.rst:810 msgid "Automatic name notification" -msgstr "" +msgstr "Notification automatique des noms" #: howto/descriptor.rst:812 msgid "" @@ -718,16 +866,21 @@ msgid "" "with two arguments. The *owner* is the class where the descriptor is used, " "and the *name* is the class variable the descriptor was assigned to." msgstr "" +"Il est parfois souhaitable qu'un descripteur sache à quel nom de variable de " +"classe il a été affecté. Lorsqu'une nouvelle classe est créée, la " +"métaclasse :class:`type` parcourt le dictionnaire de la nouvelle classe. Si " +"l'une des entrées est un descripteur et si elle définit :meth:" +"`__set_name__`, cette méthode est appelée avec deux arguments : *owner* " +"(propriétaire) est la classe où le descripteur est utilisé, et *name* est la " +"variable de classe à laquelle le descripteur a été assigné." #: howto/descriptor.rst:819 -#, fuzzy msgid "" "The implementation details are in :c:func:`type_new()` and :c:func:" "`set_names()` in :source:`Objects/typeobject.c`." msgstr "" -"Les détails d'implémentation sont dans :c:func:`super_getattro()` dans :" -"source:`Objects/typeobject.c` et un équivalent Python pur peut être trouvé " -"dans `Guido's Tutorial`_." +"Les détails d'implémentation sont dans :c:func:`type_new()` et :c:func:" +"`set_names()` dans :source:`Objects/typeobject.c`." #: howto/descriptor.rst:822 msgid "" @@ -735,6 +888,10 @@ msgid "" "place at the time of class creation. If descriptors are added to the class " "afterwards, :meth:`__set_name__` will need to be called manually." msgstr "" +"Comme la logique de mise à jour est dans :meth:`type.__new__`, les " +"notifications n'ont lieu qu'au moment de la création de la classe. Si des " +"descripteurs sont ajoutés à la classe par la suite, :meth:`__set_name__` " +"doit être appelée manuellement." #: howto/descriptor.rst:828 msgid "ORM example" @@ -780,8 +937,8 @@ msgstr "" msgid "" "The descriptor protocol is simple and offers exciting possibilities. " "Several use cases are so common that they have been prepackaged into built-" -"in tools. Properties, bound methods, static methods, class methods, and " -"\\_\\_slots\\_\\_ are all based on the descriptor protocol." +"in tools. Properties, bound methods, static methods, class methods, and \\_" +"\\_slots\\_\\_ are all based on the descriptor protocol." msgstr "" "Le protocole est simple et offre des possibilités passionnantes. Plusieurs " "cas d'utilisation sont si courants qu'ils ont été regroupés en appels de " @@ -813,13 +970,12 @@ msgstr "" "géré ``x`` ::" #: howto/descriptor.rst:968 -#, fuzzy msgid "" "To see how :func:`property` is implemented in terms of the descriptor " "protocol, here is a pure Python equivalent:" msgstr "" "Pour voir comment :func:`property` est implémenté dans le protocole du " -"descripteur, voici un un équivalent Python pur ::" +"descripteur, voici un équivalent Python pur ::" #: howto/descriptor.rst:1071 msgid "" @@ -832,7 +988,6 @@ msgstr "" "ultérieures nécessitent l'intervention d'une méthode." #: howto/descriptor.rst:1075 -#, fuzzy msgid "" "For instance, a spreadsheet class may grant access to a cell value through " "``Cell('b10').value``. Subsequent improvements to the program require the " @@ -843,7 +998,7 @@ msgid "" msgstr "" "Par exemple, une classe de tableur peut donner accès à une valeur de cellule " "via ``Cell('b10').value``. Les améliorations ultérieures du programme " -"exigent que la cellule soit recalculée à chaque accès ; cependant, le " +"exigent que la cellule soit recalculée à chaque accès ; cependant, le " "programmeur ne veut pas affecter le code client existant accédant " "directement à l'attribut. La solution consiste à envelopper l'accès à " "l'attribut de valeur dans un descripteur de données de propriété ::" @@ -855,7 +1010,6 @@ msgid "" msgstr "" #: howto/descriptor.rst:1097 -#, fuzzy msgid "Functions and methods" msgstr "Fonctions et méthodes" @@ -865,7 +1019,7 @@ msgid "" "environment. Using non-data descriptors, the two are merged seamlessly." msgstr "" "Les fonctionnalités orientées objet de Python sont construites sur un " -"environnement basé sur des fonctions. À l'aide de descripteurs *non-data*, " +"environnement basé sur des fonctions. À l'aide de descripteurs hors-données, " "les deux sont fusionnés de façon transparente." #: howto/descriptor.rst:1102 @@ -901,7 +1055,7 @@ msgstr "" "Pour prendre en charge les appels de méthodes, les fonctions incluent la " "méthode :meth:`__get__` pour lier les méthodes pendant l'accès aux " "attributs. Cela signifie que toutes les fonctions sont des descripteurs " -"*non-data* qui renvoient des méthodes liées lorsqu'elles sont appelées " +"hors-données qui renvoient des méthodes liées lorsqu'elles sont appelées " "depuis un objet. En Python pur, il fonctionne comme ceci ::" #: howto/descriptor.rst:1140 @@ -949,16 +1103,15 @@ msgid "" msgstr "" #: howto/descriptor.rst:1189 -#, fuzzy msgid "Kinds of methods" -msgstr "Fonctions et méthodes" +msgstr "Types de méthodes" #: howto/descriptor.rst:1191 msgid "" "Non-data descriptors provide a simple mechanism for variations on the usual " "patterns of binding functions into methods." msgstr "" -"Les descripteurs *non-data* fournissent un mécanisme simple pour les " +"Les descripteurs hors-données fournissent un mécanisme simple pour les " "variations des patrons habituels des fonctions de liaison dans les méthodes." #: howto/descriptor.rst:1194 @@ -971,7 +1124,7 @@ msgid "" msgstr "" "Pour résumer, les fonctions ont une méthode :meth:`__get__` pour qu'elles " "puissent être converties en méthode lorsqu'on y accède comme attributs. Le " -"descripteur *non-data* transforme un appel ``obj.f(*args)``en ``f(obj, " +"descripteur hors-données transforme un appel ``obj.f(*args)``en ``f(obj, " "*args)``. Appeler ``klass.f(*args)`` devient ``f(*args)``." #: howto/descriptor.rst:1199 @@ -985,14 +1138,12 @@ msgid "Transformation" msgstr "Transformation" #: howto/descriptor.rst:1202 -#, fuzzy msgid "Called from an object" -msgstr "Appelé depuis un Objet" +msgstr "Appelé depuis un objet" #: howto/descriptor.rst:1202 -#, fuzzy msgid "Called from a class" -msgstr "Appelé depuis un Classe" +msgstr "Appelé depuis une classe" #: howto/descriptor.rst:1205 msgid "function" @@ -1023,9 +1174,8 @@ msgid "f(cls, \\*args)" msgstr "f(cls, \\*args)" #: howto/descriptor.rst:1214 -#, fuzzy msgid "Static methods" -msgstr "méthode statique" +msgstr "Méthodes statiques" #: howto/descriptor.rst:1216 msgid "" @@ -1068,7 +1218,7 @@ msgstr "" "ne dépendent pas des données. Par exemple, ``erf(x)`` est une routine de " "conversion pratique qui apparaît dans le travail statistique mais qui ne " "dépend pas directement d'un ensemble de données particulier. Elle peut être " -"appelée à partir d'un objet ou de la classe : ``s.erf(1.5) --> .9332`` ou " +"appelée à partir d'un objet ou de la classe : ``s.erf(1.5) --> .9332`` ou " "``Sample.erf(1.5) --> .9332``." #: howto/descriptor.rst:1234 @@ -1086,13 +1236,12 @@ msgid "" "Using the non-data descriptor protocol, a pure Python version of :func:" "`staticmethod` would look like this:" msgstr "" -"En utilisant le protocole de descripteur *non-data*, une version Python pure " -"de :func:`staticmethod` ressemblerait à ceci ::" +"En utilisant le protocole de descripteur hors-données, une version Python " +"pure de :func:`staticmethod` ressemblerait à ceci ::" #: howto/descriptor.rst:1290 -#, fuzzy msgid "Class methods" -msgstr "méthode de classe" +msgstr "Méthodes de classe" #: howto/descriptor.rst:1292 #, fuzzy @@ -1134,8 +1283,8 @@ msgid "" "Using the non-data descriptor protocol, a pure Python version of :func:" "`classmethod` would look like this:" msgstr "" -"En utilisant le protocole de descripteur *non-data*, une version Python pure " -"de :func:`classmethod` ressemblerait à ceci ::" +"En utilisant le protocole de descripteur hors-données, une version Python " +"pure de :func:`classmethod` ressemblerait à ceci ::" #: howto/descriptor.rst:1388 msgid "" diff --git a/howto/logging.po b/howto/logging.po index e404e913..1c369f6a 100644 --- a/howto/logging.po +++ b/howto/logging.po @@ -5,14 +5,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-10-18 15:46+0200\n" -"PO-Revision-Date: 2022-11-20 22:18+0100\n" +"PO-Revision-Date: 2022-12-16 21:06+0100\n" "Last-Translator: Jean Abou Samra \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" -"X-Generator: Poedit 2.4.2\n" +"X-Generator: Poedit 3.2.1\n" #: howto/logging.rst:3 msgid "Logging HOWTO" @@ -47,7 +47,7 @@ msgstr "" "décrit par un message descriptif, qui peut éventuellement contenir des " "données variables (c'est-à-dire qui peuvent être différentes pour chaque " "occurrence de l'événement). Un événement a aussi une importance que le " -"développeur lui attribue ; cette importance peut aussi être appelée *niveau* " +"développeur lui attribue ; cette importance peut aussi être appelée *niveau* " "ou *sévérité*." #: howto/logging.rst:23 @@ -159,7 +159,7 @@ msgid "" msgstr "" "Les fonctions de journalisation sont nommées d'après le niveau ou la " "sévérité des évènements qu'elles suivent. Les niveaux standards et leurs " -"applications sont décrits ci-dessous (par ordre croissant de sévérité) :" +"applications sont décrits ci-dessous (par ordre croissant de sévérité) :" #: howto/logging.rst:861 msgid "Level" @@ -257,7 +257,7 @@ msgstr "Un exemple très simple est ::" #: howto/logging.rst:109 msgid "If you type these lines into a script and run it, you'll see:" msgstr "" -"Si vous entrez ces lignes dans un script que vous exécutez, vous verrez :" +"Si vous entrez ces lignes dans un script que vous exécutez, vous verrez :" #: howto/logging.rst:115 msgid "" @@ -300,9 +300,9 @@ msgid "" "passed, which determines how encoding errors are handled. For available " "values and the default, see the documentation for :func:`open`." msgstr "" -"L'argument *encoding* à été rajouté. Dans les versions précédentes de " +"L'argument *encoding* a été rajouté. Dans les versions précédentes de " "Python, ou si non spécifié, l'encodage utilisé est la valeur par défaut " -"utilisée par :func:`open`. Bien que non montré dans l'exemple au dessus, un " +"utilisée par :func:`open`. Bien que non montré dans l'exemple ci-dessus, un " "argument **errors** peut aussi être passé, qui détermine comment les erreurs " "d'encodage sont gérées. Pour voir les valeurs disponibles et par défaut, " "consultez la documentation de :func:`open`." @@ -312,8 +312,8 @@ msgid "" "And now if we open the file and look at what we have, we should find the log " "messages:" msgstr "" -"Maintenant, si nous ouvrons le fichier et lisons ce qui s'y trouve, on " -"trouvera les messages de log :" +"Maintenant, si nous ouvrons le fichier et lisons ce qui s'y trouve, nous " +"trouvons les messages de journalisation :" #: howto/logging.rst:154 msgid "" @@ -393,12 +393,11 @@ msgid "" "could organize logging in it::" msgstr "" "Si votre programme est composé de plusieurs modules, voici une façon " -"d'organiser\n" -"l'outil de journalisation ::" +"d'organiser l'outil de journalisation ::" #: howto/logging.rst:224 msgid "If you run *myapp.py*, you should see this in *myapp.log*:" -msgstr "Si vous exécutez *myapp.py*, vous verrez ceci dans *myapp.log* :" +msgstr "Si vous exécutez *myapp.py*, vous verrez ceci dans *myapp.log* :" #: howto/logging.rst:232 msgid "" @@ -433,7 +432,7 @@ msgstr "" #: howto/logging.rst:250 msgid "will display:" -msgstr "affichera :" +msgstr "affiche :" #: howto/logging.rst:256 msgid "" @@ -446,7 +445,7 @@ msgid "" msgstr "" "Comme vous pouvez le voir, l'inclusion des données variables dans le message " "de description de l'évènement emploie le vieux style de formatage avec %. " -"C'est pour assurer la rétrocompatibilité : le module ``logging`` est " +"C'est pour assurer la rétrocompatibilité : le module ``logging`` est " "antérieur aux nouvelles options de formatage comme :meth:`str.format` ou :" "class:`string.Template`. Ces nouvelles options de formatage *sont* gérées, " "mais leur exploration sort du cadre de ce tutoriel, voyez :ref:`formatting-" @@ -561,7 +560,7 @@ msgid "" "slightly more advanced/in-depth tutorial than the basic one above. After " "that, you can take a look at the :ref:`logging-cookbook`." msgstr "" -"Vous êtes encore là ? Vous pouvez lire les prochaines sections, qui donnent " +"Vous êtes encore là ? Vous pouvez lire les prochaines sections, qui donnent " "un peu plus de détails que l'introduction ci-dessus. Après ça, vous pouvez " "jeter un œil à :ref:`logging-cookbook`." @@ -660,10 +659,10 @@ msgid "" "root logger's name is printed as 'root' in the logged output." msgstr "" "La racine de la hiérarchie des enregistreurs est appelée le *root logger*. " -"C'est le *logger* utilisé par les fonctions :func:`debug`, :func:`info`, :" +"C'est l'enregistreur utilisé par les fonctions :func:`debug`, :func:`info`, :" "func:`warning`, :func:`error` et :func:`critical`, qui appelle en fait les " "méthodes du même nom de l'objet *root logger*. Les fonctions et les méthodes " -"ont la même signature. Le nom du *root logger* est affiché comme " +"ont la même signature. Le nom de l'enregistreur racine est affiché comme " "« ``'root'`` » dans la sortie." #: howto/logging.rst:385 @@ -702,7 +701,7 @@ msgstr "" "fichier) en utilisant :func:`basicConfig` comme dans les exemples donnés " "dans le tutoriel. Si vous appelez les fonctions :func:`debug`, :func:" "`info`, :func:`warning`, :func:`error` et :func:`critical`, celles-ci " -"vérifient si une destination a été définie ; si ce n'est pas le cas, la " +"vérifient si une destination a été définie ; si ce n'est pas le cas, la " "destination est assignée à la console (``sys.stderr``) avec un format par " "défaut pour le message affiché, avant d'être déléguée au *logger* racine, " "qui sort le message." @@ -763,11 +762,11 @@ msgid "" "configuration and message sending." msgstr "" "Les méthodes des objets *logger* les plus utilisées appartiennent à deux " -"catégories : la configuration et l'envoi de messages." +"catégories : la configuration et l'envoi de messages." #: howto/logging.rst:430 msgid "These are the most common configuration methods:" -msgstr "Voici les méthodes de configuration les plus communes :" +msgstr "Voici les méthodes de configuration les plus communes :" #: howto/logging.rst:432 msgid "" @@ -818,7 +817,7 @@ msgid "" "With the logger object configured, the following methods create log messages:" msgstr "" "Une fois que l'objet *logger* est correctement configuré, les méthodes " -"suivantes permettent de créer un message :" +"suivantes permettent de créer un message :" #: howto/logging.rst:451 msgid "" @@ -836,7 +835,7 @@ msgstr "" "warning`, :meth:`Logger.error` et :meth:`Logger.critical` créent des entrées " "de journal avec un message et un niveau correspondant à leur nom. Le message " "est en fait une chaîne de caractères qui peut contenir la syntaxe standard " -"de substitution de chaînes de caractères : ``%s``, ``%d``, ``%f``, etc. " +"de substitution de chaînes de caractères : ``%s``, ``%d``, ``%f``, etc. " "L'argument suivant est une liste des objets correspondant aux champs à " "substituer dans le message. En ce qui concerne ``**kwargs``, les méthodes de " "``logging`` ne tiennent compte que du mot clef ``exc_info`` et l'utilisent " @@ -879,14 +878,14 @@ msgid "" "descendants of ``foo``." msgstr "" ":func:`getLogger` renvoie une référence à un objet *logger* du nom spécifié " -"si celui-ci est donné en argument. Dans le cas contraire, se sera le *logger " -"root*. Ces noms sont des structures hiérarchiques séparées par des points. " -"Des appels répétés à :func:`getLogger` avec le même nom renvoient une " -"référence au même objet *logger*. Les *loggers* qui sont plus bas dans cette " -"liste hiérarchique sont des enfants des *loggers* plus haut dans la liste. " -"Par exemple, si un *logger* a le nom ``foo``, les *loggers* avec les noms " -"``foo.bar``, ``foo.bar.baz``, et ``foo.bam`` sont tous des descendants de " -"``foo``." +"si celui-ci est donné en argument. Dans le cas contraire, c'est " +"l'enregistreur racine. Les noms sont des structures hiérarchiques séparées " +"par des points. Des appels répétés à :func:`getLogger` avec le même nom " +"renvoient une référence au même objet *logger*. Les *loggers* qui sont plus " +"bas dans cette liste hiérarchique sont des enfants des *loggers* plus haut " +"dans la liste. Par exemple, si un enregistreur a le nom ``foo``, les " +"enregistreurs avec les noms ``foo.bar``, ``foo.bar.baz`` et ``foo.bam`` sont " +"tous des descendants de ``foo``." #: howto/logging.rst:477 msgid "" @@ -902,7 +901,7 @@ msgstr "" "On associe aux *loggers* un concept de *niveau effectif*. Si aucun niveau " "n'est explicitement défini pour un *logger*, c'est le niveau du parent qui " "est utilisé comme niveau effectif. Si le parent n'a pas de niveau défini, " -"c'est celui de *son* parent qui est considéré, et ainsi de suite ; on " +"c'est celui de *son* parent qui est considéré, et ainsi de suite ; on " "examine tous les ancêtres jusqu'à ce qu'un niveau explicite soit trouvé. Le " "*logger root* a toujours un niveau explicite (``WARNING`` par défaut). Quand " "le *logger* traite un événement, c'est ce niveau effectif qui est utilisé " @@ -959,7 +958,7 @@ msgid "" "`FileHandler` in its examples." msgstr "" "La bibliothèque standard inclut déjà un bon nombre de types de gestionnaires " -"(voir :ref:`useful-handlers`) ; le tutoriel utilise surtout :class:" +"(voir :ref:`useful-handlers`) ; le tutoriel utilise surtout :class:" "`StreamHandler` et :class:`FileHandler` dans ses exemples." #: howto/logging.rst:512 @@ -971,7 +970,7 @@ msgid "" msgstr "" "Peu de méthodes des objets *handlers* sont intéressantes pour les " "développeurs. Les seules méthodes intéressantes lorsqu'on utilise les objets " -"*handlers* natifs (c'est à dire si l'on ne crée pas de *handler* " +"*handlers* natifs (c'est-à-dire si l'on ne crée pas de *handler* " "personnalisé) sont les méthodes de configuration suivantes :" #: howto/logging.rst:517 @@ -985,7 +984,7 @@ msgid "" msgstr "" "La méthode :meth:`~Handler.setLevel`, comme celle des objets *logger* permet " "de spécifier le plus bas niveau de sévérité qui sera distribué à la " -"destination appropriée. Pourquoi y a-t-il deux méthodes :func:`setLevel` ? " +"destination appropriée. Pourquoi y a-t-il deux méthodes :func:`setLevel` ? " "Le niveau défini dans le *logger* détermine quelle sévérité doit avoir un " "message pour être transmis à ses *handlers*. Le niveau mis pour chaque " "*handler* détermine quels messages seront envoyés aux destinations." @@ -1037,7 +1036,7 @@ msgstr "" "d'une application peut instancier un objet de classe *formatter*, même si " "vous pouvez toujours sous-classer *formatter* si vous avez besoin d'un " "comportement spécial dans votre application. Le constructeur a trois " -"arguments optionnels : une chaîne de formatage du message, un chaîne de " +"arguments optionnels : une chaîne de formatage du message, une chaîne de " "formatage de la date et un indicateur de style." #: howto/logging.rst:547 @@ -1047,7 +1046,7 @@ msgid "" msgstr "" "S'il n'y a pas de chaîne de formatage, la chaîne brute est utilisée par " "défaut. S'il n'y a pas de chaîne de formatage de date, le format de date par " -"défaut est :" +"défaut est :" #: howto/logging.rst:554 msgid "" @@ -1067,7 +1066,7 @@ msgid "" "conform to what is expected by :meth:`string.Template.substitute`." msgstr "" "Si l'argument ``style`` est ``%``, la chaîne de formatage utilise ``%()s`` comme style de substitution de chaîne de caractères ; " +"de dictionnaire>)s`` comme style de substitution de chaîne de caractères ; " "les clefs possibles sont documentées dans :ref:`logrecord-attributes`. Si le " "style est ``{``, le message de la chaîne de formatage est compatible avec :" "meth:`str.format` (en employant des arguments à mots clefs). Enfin si le " @@ -1100,7 +1099,7 @@ msgid "" msgstr "" "Les *formatters* emploient une fonction configurable par l'utilisateur pour " "convertir le temps de création d'une entrée de journal en un *n*-uplet. Par " -"défaut, :func:`time.localtime` est employé ; pour changer cela pour une " +"défaut, :func:`time.localtime` est employé ; pour changer cela pour une " "instance particulière de *formatter*, assignez une fonction avec la même " "signature que :func:`time.localtime` ou :func:`time.gmtime` à l'attribut " "``converter`` de cette instance. Pour changer cela pour tous les " @@ -1156,7 +1155,7 @@ msgid "" "Running this module from the command line produces the following output:" msgstr "" "L'exécution de ce module via la ligne de commande produit la sortie " -"suivante :" +"suivante :" #: howto/logging.rst:637 msgid "" @@ -1169,14 +1168,14 @@ msgstr "" #: howto/logging.rst:656 msgid "Here is the logging.conf file:" -msgstr "Voici le fichier *logging.conf* :" +msgstr "Voici le fichier *logging.conf* :" #: howto/logging.rst:688 msgid "" "The output is nearly identical to that of the non-config-file-based example:" msgstr "" "La sortie est presque identique à celle de l'exemple qui n'est pas basé sur " -"un fichier de configuration :" +"un fichier de configuration :" #: howto/logging.rst:699 msgid "" @@ -1184,11 +1183,11 @@ msgid "" "Python code approach, mainly separation of configuration and code and the " "ability of noncoders to easily modify the logging properties." msgstr "" -"Vous pouvez constatez les avantages de l'approche par fichier de " +"Vous pouvez constater les avantages de l'approche par fichier de " "configuration par rapport à celle du code Python, principalement la " "séparation de la configuration et du code, et la possibilité pour une " "personne qui ne code pas de modifier facilement les propriétés de " -"``logging``." +"journalisation." #: howto/logging.rst:703 msgid "" @@ -1202,10 +1201,10 @@ msgid "" msgstr "" "La fonction :func:`fileConfig` accepte un paramètre par défaut " "``disable_existing_loggers``, qui vaut ``True`` par défaut pour des raisons " -"de compatibilité ascendante. Ce n'est pas forcément ce que vous souhaitez : " +"de compatibilité ascendante. Ce n'est pas forcément ce que vous souhaitez : " "en effet, tous les *loggers* créés avant l'appel à :func:`fileConfig` seront " "désactivés sauf si eux-mêmes (ou l'un de leurs parents) sont explicitement " -"nommés dans le fichier de configuration. Veuillez vous rapporter à la " +"nommés dans le fichier de configuration. Veuillez vous reporter à la " "documentation pour plus de détails, et donner la valeur ``False`` à ce " "paramètre si vous le souhaitez." @@ -1447,6 +1446,14 @@ msgid "" "application developer to configure the logging verbosity or handlers of your " "library as they wish." msgstr "" +"Il est fortement conseillé de *ne pas journaliser vers l'enregistreur " +"racine* dans votre bibliothèque. À la place, utilisez un enregistreur avec " +"un nom unique et facilement identifiable, tel que ``__name__`` pour le " +"paquet ou le module de niveau supérieur de votre bibliothèque. La " +"journalisation dans l'enregistreur racine rend difficile voire impossible " +"pour le développeur de l'application de configurer la verbosité de " +"journalisation ou les gestionnaires de votre bibliothèque comme il le " +"souhaite." #: howto/logging.rst:841 msgid "" @@ -1877,7 +1884,7 @@ msgid "" msgstr "" "Les exceptions :class:`SystemExit` et :class:`KeyboardInterrupt` ne sont " "jamais passées sous silence. Les autres exceptions qui se produisent pendant " -"la méthode :meth:`~Handler.emit` d'une sous classe :class:`Handler` sont " +"la méthode :meth:`~Handler.emit` d'une sous-classe :class:`Handler` sont " "passées à sa méthode :meth:`~Handler.handleError`." #: howto/logging.rst:1028 diff --git a/howto/regex.po b/howto/regex.po index 7473498c..71942bfc 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-05-22 23:13+0200\n" -"PO-Revision-Date: 2022-10-18 12:27+0200\n" +"PO-Revision-Date: 2022-12-16 21:12+0100\n" "Last-Translator: Nabil Bendafi \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" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.2.1\n" #: howto/regex.rst:5 msgid "Regular Expression HOWTO" @@ -588,7 +588,6 @@ msgstr "" "``'cht'``." #: howto/regex.rst:233 -#, fuzzy msgid "" "There are two more repeating operators or quantifiers. The question mark " "character, ``?``, matches either once or zero times; you can think of it as " @@ -598,11 +597,10 @@ msgstr "" "Il existe deux autres quantificateurs pour les répétitions. Le point " "d'interrogation, ``?``, fait correspondre zéro ou une fois ; vous pouvez " "vous le représenter comme indiquant une option. Par exemple, ``méta-?" -"caractère`` fait correspondre soit ``métacaractère``, soit ``méta-" -"caractère``." +"caractère`` fait correspondre soit ``'métacaractère'``, soit ``'méta-" +"caractère'``." #: howto/regex.rst:238 -#, fuzzy msgid "" "The most complicated quantifier is ``{m,n}``, where *m* and *n* are decimal " "integers. This quantifier means there must be at least *m* repetitions, and " @@ -627,7 +625,6 @@ msgstr "" "est 0 alors qu'omettre *n* signifie qu'il n'y a pas de borne supérieure." #: howto/regex.rst:248 -#, fuzzy msgid "" "Readers of a reductionist bent may notice that the three other quantifiers " "can all be expressed using this notation. ``{0,}`` is the same as ``*``, " @@ -1667,7 +1664,6 @@ msgstr "" "l'en-tête, et un autre groupe correspondant à la valeur de l'en-tête." #: howto/regex.rst:803 -#, fuzzy msgid "" "Groups are marked by the ``'('``, ``')'`` metacharacters. ``'('`` and " "``')'`` have much the same meaning as they do in mathematical expressions; " @@ -2588,7 +2584,6 @@ msgstr "" "title>'``, ce qui n'est pas ce que vous voulez." #: howto/regex.rst:1329 -#, fuzzy msgid "" "In this case, the solution is to use the non-greedy quantifiers ``*?``, ``+?" "``, ``??``, or ``{m,n}?``, which match as *little* text as possible. In the " diff --git a/howto/sorting.po b/howto/sorting.po index fc87f619..44a9d647 100644 --- a/howto/sorting.po +++ b/howto/sorting.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-05-22 23:13+0200\n" -"PO-Revision-Date: 2022-07-08 17:51+0200\n" +"PO-Revision-Date: 2022-12-11 19:25+0100\n" "Last-Translator: Jean Abou Samra \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" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.2.1\n" #: howto/sorting.rst:4 msgid "Sorting HOW TO" @@ -393,9 +393,8 @@ msgstr "" "module :mod:`functools` dans la librairie standard." #: howto/sorting.rst:309 -#, fuzzy msgid "Odds and Ends" -msgstr "Curiosités et conclusion" +msgstr "Et n'oublions pas" #: howto/sorting.rst:311 msgid ""