Skip to content

Commit ec12a7b

Browse files
authored
Translating extending/newtypes_tutorial.po (#1605)
Automerge of PR #1605 by @JulienPalard Je pense que je vais m'arrêter là pour le moment sur ce fichier, si j'attaque le reste ce sera pour une autre péèrre.
1 parent 3392eba commit ec12a7b

File tree

1 file changed

+107
-7
lines changed

1 file changed

+107
-7
lines changed

extending/newtypes_tutorial.po

Lines changed: 107 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ msgstr ""
66
"Project-Id-Version: Python 3\n"
77
"Report-Msgid-Bugs-To: \n"
88
"POT-Creation-Date: 2021-09-23 16:16+0200\n"
9-
"PO-Revision-Date: 2018-06-17 10:15+0200\n"
10-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9+
"PO-Revision-Date: 2021-09-25 11:25+0200\n"
10+
"Last-Translator: Julien Palard <julien@palard.fr>\n"
1111
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
1212
"Language: fr\n"
1313
"MIME-Version: 1.0\n"
@@ -16,7 +16,7 @@ msgstr ""
1616

1717
#: extending/newtypes_tutorial.rst:7
1818
msgid "Defining Extension Types: Tutorial"
19-
msgstr ""
19+
msgstr "Tutoriel : définir des types dans des extensions"
2020

2121
#: extending/newtypes_tutorial.rst:14
2222
msgid ""
@@ -26,10 +26,15 @@ msgid ""
2626
"pattern, but there are some details that you need to understand before you "
2727
"can get started. This document is a gentle introduction to the topic."
2828
msgstr ""
29+
"Python permet à l'auteur d'un module d'extension C de définir de nouveaux "
30+
"types qui peuvent être manipulés depuis du code Python, à la manière des "
31+
"types natifs :class:`str` et :class:`list`. Les implémentations de tous les "
32+
"types d'extension ont des similarités, mais quelques subtilités doivent être "
33+
"abordées avant de commencer."
2934

3035
#: extending/newtypes_tutorial.rst:24
3136
msgid "The Basics"
32-
msgstr ""
37+
msgstr "Les bases"
3338

3439
#: extending/newtypes_tutorial.rst:26
3540
msgid ""
@@ -42,19 +47,33 @@ msgid ""
4247
"an object, a method called, or it is multiplied by another object. These C "
4348
"functions are called \"type methods\"."
4449
msgstr ""
50+
":term:`CPython` considère que tous les objets Python sont des variables de "
51+
"type :c:type:`PyObject\\*`, qui sert de type de base pour tous les objets "
52+
"Python. La structure de :c:type:`PyObject` ne contient que le :term:"
53+
"`compteur de références <reference count>` et un pointeur vers un objet de "
54+
"type « type de l'objet ». C'est ici que tout se joue : l'objet type "
55+
"détermine quelle fonction C doit être appelée par l'interpréteur quand, par "
56+
"exemple, un attribut est recherché sur un objet, quand une méthode est "
57+
"appelée, ou quand l'objet est multiplié par un autre objet. Ces fonctions C "
58+
"sont appelées des « méthodes de type »."
4559

4660
#: extending/newtypes_tutorial.rst:35
4761
msgid ""
4862
"So, if you want to define a new extension type, you need to create a new "
4963
"type object."
5064
msgstr ""
65+
"Donc, pour définir un nouveau type dans une extension, vous devez créer un "
66+
"nouvel objet type."
5167

5268
#: extending/newtypes_tutorial.rst:38
5369
msgid ""
5470
"This sort of thing can only be explained by example, so here's a minimal, "
5571
"but complete, module that defines a new type named :class:`Custom` inside a "
5672
"C extension module :mod:`custom`:"
5773
msgstr ""
74+
"Ce genre de chose ne s'explique correctement qu'avec des exemples, voici "
75+
"donc un module minimaliste mais suffisant qui définit un nouveau type nommé :"
76+
"class:`Custom` dans le module d'extension :mod:`custom` : "
5877

5978
#: extending/newtypes_tutorial.rst:43
6079
msgid ""
@@ -63,35 +82,49 @@ msgid ""
6382
"allows defining heap-allocated extension types using the :c:func:"
6483
"`PyType_FromSpec` function, which isn't covered in this tutorial."
6584
msgstr ""
85+
"Ce qui est montré ici est la manière traditionnelle de définir des types "
86+
"d'extension *statiques*, et cela convient dans la majorité des cas. L'API C "
87+
"permet aussi de définir des types alloués sur le tas, via la fonction :c:"
88+
"func:`PyType_FromSpec`, mais ce n'est pas couvert par ce tutoriel."
6689

6790
#: extending/newtypes_tutorial.rst:50
6891
msgid ""
6992
"Now that's quite a bit to take in at once, but hopefully bits will seem "
7093
"familiar from the previous chapter. This file defines three things:"
7194
msgstr ""
95+
"C'est un peu long, mais vous devez déjà reconnaître quelques morceaux "
96+
"expliqués au chapitre précédent. Ce fichier définit trois choses :"
7297

7398
#: extending/newtypes_tutorial.rst:53
7499
msgid ""
75100
"What a :class:`Custom` **object** contains: this is the ``CustomObject`` "
76101
"struct, which is allocated once for each :class:`Custom` instance."
77102
msgstr ""
103+
"Ce qu'un **objet** :class:`Custom` contient : c'est la structure "
104+
"``CustomObject``, qui est allouée une fois pour chaque instance de :class:"
105+
"`Custom`."
78106

79107
#: extending/newtypes_tutorial.rst:55
80108
msgid ""
81109
"How the :class:`Custom` **type** behaves: this is the ``CustomType`` struct, "
82110
"which defines a set of flags and function pointers that the interpreter "
83111
"inspects when specific operations are requested."
84112
msgstr ""
113+
"Comment le **type** :class:`Custom` se comporte : c'est la structure "
114+
"``CustomType``, qui définit l'ensemble des options et pointeurs de fonction "
115+
"utilisés par l'interpréteur."
85116

86117
#: extending/newtypes_tutorial.rst:58
87118
msgid ""
88119
"How to initialize the :mod:`custom` module: this is the ``PyInit_custom`` "
89120
"function and the associated ``custommodule`` struct."
90121
msgstr ""
122+
"Comment initialiser le module :mod:`custom` : c'est la fonction "
123+
"``PyInit_custom`` et la structure associée ``custommodule``."
91124

92125
#: extending/newtypes_tutorial.rst:61
93126
msgid "The first bit is::"
94-
msgstr ""
127+
msgstr "Commençons par ::"
95128

96129
#: extending/newtypes_tutorial.rst:67
97130
msgid ""
@@ -103,30 +136,47 @@ msgid ""
103136
"abstract away the layout and to enable additional fields in :ref:`debug "
104137
"builds <debug-build>`."
105138
msgstr ""
139+
"C'est ce qu'un objet ``Custom`` contient. ``PyObject_HEAD`` est "
140+
"obligatoirement au début de chaque structure d'objet et définit un champ "
141+
"appelé ``ob_base`` de type :c:type:`PyObject`, contenant un pointeur vers un "
142+
"objet type et un compteur de références (on peut y accéder en utilisant les "
143+
"macros :c:macro:`Py_TYPE` et :c:macro:`Py_REFCNT`, respectivement). La "
144+
"raison d'être de ces macros est d'abstraire l'agencement de la structure, et "
145+
"ainsi de permettre l'ajout de champs en :ref:`mode débogage <debug-build>`."
106146

107147
#: extending/newtypes_tutorial.rst:76
108148
msgid ""
109149
"There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be "
110150
"wary of adding one by accident: some compilers will complain."
111151
msgstr ""
152+
"Il n'y a pas de point-virgule après la macro :c:macro:`PyObject_HEAD`. "
153+
"Attention à ne pas l'ajouter par accident : certains compilateurs pourraient "
154+
"s'en plaindre."
112155

113156
#: extending/newtypes_tutorial.rst:79
114157
msgid ""
115158
"Of course, objects generally store additional data besides the standard "
116159
"``PyObject_HEAD`` boilerplate; for example, here is the definition for "
117160
"standard Python floats::"
118161
msgstr ""
162+
"Bien sûr, les objets ajoutent généralement des données supplémentaires après "
163+
"l'entête standard ``PyObject_HEAD``. Par exemple voici la définition du type "
164+
"standard Python ``float`` ::"
119165

120166
#: extending/newtypes_tutorial.rst:88
121167
msgid "The second bit is the definition of the type object. ::"
122-
msgstr ""
168+
msgstr "La deuxième partie est la définition de l'objet type ::"
123169

124170
#: extending/newtypes_tutorial.rst:101
125171
msgid ""
126172
"We recommend using C99-style designated initializers as above, to avoid "
127173
"listing all the :c:type:`PyTypeObject` fields that you don't care about and "
128174
"also to avoid caring about the fields' declaration order."
129175
msgstr ""
176+
"Nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour "
177+
"remplir la structure, comme ci-dessus, afin d'éviter d'avoir à lister les "
178+
"champs de :c:type:`PyTypeObject` dont vous n'avez pas besoin, et de ne pas "
179+
"vous soucier de leur ordre."
130180

131181
#: extending/newtypes_tutorial.rst:105
132182
msgid ""
@@ -135,22 +185,31 @@ msgid ""
135185
"fields will be filled with zeros by the C compiler, and it's common practice "
136186
"to not specify them explicitly unless you need them."
137187
msgstr ""
188+
"La définition de :c:type:`PyTypeObject` dans :file:`object.h` contient en "
189+
"fait bien plus de :ref:`champs <type-structs>` que la définition ci-dessus. "
190+
"Les champs restants sont mis à zéro par le compilateur C, et c'est une "
191+
"pratique répandue de ne pas spécifier les champs dont vous n'avez pas besoin."
138192

139193
#: extending/newtypes_tutorial.rst:110
140194
msgid "We're going to pick it apart, one field at a time::"
141-
msgstr ""
195+
msgstr "Regardons les champs de cette structure, un par un ::"
142196

143197
#: extending/newtypes_tutorial.rst:114
144198
msgid ""
145199
"This line is mandatory boilerplate to initialize the ``ob_base`` field "
146200
"mentioned above. ::"
147201
msgstr ""
202+
"Cette ligne, obligatoire, initialise le champ ``ob_base`` mentionné "
203+
"précédemment."
148204

149205
#: extending/newtypes_tutorial.rst:119
150206
msgid ""
151207
"The name of our type. This will appear in the default textual "
152208
"representation of our objects and in some error messages, for example:"
153209
msgstr ""
210+
"C'est le nom de notre type. Il apparaît dans la représentation textuelle par "
211+
"défaut de nos objets, ainsi que dans quelques messages d'erreur, par "
212+
"exemple :"
154213

155214
#: extending/newtypes_tutorial.rst:129
156215
msgid ""
@@ -160,13 +219,22 @@ msgid ""
160219
"`custom.Custom`. Using the real dotted import path is important to make your "
161220
"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
162221
msgstr ""
222+
"Notez que le nom comporte un point : il inclut le nom du module et le nom du "
223+
"type. Dans ce cas le module est :mod:`custom`, et le type est :class:"
224+
"`Custom`, donc nous donnons comme nom :class:`custom.Custom`. Nommer "
225+
"correctement son type, avec le point, est important pour le rendre "
226+
"compatible avec :mod:`pydoc` et :mod:`pickle`. ::"
163227

164228
#: extending/newtypes_tutorial.rst:138
165229
msgid ""
166230
"This is so that Python knows how much memory to allocate when creating new :"
167231
"class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only "
168232
"used for variable-sized objects and should otherwise be zero."
169233
msgstr ""
234+
"C'est pour que Python sache combien de mémoire allouer à la création d'une "
235+
"nouvelle instance de :class:`Custom`. :c:member:`~PyTypeObject.tp_itemsize` "
236+
"n'est utilisé que pour les objets de taille variable, sinon il doit rester à "
237+
"zéro."
170238

171239
#: extending/newtypes_tutorial.rst:144
172240
msgid ""
@@ -181,22 +249,40 @@ msgid ""
181249
"type will be :class:`object`, or else you will be adding data members to "
182250
"your base type, and therefore increasing its size."
183251
msgstr ""
252+
"Si vous voulez qu'une classe en Python puisse hériter de votre type, et que "
253+
"votre type a le même :c:member:`~PyTypeObject.tp_basicsize` que son parent, "
254+
"vous rencontrerez des problèmes avec l'héritage multiple. Une sous-classe "
255+
"Python de votre type devra lister votre type en premier dans son :attr:"
256+
"`~class.__bases__`, sans quoi elle ne sera pas capable d'appeler la méthode :"
257+
"meth:`__new__` de votre type sans erreur. Vous pouvez éviter ce problème en "
258+
"vous assurant que votre type a un :c:member:`~PyTypeObject.tp_basicsize` "
259+
"plus grand que son parent. La plupart du temps ce sera vrai (soit son parent "
260+
"sera :class:`object`, soit vous ajouterez des attributs à votre type, "
261+
"augmentant ainsi sa taille)."
184262

185263
#: extending/newtypes_tutorial.rst:154
186264
msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
187265
msgstr ""
266+
"On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de "
267+
"type. ::"
188268

189269
#: extending/newtypes_tutorial.rst:158
190270
msgid ""
191271
"All types should include this constant in their flags. It enables all of "
192272
"the members defined until at least Python 3.3. If you need further members, "
193273
"you will need to OR the corresponding flags."
194274
msgstr ""
275+
"Chaque type doit inclure cette constante dans ses options : elle active tous "
276+
"les membres définis jusqu'à au moins Python 3.3. Si vous avez besoin de plus "
277+
"de membres, vous pouvez la combiner à d'autres constantes avec un *ou* "
278+
"binaire."
195279

196280
#: extending/newtypes_tutorial.rst:162
197281
msgid ""
198282
"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
199283
msgstr ""
284+
"On fournit une *docstring* pour ce type via le membre :c:member:"
285+
"`~PyTypeObject.tp_doc`. ::"
200286

201287
#: extending/newtypes_tutorial.rst:166
202288
msgid ""
@@ -206,31 +292,45 @@ msgid ""
206292
"use the default implementation provided by the API function :c:func:"
207293
"`PyType_GenericNew`. ::"
208294
msgstr ""
295+
"Pour permettre la création d'une instance, nous devons fournir un *handler* :"
296+
"c:member:`~PyTypeObject.tp_new`, qui est l'équivalent de la méthode Python :"
297+
"meth:`__new__`, mais elle a besoin d'être spécifiée explicitement. Dans ce "
298+
"cas, on se contente de l'implémentation par défaut fournie par la fonction :"
299+
"c:func:`PyType_GenericNew` de l'API."
209300

210301
#: extending/newtypes_tutorial.rst:173
211302
msgid ""
212303
"Everything else in the file should be familiar, except for some code in :c:"
213304
"func:`PyInit_custom`::"
214305
msgstr ""
306+
"Le reste du fichier doit vous être familier, en dehors du code de :c:func:"
307+
"`PyInit_custom` ::"
215308

216309
#: extending/newtypes_tutorial.rst:179
217310
msgid ""
218311
"This initializes the :class:`Custom` type, filling in a number of members to "
219312
"the appropriate default values, including :attr:`ob_type` that we initially "
220313
"set to ``NULL``. ::"
221314
msgstr ""
315+
"Il initialise le type :class:`Custom`, en assignant quelques membres à leurs "
316+
"valeurs par défaut, tel que :attr:`ob_type` qui valait initialement "
317+
"``NULL``. ::"
222318

223319
#: extending/newtypes_tutorial.rst:190
224320
msgid ""
225321
"This adds the type to the module dictionary. This allows us to create :"
226322
"class:`Custom` instances by calling the :class:`Custom` class:"
227323
msgstr ""
324+
"Ici on ajoute le type au dictionnaire du module. Cela permet de créer une "
325+
"instance de :class:`Custom` en appelant la classe :class:`Custom` :"
228326

229327
#: extending/newtypes_tutorial.rst:198
230328
msgid ""
231329
"That's it! All that remains is to build it; put the above code in a file "
232330
"called :file:`custom.c` and:"
233331
msgstr ""
332+
"C'est tout ! Il ne reste plus qu'à compiler, placez le code ci-dessus dans "
333+
"un fichier :file:`custom.c` et :"
234334

235335
#: extending/newtypes_tutorial.rst:207
236336
msgid "in a file called :file:`setup.py`; then typing"

0 commit comments

Comments
 (0)