summaryrefslogtreecommitdiff
path: root/doc/translations/fr.po
diff options
context:
space:
mode:
Diffstat (limited to 'doc/translations/fr.po')
-rw-r--r--doc/translations/fr.po1744
1 files changed, 1637 insertions, 107 deletions
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index e1d9250acb..96010072b7 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -37,7 +37,7 @@
# GABRIELLE Damien <damiengabrielle@gmail.com>, 2021.
# Julien Vanelian <julienvanelian@hotmail.com>, 2021.
# Perrier Mathis <mathis.perrier73@gmail.com>, 2021, 2022.
-# Blackiris <divjvc@free.fr>, 2021.
+# Blackiris <divjvc@free.fr>, 2021, 2022.
# AndyNekena <andy.nekena@gmail.com>, 2021.
# Legorel <Legorel412@gmail.com>, 2021, 2022.
# Romain Hebert <romain.hebert0442@gmail.com>, 2021.
@@ -61,7 +61,7 @@ msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-05-23 22:03+0000\n"
+"PO-Revision-Date: 2022-05-31 22:35+0000\n"
"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/fr/>\n"
@@ -1289,15 +1289,15 @@ msgstr ""
"conséquent, toutes les valeurs numériques seront converties en type [float] "
"lors de l'analyse du texte JSON.\n"
"[b]Remarque :[/b] Les objets JSON ne préservent par l'ordre des champs comme "
-"les dictionnaires de Godot. Il ne faut donc pas présumer de l'ordre des "
-"champs si un dictionnaire est construit à partir d'unJSON. Contrairement aux "
-"tableaux JSON qui conservent l'ordre de leurs éléments:\n"
+"les dictionnaires de Godot. Il ne faut donc pas présumer que l'ordre des "
+"champs est respecté si un dictionnaire est construit à partir d'un JSON. À "
+"l'inverse, les tableaux JSON conservent l'ordre de leurs éléments :\n"
"[codeblock]\n"
-"var p = JSON.parse('[\"hello\", \"world\", \"!\"]')\n"
+"var p = JSON.parse('[\"salut\", \"le\", \"monde\", \" !\"]')\n"
"if typeof(p.result) == TYPE_ARRAY:\n"
-" print(p.result[0]) # Prints \"hello\"\n"
+" print(p.result[0]) # Affiche \"salut\"\n"
"else:\n"
-" push_error(\"Unexpected results.\")\n"
+" push_error(\"Résultat inattendu.\")\n"
"[/codeblock]\n"
"Voir également [JSON] pour une façon alternative d'analyser un texte JSON."
@@ -5810,14 +5810,13 @@ msgstr ""
"d'une piste d'audio."
#: doc/classes/Animation.xml
-#, fuzzy
msgid ""
"Sets the stream of the key identified by [code]key_idx[/code] to value "
"[code]stream[/code]. The [code]track_idx[/code] must be the index of an "
"Audio Track."
msgstr ""
"Positionne le flux de la clé identifiée par [code]key_idx[/code] à la valeur "
-"[code]offset[/code]. Le [code]track_idx[/code] doit être l'index d'une piste "
+"[code]stream[/code]. Le [code]track_idx[/code] doit être l'index d'une piste "
"audio."
#: doc/classes/Animation.xml
@@ -6125,13 +6124,12 @@ msgid "Returns the update mode of a value track."
msgstr "Retourne le mode de mise à jour d'une piste de valeur."
#: doc/classes/Animation.xml
-#, fuzzy
msgid ""
"Returns the interpolated value at the given time (in seconds). The "
"[code]track_idx[/code] must be the index of a value track."
msgstr ""
-"Retourne la valeur interpolée à la [code]time[/code] donnée (en secondes). "
-"Le [code]track_idx[/code] doit être l'index d'une piste de Bézier."
+"Retourne la valeur interpolée au temps donné (en secondes). Le "
+"[code]track_idx[/code] doit être l'index d'une piste de valeur."
#: doc/classes/Animation.xml
msgid "Sets the update mode (see [enum UpdateMode]) of a value track."
@@ -6400,19 +6398,19 @@ msgid ""
"This function should return the time left for the current animation to "
"finish (if unsure, pass the value from the main blend being called)."
msgstr ""
-"Rappel défini par l'utilisateur appelé lorsqu'un nœud personnalisé est "
-"traité. Le paramètre [code]time[/code] est un delta relatif, sauf si "
-"[code]seek[/code] est [code]true[/code], auquel cas il est absolu.\n"
-"Ici, appelez les fonctions [method blend_input], [method blend_node] ou "
-"[method blend_animation]. Vous pouvez également utiliser [method "
+"Méthode de callback définie par l'utilisateur et appelée quand un nœud "
+"personnalisé est traité. Le paramètre [code]time[/code] est un delta "
+"relatif, à moins que [code]seek[/code] soit [code]true[/code], auquel cas il "
+"est absolu.\n"
+"Ici, vous pouvez utiliser les méthodes [method blend_input], [method "
+"blend_node] ou [method blend_animation]. Vous pouvez aussi utiliser [method "
"get_parameter] et [method set_parameter] pour modifier la mémoire locale.\n"
-"Cette fonction doit renvoyer le temps restant pour que l'animation actuelle "
-"se termine (en cas de doute, transmettez la valeur du mélange principal "
-"appelé)."
+"Cette fonction doit renvoyer le temps restant avant la fin de l'animation en "
+"cours (en cas de doute, renvoyez la valeur du mélange principal appelé)."
#: doc/classes/AnimationNode.xml
msgid "Removes an input, call this only when inactive."
-msgstr "Supprime une entrée, n'appeler que si le nœud est inactif."
+msgstr "Supprime une entrée, à n'appeler que si le nœud est inactif."
#: doc/classes/AnimationNode.xml
msgid "Adds or removes a path for the filter."
@@ -6433,9 +6431,8 @@ msgid "If [code]true[/code], filtering is enabled."
msgstr "Si [code]true[/code], le filtrage est activé."
#: doc/classes/AnimationNode.xml
-#, fuzzy
msgid "Emitted when the node was removed from the graph."
-msgstr "Appelée quand le nœud est enlevé du graphe."
+msgstr "Émis quand le nœud est enlevé du graphe."
#: doc/classes/AnimationNode.xml
msgid ""
@@ -7800,13 +7797,12 @@ msgid ""
msgstr ""
#: doc/classes/AnimationTreePlayer.xml
-#, fuzzy
msgid ""
"Returns whether node [code]id[/code] and [code]dst_id[/code] are connected "
"at the specified slot."
msgstr ""
-"Renvoie [code]true[/code] (vrai) si [code]a[/code] et [code]b[/code] sont "
-"approximativement égaux l'un à l'autre."
+"Retourne quand les nœuds [code]id[/code] et [code]dst_id[/code] sont "
+"connectés à l'emplacement spécifié.."
#: doc/classes/AnimationTreePlayer.xml
#, fuzzy
@@ -8712,6 +8708,13 @@ msgid ""
"print(array1) # Prints [1, 2, 3, 4, 5, 6].\n"
"[/codeblock]"
msgstr ""
+"Ajoute un autre tableau à la fin de ce tableau.\n"
+"[codeblock]\n"
+"var array1 = [1, 2, 3]\n"
+"var array2 = [4, 5, 6]\n"
+"array1.append_array(array2)\n"
+"print(array1) # Affiche [1, 2, 3, 4, 5, 6].\n"
+"[/codeblock]"
#: doc/classes/Array.xml
msgid ""
@@ -8721,6 +8724,11 @@ msgid ""
"[/code]. If the array is empty, accessing by index will pause project "
"execution when running from the editor."
msgstr ""
+"Retourne le dernier élément du tableau. Affiche une erreur et retourne "
+"[code]null[/code] si le tableau est vide.\n"
+"[b]Note :[/b] Appeler cette fonction n'est pas la même chose que "
+"[code]array[-1][/code]. Si le tableau est vide, y accéder avec un index "
+"mettre le projet en pause quand il sera lancé depuis l'éditeur."
#: doc/classes/Array.xml
msgid ""
@@ -8771,19 +8779,56 @@ msgid ""
"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in "
"unexpected behavior."
msgstr ""
+"Cherche la position d'une valeur existante (ou de l'insertion de cette "
+"position pour maintenant l'ordre, si la valeur n'est pas déjà présente dans "
+"le tableau) en utilisant la recherche dichotomique et une méthode de "
+"comparaison personnalisée déclaré dans l'objet [code]obj[/code]. En option, "
+"un booléen [code]before[/code] peut être passé. Si [code]false[/code], la "
+"position retournée sera après la valeur existante dans le tableau. La "
+"méthode de comparaison personnalisée à deux arguments (un élément du tableau "
+"et la valeur recherchée) et doit retourner [code]true[/code] si le premier "
+"argument est avant le second, et retourne [code]false[/code] sinon.\n"
+"[codeblock]\n"
+"func cardinal_to_algebraic(a):\n"
+" match a:\n"
+" \"un\":\n"
+" return 1\n"
+" \"deux\":\n"
+" return 2\n"
+" \"trois\":\n"
+" return 3\n"
+" \"quatre\":\n"
+" return 4\n"
+" _:\n"
+" return 0\n"
+"\n"
+"func compare(a, b):\n"
+" return cardinal_to_algebraic(a) < cardinal_to_algebraic(b)\n"
+"\n"
+"func _ready():\n"
+" var a = [\"un\", \"deux\", \"trois\", \"quatre\"]\n"
+" # `compare` est défini dans ce objet, alors on utilise `self` pour le "
+"paramètre `obj`.\n"
+" print(a.bsearch_custom(\"trois\", self, \"compare\", true)) # Doit "
+"afficher 2.\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Appeler [method bsearch_custom] sur un tableau qui n'est pas "
+"dans l'ordre peut donner un résultat inattendu."
#: doc/classes/Array.xml
msgid ""
"Clears the array. This is equivalent to using [method resize] with a size of "
"[code]0[/code]."
msgstr ""
+"Efface le contenu du tableau. C'est équivalent à [method resize] avec une "
+"taille de [code]0[/code]."
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
#: doc/classes/PoolRealArray.xml doc/classes/PoolStringArray.xml
#: doc/classes/PoolVector2Array.xml doc/classes/PoolVector3Array.xml
msgid "Returns the number of times an element is in the array."
-msgstr ""
+msgstr "Retourne le nombre de fois qu'un élément apparait dans le tableau."
#: doc/classes/Array.xml
msgid ""
@@ -8830,16 +8875,15 @@ msgstr ""
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
#: doc/classes/PoolRealArray.xml doc/classes/PoolStringArray.xml
#: doc/classes/PoolVector2Array.xml doc/classes/PoolVector3Array.xml
-#, fuzzy
msgid ""
"Searches the array for a value and returns its index or [code]-1[/code] if "
"not found. Optionally, the initial search index can be passed. Returns "
"[code]-1[/code] if [code]from[/code] is out of bounds."
msgstr ""
-"Trouve la première occurrence d'une sous-chaîne de caractères. Retourne le "
-"position de départ de la sous-chaîne de caractères ou [code]-1[/code] si non "
-"trouvée. Optionnellement, l'index de recherche initial peut être passé (en "
-"tant qu'argument) ."
+"Recherche une valeur dans le tableau et retourne sa position ou [code]-1[/"
+"code] si non trouvée. Optionnellement, la position de départ peut être "
+"passé. Retourne [code]-1[/code] si cette valeur [code]from[/code] est en "
+"dehors du tableau."
#: doc/classes/Array.xml
msgid ""
@@ -9085,6 +9129,31 @@ msgid ""
"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
"primitive modes."
msgstr ""
+"Le [ArrayMesh] est utilisé pour construire un [Mesh] en spécifiant les "
+"attributs dans des tableaux.\n"
+"L'exemple le plus trivial est la création d'un simple triangle :\n"
+"[codeblock]\n"
+"var vertices = PoolVector3Array()\n"
+"vertices.push_back(Vector3(0, 1, 0))\n"
+"vertices.push_back(Vector3(1, 0, 0))\n"
+"vertices.push_back(Vector3(0, 0, 1))\n"
+"# Initialiser le ArrayMesh.\n"
+"var arr_mesh = ArrayMesh.new()\n"
+"var arrays = []\n"
+"arrays.resize(ArrayMesh.ARRAY_MAX)\n"
+"arrays[ArrayMesh.ARRAY_VERTEX] = vertices\n"
+"# Créer le Mesh.\n"
+"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n"
+"var m = MeshInstance.new()\n"
+"m.mesh = arr_mesh\n"
+"[/codeblock]\n"
+"La [MeshInstance] est prête à être ajoutée à la [SceneTree] pour être "
+"affichée.\n"
+"Voir aussi [ImmediateGeometry], [MeshDataTool] et [SurfaceTool] pour la "
+"génération procédurale de géométries.\n"
+"[b]Note :[/b] Godot utilise le sens horaire [url=https://learnopengl.com/"
+"Advanced-OpenGL/Face-culling]pour le culling [/url] pour les faces avant "
+"dans les modes de création de triangles."
#: doc/classes/ArrayMesh.xml
msgid ""
@@ -10570,6 +10639,18 @@ msgid ""
"The result is in the segment that goes from [code]y = 0[/code] to [code]y = "
"5[/code]. It's the closest position in the segment to the given point."
msgstr ""
+"Retourne la position la plus proche de [code]to_position[/code] qui est à "
+"l'intérieur du segment entre deux points.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 5))\n"
+"astar.connect_points(1, 2)\n"
+"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Retourne "
+"(0, 3)\n"
+"[/codeblock]\n"
+"Le résultat est un segment qui va de [code]y = 0[/code] à [code]y = 5[/"
+"code]. C'est la position la plus proche sur le segment du point donné."
#: doc/classes/AStar2D.xml
msgid ""
@@ -10594,6 +10675,26 @@ msgid ""
"4, 3][/code] instead, because now even though the distance is longer, it's "
"\"easier\" to get through point 4 than through point 2."
msgstr ""
+"Retourne un tableau avec les identifiants des points qui forment le chemin "
+"trouvé par AStar2D entre les points donnés. Le tableau est dans l'ordre du "
+"point de départ de celui de l'arrivée.\n"
+"[codeblock]\n"
+"var astar = AStar2D.new()\n"
+"astar.add_point(1, Vector2(0, 0))\n"
+"astar.add_point(2, Vector2(0, 1), 1) # Le poids par défaut est 1\n"
+"astar.add_point(3, Vector2(1, 1))\n"
+"astar.add_point(4, Vector2(2, 0))\n"
+"\n"
+"astar.connect_points(1, 2, false)\n"
+"astar.connect_points(2, 3, false)\n"
+"astar.connect_points(4, 3, false)\n"
+"astar.connect_points(1, 4, false)\n"
+"\n"
+"var res = astar.get_id_path(1, 3) # Retourne [1, 2, 3]\n"
+"[/codeblock]\n"
+"Si vous changez le poids du deuxième point à 3, alors le résultat sera "
+"plutôt [code][1, 4, 3][/code], parce que même si la distance est plus "
+"grande, c'est plus \"facile\" d'aller au point 4 qu'au point 2."
#: doc/classes/AStar2D.xml
msgid ""
@@ -11139,6 +11240,29 @@ msgid ""
"Band 21: 22000 Hz\n"
"See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ10]."
msgstr ""
+"Bandes de fréquence :\n"
+"Bande 1 : 22 Hz\n"
+"Bande 2 : 32 Hz\n"
+"Bande 3 : 44 Hz\n"
+"Bande 4 : 63 Hz\n"
+"Bande 5 : 90 Hz\n"
+"Bande 6 : 125 Hz\n"
+"Bande 7 : 175 Hz\n"
+"Bande 8 : 250 Hz\n"
+"Bande 9 : 350 Hz\n"
+"Bande 10 : 500 Hz\n"
+"Bande 11 : 700 Hz\n"
+"Bande 12 : 1000 Hz\n"
+"Bande 13 : 1400 Hz\n"
+"Bande 14 : 2000 Hz\n"
+"Bande 15 : 2800 Hz\n"
+"Bande 16 : 4000 Hz\n"
+"Bande 17 : 5600 Hz\n"
+"Bande 18 : 8000 Hz\n"
+"Bande 19 : 11000 Hz\n"
+"Bande 20 : 16000 Hz\n"
+"Bande 21 : 22000 Hz\n"
+"Voir aussi [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ10]."
#: doc/classes/AudioEffectEQ6.xml
msgid ""
@@ -11885,9 +12009,8 @@ msgstr ""
"existe, [code]false[/code] autrement."
#: doc/classes/AudioStreamGeneratorPlayback.xml
-#, fuzzy
msgid "Clears the audio sample data buffer."
-msgstr "Efface l'historique des annulations."
+msgstr "Efface la mémoire tampon des échantillons audio."
#: doc/classes/AudioStreamGeneratorPlayback.xml
msgid ""
@@ -13592,6 +13715,30 @@ msgid ""
"given time. Use [TouchScreenButton] for buttons that trigger gameplay "
"movement or actions, as [TouchScreenButton] supports multitouch."
msgstr ""
+"Button est le bouton standard avec thème. Il peut contenir du texte et une "
+"icône, et sera affiché suivant le [Theme] actuellement défini.\n"
+"[b]Exemple de création d'un bouton par le lui et lui assigner une action "
+"quand il est appuyé :[/b]\n"
+"[codeblock]\n"
+"func _ready():\n"
+" var button = Button.new()\n"
+" button.text = \"Cliquez moi\"\n"
+" button.connect(\"pressed\", self, \"_button_pressed\")\n"
+" add_child(button)\n"
+"\n"
+"func _button_pressed():\n"
+" print(\"On m'a cliqué !\")\n"
+"[/codeblock]\n"
+"Les boutons (comme tous les nœuds Control) peuvent aussi être créés depuis "
+"l'éditeur, mais dans certains cas, il peut être nécessaire de le faire par "
+"le code.\n"
+"Voir aussi [BaseButton] qui contient les propriétés et méthodes communes "
+"associées à ce nœud.\n"
+"[b]Note :[/b] Les boutons n'interceptent pas les tapes et ne supporte donc "
+"pas le multitouch, puisque la souris ne peut presser qu'un seul bouton à la "
+"fois. Utilisez [TouchScreenButton] pour les boutons qui traitent les entrées "
+"pour les mouvements et les actions, puisque [TouchScreenButton] supporte le "
+"multitouch."
#: doc/classes/Button.xml doc/classes/Dictionary.xml
#: doc/classes/GridContainer.xml doc/classes/OS.xml
@@ -13605,6 +13752,8 @@ msgid ""
"Text alignment policy for the button's text, use one of the [enum TextAlign] "
"constants."
msgstr ""
+"L'alignement du texte du bouton, qui est une des constantes de [enum "
+"TextAlign]."
#: doc/classes/Button.xml
msgid ""
@@ -13724,6 +13873,8 @@ msgid ""
"Returns an [Array] of [Button]s who have this as their [ButtonGroup] (see "
"[member BaseButton.group])."
msgstr ""
+"Retourne une [Array] de [Button] qui sont dans ce [ButtonGroup] (voir "
+"[member BaseButton.group])."
#: doc/classes/ButtonGroup.xml
msgid "Returns the current pressed button."
@@ -13797,6 +13948,8 @@ msgid ""
"Returns [code]true[/code] if the given [code]layer[/code] in the [member "
"cull_mask] is enabled, [code]false[/code] otherwise."
msgstr ""
+"Retourne [code]true[/code] si le calque [code]layer[/code] spécifié dans ce "
+"[member cull_mask] est actif, ou [code]false[/code] sinon."
#: doc/classes/Camera.xml
msgid ""
@@ -13944,6 +14097,15 @@ msgid ""
"- ~102.45 degrees in a 16:9 viewport\n"
"- ~117.06 degrees in a 21:9 viewport"
msgstr ""
+"L'angle du champs de vision de la caméra (en degrés). Seulement disponible "
+"en mode perspective. Comme [member keep_aspect] verrouille un axe, "
+"[code]fov[/code] définit l'angle du champs de vision de l'autre axe.\n"
+"Pour référence, l'angle de champs de vision par défaut ([code]70.0[/code]) "
+"est équivalent à un champs de vision horizontal de :\n"
+"- ~86.07 degrés pour un ratio de 4:3\n"
+"- ~96.50 degrés pour un ratio de 16:10\n"
+"- ~102.45 degrés pour un ratio de 16:9\n"
+"- ~117.06 degrés pour un ratio de 21:9"
#: doc/classes/Camera.xml
msgid ""
@@ -18367,6 +18529,29 @@ msgid ""
"$MyButton.add_stylebox_override(\"normal\", null)\n"
"[/codeblock]"
msgstr ""
+"Crée une surcharge locale pour un thème [StyleBox] nommé [code]name[/code]. "
+"Les surcharges locales ont toujours la priorité lors de la récupération des "
+"éléments des thèmes pour les contrôles.\n"
+"[b]Note :[/b] Une surcharge peut être retirée en utilisant la valeur "
+"[code]null[/code]. Ce comportement est obsolète est sera retiré dans Godot "
+"4.0, utilisez plutôt [method remove_stylebox_override].\n"
+"Voir aussi [method get_stylebox].\n"
+"[b]Exemple de modification d'une propriété d'une StyleBox après l'avoir "
+"dupliquée :[/b]\n"
+"[codeblock]\n"
+"# Le code ci-dessous part du principe que le nœud enfant \"MyButton\" à une "
+"StyleBoxFlat qui lui est assignée.\n"
+"# Les ressources sont partagées entre les instances, il est donc nécessaire "
+"de les dupliquer\n"
+"# pour éviter que les modifications ne se répercutent sur les autres "
+"boutons.\n"
+"var new_stylebox_normal = $MyButton.get_stylebox(\"normal\").duplicate()\n"
+"new_stylebox_normal.border_width_top = 3\n"
+"new_stylebox_normal.border_color = Color(0, 1, 0.5)\n"
+"$MyButton.add_stylebox_override(\"normal\", new_stylebox_normal)\n"
+"# Retirer la surcharge de la stylebox.\n"
+"$MyButton.add_stylebox_override(\"normal\", null)\n"
+"[/codeblock]"
#: doc/classes/Control.xml
msgid ""
@@ -18382,6 +18567,18 @@ msgid ""
" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n"
"[/codeblock]"
msgstr ""
+"Godot appelle cette méthode pour vérifier si [code]data[/code] de la méthode "
+"[method get_drag_data] du contrôle peut être déposé à [code]position[/code]. "
+"[code]position[/code] est local à ce contrôle.\n"
+"Cette méthode ne devrait être utilisée uniquement que pour tester les "
+"données. Le traitement de ces données doit se faire dans [method "
+"drop_data].\n"
+"[codeblock]\n"
+"func can_drop_data(position, data):\n"
+" # Vérifiez la \"position\" dans le as où elle a de l'intérêt,\n"
+" # Sinon, vérifiez juste \"data\"\n"
+" return typeof(data) == TYPE_DICTIONARY and data.has(\"valeur_attendu\")\n"
+"[/codeblock]"
#: doc/classes/Control.xml
msgid ""
@@ -20615,6 +20812,44 @@ msgid ""
"[/codeblock]\n"
"[b]Note:[/b] Not available in HTML5 exports."
msgstr ""
+"La classe Crypto permet d'accéder à des fonctionnalités cryptographiques "
+"plus avancées dans Godot.\n"
+"Pour l'instant, cela inclus la génération de données aléatoires pour des "
+"utilsations cryptographiques, la génération de clés RSA et de certificats "
+"auto-signés X509, de clé asymétriques de cryptage/décryptage, la signature "
+"et la vérification.\n"
+"[codeblock]\n"
+"extends Node\n"
+"\n"
+"var crypto = Crypto.new()\n"
+"var key = CryptoKey.new()\n"
+"var cert = X509Certificate.new()\n"
+"\n"
+"func _ready():\n"
+" # Générer une nouvelle clé RSA.\n"
+" key = crypto.generate_rsa(4096)\n"
+" # Générer un nouveau certificat auto-signé avec le clé.\n"
+" cert = crypto.generate_self_signed_certificate(key, \"CN=mydomain.com,"
+"O=My Game Company,C=IT\")\n"
+" # Enregistrer la clé et le certificat dans le dossier utilisateur.\n"
+" key.save(\"user://generated.key\")\n"
+" cert.save(\"user://generated.crt\")\n"
+" # Cryptage\n"
+" var data = \"Des données\"\n"
+" var encrypted = crypto.encrypt(key, data.to_utf8())\n"
+" # Décryptage\n"
+" var decrypted = crypto.decrypt(key, encrypted)\n"
+" # Signature\n"
+" var signature = crypto.sign(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), key)\n"
+" # Vérification\n"
+" var verified = crypto.verify(HashingContext.HASH_SHA256, data."
+"sha256_buffer(), signature, key)\n"
+" # Tests\n"
+" assert(verified)\n"
+" assert(data.to_utf8() == decrypted)\n"
+"[/codeblock]\n"
+"[b]Note :[/b] N'est pas disponible dans les exports HTML5."
#: doc/classes/Crypto.xml
msgid ""
@@ -20711,8 +20946,7 @@ msgid ""
"saved like any other [Resource].\n"
"They can be used to generate a self-signed [X509Certificate] via [method "
"Crypto.generate_self_signed_certificate] and as private key in [method "
-"StreamPeerSSL.accept_stream] along with the appropriate certificate.\n"
-"[b]Note:[/b] Not available in HTML5 exports."
+"StreamPeerSSL.accept_stream] along with the appropriate certificate."
msgstr ""
#: doc/classes/CryptoKey.xml
@@ -22117,6 +22351,7 @@ msgid "Dictionary type."
msgstr "Le type dictionnaire."
#: doc/classes/Dictionary.xml
+#, fuzzy
msgid ""
"Dictionary type. Associative container which contains values referenced by "
"unique keys. Dictionaries are composed of pairs of keys (which must be "
@@ -22160,7 +22395,7 @@ msgid ""
"accessing the dictionary with isn't a fixed string (such as a number or "
"variable).\n"
"[codeblock]\n"
-"export(string, \"White\", \"Yellow\", \"Orange\") var my_color\n"
+"export(String, \"White\", \"Yellow\", \"Orange\") var my_color\n"
"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n"
"func _ready():\n"
" # We can't use dot syntax here as `my_color` is a variable.\n"
@@ -22421,6 +22656,22 @@ msgid ""
"values does [i]not[/i] imply the dictionaries are equal, because different "
"dictionaries can have identical hash values due to hash collisions."
msgstr ""
+"Retourne un entier 32-bit de hachage représentant le contenu du "
+"dictionnaire. Ça peut être utilisé pour comparer le contenu de plusieurs "
+"dictionnaires entre eux :\n"
+"[codeblock]\n"
+"var dict1 = {0: 10}\n"
+"var dict2 = {0: 10}\n"
+"# La ligne en dessus affichera `true`, alors que `false` serait affiché si "
+"les deux variables étaient comparées directement.\n"
+"print(dict1.hash() == dict2.hash())\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Les dictionnaires avec les mêmes clés et valeurs mais dans un "
+"ordre différent auront un hachage différent.\n"
+"[b]Note :[/b] Les dictionnaires avec le même content produiront toujours le "
+"même hachage. Par contre, la réciproque n'est pas vraie. Retourner un même "
+"hachage n'implique [i]pas[/i] que les dictionnaires soient identiques, "
+"simplement à cause des collisions dans la fonction de hachage."
#: doc/classes/Dictionary.xml
msgid "Returns the list of keys in the [Dictionary]."
@@ -22575,6 +22826,32 @@ msgid ""
" print(\"An error occurred when trying to access the path.\")\n"
"[/codeblock]"
msgstr ""
+"Le type Directory. Il est utilisé pour gérer les dossiers et leur contenu "
+"(et pas uniquement ceux du projet).\n"
+"Lors de la création d'un nouveau [Directory], le dossier ouvert par défaut "
+"sera [code]res://[/code]. Cela peut changer à l'avenir, il est donc "
+"préférable de toujours utiliser [method open] pour définir le [Directory] "
+"que vous souhaitez gérer, en vérifiant à chaque fois les erreurs émises.\n"
+"[b]Note :[/b] Plusieurs types de ressources sont importés (comme les "
+"textures et les fichiers audio), et les originaux ne sont pas inclus dans le "
+"jeu exporté, puisque seulement la version importée sont alors utilisées. "
+"Utilisez plutôt [ResourceLoader] pour accéder à ces ressources importées.\n"
+"Voici un exemple qui énumère le contenu d'un dossier :\n"
+"[codeblock]\n"
+"func dir_contents(path):\n"
+" var dir = Directory.new()\n"
+" if dir.open(path) == OK:\n"
+" dir.list_dir_begin()\n"
+" var file_name = dir.get_next()\n"
+" while file_name != \"\":\n"
+" if dir.current_is_dir():\n"
+" print(\"Dossier trouvé: \" + file_name)\n"
+" else:\n"
+" print(\"Fichier trouvé : \" + file_name)\n"
+" file_name = dir.get_next()\n"
+" else:\n"
+" print(\"Une erreur est survenue lors de l'accès à ce chemin.\")\n"
+"[/codeblock]"
#: doc/classes/Directory.xml
msgid ""
@@ -24448,6 +24725,23 @@ msgid ""
" return false\n"
"[/codeblock]"
msgstr ""
+"Appelé par le moteur quand la fenêtre d'affiche 2D de l'éditeur est mise à "
+"jour. Utiliser le [Control] [code]overlay[/code] pour le dessin. Vous pouvez "
+"mettre à jour la fenêtre d'affichage manuellement en appelant [method "
+"update_overlays].\n"
+"[codeblock]\n"
+"func forward_canvas_draw_over_viewport(overlay):\n"
+" # Dessine un cercle à la position du curseur de la souris.\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color."
+"white)\n"
+"\n"
+"func forward_canvas_gui_input(event):\n"
+" if event is InputEventMouseMotion:\n"
+" # Re-dessine la fenêtre d'affichage quand le curseur est déplacé.\n"
+" update_overlays()\n"
+" return true\n"
+" return false\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24482,6 +24776,27 @@ msgid ""
" return forward\n"
"[/codeblock]"
msgstr ""
+"Appelé quand il y a un nœud racine dans l'actuelle scène éditée, que [method "
+"handles] est implémenté et qu'un [InputEvent] arrive dans la fenêtre "
+"d'affichage 2D. Ça intercepte le [InputEvent], et si [code]return true[/"
+"code] le [EditorPlugin] consomme le [code]event[/code], sinon il fait suivre "
+"le [code]event[/code] aux autres classes Editor. Exemple:\n"
+"[codeblock]\n"
+"# Empêche le InputEvent d'atteindre d'autres classes Editor\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" var forward = true\n"
+" return forward\n"
+"[/codeblock]\n"
+"Doit [code]return false[/code] pour faire suivre le [InputEvent] aux autres "
+"classes Editor. Exemple :\n"
+"[codeblock]\n"
+"# Consomme le InputEventMouseMotion et le fait suivre aux autres InputEvent\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" var forward = false\n"
+" if event is InputEventMouseMotion:\n"
+" forward = true\n"
+" return forward\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24501,6 +24816,22 @@ msgid ""
" return false\n"
"[/codeblock]"
msgstr ""
+"Appelé par le moteur quand la fenêtre d'affiche 3D de l'éditeur est mise à "
+"jour. Utiliser le [Control] [code]overlay[/code] pour le dessin. Vous pouvez "
+"mettre à jour la fenêtre d'affichage manuellement en appelant [method "
+"update_overlays].\n"
+"[codeblock]\n"
+"func forward_canvas_draw_over_viewport(overlay):\n"
+" # Dessine un cercle à la position du curseur de la souris.\n"
+" overlay.draw_circle(overlay.get_local_mouse_position(), 64)\n"
+"\n"
+"func forward_canvas_gui_input(event):\n"
+" if event is InputEventMouseMotion:\n"
+" # Re-dessine la fenêtre d'affichage quand le curseur est déplacé.\n"
+" update_overlays()\n"
+" return true\n"
+" return false\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -24535,6 +24866,27 @@ msgid ""
" return forward\n"
"[/codeblock]"
msgstr ""
+"Appelé quand il y a un nœud racine dans l'actuelle scène éditée, que [method "
+"handles] est implémenté et qu'un [InputEvent] arrive dans la fenêtre "
+"d'affichage 3D. Ça intercepte le [InputEvent], et si [code]return true[/"
+"code] le [EditorPlugin] consomme le [code]event[/code], sinon il fait suivre "
+"le [code]event[/code] aux autres classes Editor. Exemple:\n"
+"[codeblock]\n"
+"# Empêche le InputEvent d'atteindre d'autres classes Editor\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" var forward = true\n"
+" return forward\n"
+"[/codeblock]\n"
+"Doit [code]return false[/code] pour faire suivre le [InputEvent] aux autres "
+"classes Editor. Exemple :\n"
+"[codeblock]\n"
+"# Consomme le InputEventMouseMotion et le fait suivre aux autres InputEvent\n"
+"func forward_spatial_gui_input(camera, event):\n"
+" var forward = false\n"
+" if event is InputEventMouseMotion:\n"
+" forward = true\n"
+" return forward\n"
+"[/codeblock]"
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -25185,6 +25537,31 @@ msgid ""
" iterate(child)\n"
"[/codeblock]"
msgstr ""
+"Les scènes importées peuvent être automatiquement modifiées juste après "
+"avoir été importées en définissant la propriété d'importation [b]Script "
+"personnalisé[/b] par un script [code]tool[/code] qui hérite de cette "
+"classe.\n"
+"La méthode de rappel [method post_import] reçoit le nœud racine de la scène "
+"importée et retourne la version modifiée de cette même scène. Un exemple "
+"d'utilisation :\n"
+"[codeblock]\n"
+"tool # Nécessaire pour être exécuté dans l'éditeur\n"
+"extends EditorScenePostImport\n"
+"\n"
+"# Cet exemple modifie le nom de tous les nœuds\n"
+"\n"
+"# Appelé juste après qye la scène est importée et récupère le nœud racine\n"
+"func post_import(scene):\n"
+" # Modifie le nom de tous les nœuds en \"nouveau_[ancien_nom]\"\n"
+" iterate(scene)\n"
+" return scene # N'oubliez pas de retourner la scène importée\n"
+"\n"
+"func iterate(node):\n"
+" if node != null:\n"
+" node.name = \"nouveau_\" + node.name\n"
+" for child in node.get_children():\n"
+" iterate(child)\n"
+"[/codeblock]"
#: doc/classes/EditorScenePostImport.xml
msgid ""
@@ -25230,6 +25607,25 @@ msgid ""
"is visible in the console window started with the Editor (stdout) instead of "
"the usual Godot [b]Output[/b] dock."
msgstr ""
+"Les scripts héritant de cette classe et implémentant la méthode [method "
+"_run] peuvent être exécutés depuis l'éditeur de script avec l'option de menu "
+"[b]Fichier > Lancer[/b] (ou avec [code]Ctrl+Shift+X[/code]) quand l'éditeur "
+"est lancé. C'est utilise pour ajouter des fonctionnalités personnalisées "
+"dans l'éditeur de Godot. Pour des additions plus complexes, préférez plutôt "
+"utiliser [EditorPlugin].\n"
+"[b]Note :[/b] Les scripts doivent activer le mode [code]tool[/code] pour "
+"cela.\n"
+"[b]Exemple de script :[/b]\n"
+"[codeblock]\n"
+"tool # Nécessaire pour être exécuté dans l'éditeur\n"
+"extends EditorScript\n"
+"\n"
+"func _run():\n"
+" print(\"Un bonjour depuis l'éditeur Godot !\")\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Le script est exécuté dans le contexte de l'éditeur, ce qui "
+"signifie que la sortie est visible dans la console qui a lancé l'éditeur "
+"(\"stdout\") et non dans le dock [b]Output[/b] habituel de Godot."
#: doc/classes/EditorScript.xml
msgid "This method is executed by the Editor when [b]File > Run[/b] is used."
@@ -27105,6 +27501,28 @@ msgid ""
" $LineEdit.text = str(result)\n"
"[/codeblock]"
msgstr ""
+"Une expression qui peut être faite d'opérations arithmétiques, d'appels de "
+"fonctions mathématiques intégrées, d'appels de méthode sur l'instance "
+"donnée, ou de constructeur de type intégrés.\n"
+"Un exemple d'expression utilisant les fonctions mathématiques intégrées "
+"serait [code]sqrt(pow(3,2) + pow(4,2))[/code].\n"
+"Dans l'exemple suivant nous utilisons un nœud [LineEdit] pour écrire notre "
+"expression et afficher le résultat.\n"
+"[codeblock]\n"
+"onready var expression = Expression.new()\n"
+"\n"
+"func _ready():\n"
+" $LineEdit.connect(\"text_entered\", self, \"_on_text_entered\")\n"
+"\n"
+"func _on_text_entered(command):\n"
+" var error = expression.parse(command, [])\n"
+" if error != OK:\n"
+" print(expression.get_error_text())\n"
+" return\n"
+" var result = expression.execute([], null, true)\n"
+" if not expression.has_execute_failed():\n"
+" $LineEdit.text = str(result)\n"
+"[/codeblock]"
#: doc/classes/Expression.xml
msgid ""
@@ -27505,6 +27923,33 @@ msgid ""
" var converted2 = unsigned16_to_signed(read2) # 121\n"
"[/codeblock]"
msgstr ""
+"Enregistre un entier au format 16 bits dans le fichier.\n"
+"[b]Note :[/b] La [code]value[/code] doit entre dans l'intervalle [code][0, "
+"2^16 - 1][/code]. Toute autre valeur dépassera et sera alors réduite à cet "
+"intervalle.\n"
+"Pour enregistrer un entier signé, utilisez [method store_64] ou enregistrez "
+"une valeur signée contenue dans l'intervalle [code][-2^15, 2^15 - 1][/code] "
+"(c'est-à-dire en gardant un bit pour le signe) et calculez le signe "
+"manuellement à la lecture. Par exemple :\n"
+"[codeblock]\n"
+"const MAX_15B = 1 << 15 # 2^15\n"
+"const MAX_16B = 1 << 16 # 2^16\n"
+"\n"
+"func unsigned16_to_signed(unsigned):\n"
+" return (unsigned + MAX_15B) % MAX_16B - MAX_15B\n"
+"\n"
+"func _ready():\n"
+" var f = File.new()\n"
+" f.open(\"user://file.dat\", File.WRITE_READ)\n"
+" f.store_16(-42) # Hors de l'intervalle, la valeur enregistrée sera 65494 "
+"(= MAX_16B - 42).\n"
+" f.store_16(121) # Dans l'intervalle, 121 sera enregistrée.\n"
+" f.seek(0) # Retourner au début pour lire la valeur enregistrée\n"
+" var read1 = f.get_16() # 65494\n"
+" var read2 = f.get_16() # 121\n"
+" var converted1 = unsigned16_to_signed(read1) # -42\n"
+" var converted2 = unsigned16_to_signed(read2) # 121\n"
+"[/codeblock]"
#: doc/classes/File.xml
msgid ""
@@ -28883,7 +29328,7 @@ msgid ""
"Checks if the two lines ([code]from_a[/code], [code]dir_a[/code]) and "
"([code]from_b[/code], [code]dir_b[/code]) intersect. If yes, return the "
"point of intersection as [Vector2]. If no intersection takes place, returns "
-"an empty [Variant].\n"
+"[code]null[/code].\n"
"[b]Note:[/b] The lines are specified using direction vectors, not end points."
msgstr ""
@@ -28996,8 +29441,8 @@ msgstr ""
msgid ""
"Checks if the two segments ([code]from_a[/code], [code]to_a[/code]) and "
"([code]from_b[/code], [code]to_b[/code]) intersect. If yes, return the point "
-"of intersection as [Vector2]. If no intersection takes place, returns an "
-"empty [Variant]."
+"of intersection as [Vector2]. If no intersection takes place, returns "
+"[code]null[/code]."
msgstr ""
#: doc/classes/Geometry.xml
@@ -29421,14 +29866,12 @@ msgid "Use 256 subdivisions."
msgstr "Utilise 256 subdivisions."
#: doc/classes/GIProbe.xml
-#, fuzzy
msgid ""
"Use 512 subdivisions. This is the highest quality setting, but the slowest. "
"On lower-end hardware, this could cause the GPU to stall."
msgstr ""
-"Utilise 64 subdivisions. C’est le réglage de qualité la plus basse, mais le "
-"plus rapide. Utilisez-le si vous le pouvez, mais surtout utilisez-le sur du "
-"matériel bas de gamme."
+"Utilise 64 subdivisions. C’est le réglage de qualité la plus haute, mais le "
+"plus lent. Le GPU peut même ramer sur les appareils peu puissants."
#: doc/classes/GIProbe.xml
msgid "Represents the size of the [enum Subdiv] enum."
@@ -30166,6 +30609,7 @@ msgstr "Retourne la [Color] de la connexion d'entrée à [code]idx[/code]."
msgid ""
"Returns the number of enabled input slots (connections) to the GraphNode."
msgstr ""
+"Retourne le nombre d'emplacements entrants (connexions) activés du GraphNode."
#: doc/classes/GraphNode.xml
msgid "Returns the position of the input connection [code]idx[/code]."
@@ -30183,6 +30627,7 @@ msgstr "Retourne la [Color] de la connexion de sortie à [code]idx[/code]."
msgid ""
"Returns the number of enabled output slots (connections) of the GraphNode."
msgstr ""
+"Retourne le nombre d'emplacements sortants (connexions) activés du GraphNode."
#: doc/classes/GraphNode.xml
msgid "Returns the position of the output connection [code]idx[/code]."
@@ -30422,6 +30867,8 @@ msgid ""
"The background used when [member overlay] is set to [constant "
"OVERLAY_BREAKPOINT]."
msgstr ""
+"L'arrière-plan utilisé quand [member overlay] est à [constant "
+"OVERLAY_BREAKPOINT]."
#: doc/classes/GraphNode.xml
msgid "The [StyleBox] used when [member comment] is enabled."
@@ -30444,6 +30891,8 @@ msgid ""
"The background used when [member overlay] is set to [constant "
"OVERLAY_POSITION]."
msgstr ""
+"L'arrière-plan utilisé quand [member overlay] est à [constant "
+"OVERLAY_POSITION]."
#: doc/classes/GraphNode.xml
msgid "The background used when the [GraphNode] is selected."
@@ -30703,6 +31152,7 @@ msgstr ""
"itérations."
#: doc/classes/HashingContext.xml
+#, fuzzy
msgid ""
"The HashingContext class provides an interface for computing cryptographic "
"hashes over multiple iterations. This is useful for example when computing "
@@ -30729,9 +31179,38 @@ msgid ""
" var res = ctx.finish()\n"
" # Print the result as hex string and array.\n"
" printt(res.hex_encode(), Array(res))\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Not available in HTML5 exports."
+"[/codeblock]"
msgstr ""
+"La classe HashingContext fournis une interface pour calculer les hachages "
+"cryptographiques en plusieurs itérations. C'est utile par exemple pour "
+"calculer le hachage d'un fichier très volumineux (pour ne pas avoir à le "
+"garder complètement en mémoire), d'un flux de réseau, et de flux de données "
+"en général (pour ne pas avoir à maintenir des mémoires tampons).\n"
+"L'énumération [enum HashType] liste tous les algorithmes de hachage "
+"supportés.\n"
+"[codeblock]\n"
+"const CHUNK_SIZE = 1024\n"
+"\n"
+"func hash_file(path):\n"
+" var ctx = HashingContext.new()\n"
+" var file = File.new()\n"
+" # Créer un nouveau contexte SHA-256.\n"
+" ctx.start(HashingContext.HASH_SHA256)\n"
+" # Vérifier que le fichier existe.\n"
+" if not file.file_exists(path):\n"
+" return\n"
+" # Ouvrir le fichier pour le hachage.\n"
+" file.open(path, File.READ)\n"
+" # Mettre à jour le contexte après la lecture de chaque partie "
+"(\"chunk\").\n"
+" while not file.eof_reached():\n"
+" ctx.update(file.get_buffer(CHUNK_SIZE))\n"
+" # Récupérer le hachage calculé.\n"
+" var res = ctx.finish()\n"
+" # Afficher le résultat sous forme hexadécimal et en tableau.\n"
+" printt(res.hex_encode(), Array(res))\n"
+"[/codeblock]\n"
+"[b]Note :[/b] N'est pas disponible pour les exports HTML5."
#: doc/classes/HashingContext.xml
msgid "Closes the current context, and return the computed hash."
@@ -30946,6 +31425,52 @@ msgid ""
"[/codeblock]\n"
"[b]Note:[/b] Not available in HTML5 exports."
msgstr ""
+"La classe HMACContext est utile pour les usages HMAC avancés, comme l'envoi "
+"continu de message puisqu'il supporte la création de message en plusieurs "
+"fois plutôt qu'en une seule fois.\n"
+"[codeblock]\n"
+"extends Node\n"
+"var ctx = HMACContext.new()\n"
+"\n"
+"func _ready():\n"
+" var key = \"supersecret\".to_utf8()\n"
+" var err = ctx.start(HashingContext.HASH_SHA256, key)\n"
+" assert(err == OK)\n"
+" var msg1 = \"c'est un \".to_utf8()\n"
+" var msg2 = \"extra méga super secret\".to_utf8()\n"
+" err = ctx.update(msg1)\n"
+" assert(err == OK)\n"
+" err = ctx.update(msg2)\n"
+" assert(err == OK)\n"
+" var hmac = ctx.finish()\n"
+" print(hmac.hex_encode())\n"
+"[/codeblock]\n"
+"Et en C#, le code ressemble à :\n"
+"[codeblock]\n"
+"using Godot;\n"
+"using System;\n"
+"using System.Diagnostics;\n"
+"\n"
+"public class CryptoNode : Node\n"
+"{\n"
+" private HMACContext ctx = new HMACContext();\n"
+" public override void _Ready()\n"
+" {\n"
+" PoolByteArray key = String(\"supersecret\").to_utf8();\n"
+" Error err = ctx.Start(HashingContext.HASH_SHA256, key);\n"
+" GD.Assert(err == OK);\n"
+" PoolByteArray msg1 = String(\"c'est un \").to_utf8();\n"
+" PoolByteArray msg2 = String(\"extra méga super secret\").to_utf8();\n"
+" err = ctx.Update(msg1);\n"
+" GD.Assert(err == OK);\n"
+" err = ctx.Update(msg2);\n"
+" GD.Assert(err == OK);\n"
+" PoolByteArray hmac = ctx.Finish();\n"
+" GD.Print(hmac.HexEncode());\n"
+" }\n"
+"}\n"
+"[/codeblock]\n"
+"[b]Note :[/b] N'est pas disponible dans les exports HTML5."
#: doc/classes/HMACContext.xml
msgid ""
@@ -30960,6 +31485,8 @@ msgid ""
"Initializes the HMACContext. This method cannot be called again on the same "
"HMACContext until [method finish] has been called."
msgstr ""
+"Initialise le HMACContext. Cette méthode ne peut pas être appelée sur le "
+"même HMACContext tant que [method finish] n'a pas été appelé."
#: doc/classes/HMACContext.xml
msgid ""
@@ -31210,6 +31737,18 @@ msgid ""
"}\n"
"[/codeblock]"
msgstr ""
+"Retourne toutes les entêtes de la réponse dans un Dictionary avec la "
+"structure [code]{ \"key\": \"value1; value2\" }[/code] où les clés et "
+"valeurs sont dans la même casse que le serveur les a envoyées. Une valeur "
+"est une simple chaine de caractères, qui peut avoir une ou plusieurs valeurs "
+"séparées par \"; \".\n"
+"[b]Exemple :[/b]\n"
+"[codeblock]\n"
+"{\n"
+" \"content-length\": 12,\n"
+" \"Content-Type\": \"application/json; charset=UTF-8\",\n"
+"}\n"
+"[/codeblock]"
#: doc/classes/HTTPClient.xml
msgid ""
@@ -31254,6 +31793,23 @@ msgid ""
"# Returns \"single=123&not_valued&multiple=22&multiple=33&multiple=44\"\n"
"[/codeblock]"
msgstr ""
+"Génère le contenu d'une requête GET/POST de style \"application/x-www-form-"
+"urlencoded\" à partir d'un dictionnaire, par exemple :\n"
+"[codeblock]\n"
+"var fields = {\"username\": \"utilisateur\", \"password\": \"mot-de-"
+"passe\"}\n"
+"var query_string = http_client.query_string_from_dict(fields)\n"
+"# Returns \"username=utilisateur&password=mot-de-passe\"\n"
+"[/codeblock]\n"
+"De plus, si une clé a la valeur [code]null[/code], seule la clé sera "
+"ajoutée, sans le signe égal ni la valeur. Si la valeur est un tableau, une "
+"même clé sera ajoutée pour chaque élément du tableau.\n"
+"[codeblock]\n"
+"var fields = {\"single\": 123, \"not_valued\": null, \"multiple\": [22, 33, "
+"44]}\n"
+"var query_string = http_client.query_string_from_dict(fields)\n"
+"# Retourne \"single=123&not_valued&multiple=22&multiple=33&multiple=44\"\n"
+"[/codeblock]"
#: doc/classes/HTTPClient.xml
msgid "Reads one chunk from the response."
@@ -31285,6 +31841,32 @@ msgid ""
"data as a query string in the URL. See [method String.http_escape] for an "
"example."
msgstr ""
+"Envoie une requête à l'hôte connecté.\n"
+"Le paramètre de l'URL est en général seulement la partie après l'hôte, donc "
+"pour [code]http://somehost.com/index.php[/code], c'est [code]/index.php[/"
+"code]. Lors de l'envoi de requête à un serveur de proxy HTTP, ça doit être "
+"une URL absolue. Pour les requêtes [constant HTTPClient.METHOD_OPTIONS], "
+"[code]*[/code] est aussi autorisé. Pour les requêtes [constant HTTPClient."
+"METHOD_CONNECT], ça doit être le composant d'autorité ([code]host:port[/"
+"code]).\n"
+"Les entêtes sont les entêtes de requêtes HTTP. Pour les méthodes HTTP "
+"disponibles, voir [enum Method].\n"
+"Pour créer une requête POST avec des données à soumettre au serveur, voici "
+"un exemple :\n"
+"[codeblock]\n"
+"var fields = {\"username\" : \"utilisateur\", \"password\" : \"mot de "
+"passe\"}\n"
+"var query_string = http_client.query_string_from_dict(fields)\n"
+"var headers = [\"Content-Type: application/x-www-form-urlencoded\", "
+"\"Content-Length: \" + str(query_string.length())]\n"
+"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", "
+"headers, query_string)\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Le paramètre [code]request_data[/code] est ignoré si "
+"[code]method[/code] est [constant HTTPClient.METHOD_GET]. Parce que les "
+"méthodes GET ne contiennent pas de données de requête. À la place, vous "
+"pouvez passer les données de la requête sous forme de requête dans l'URL. "
+"Voir [method String.http_escape] pour un exemple."
#: doc/classes/HTTPClient.xml
msgid ""
@@ -31306,6 +31888,9 @@ msgid ""
"The proxy server is unset if [code]host[/code] is empty or [code]port[/code] "
"is -1."
msgstr ""
+"Définit le serveur de proxy pour les requêtes HTTP.\n"
+"Le serveur de proxy n'est pas défini si [code]host[/code] est vide ou si "
+"[code]port[/code] est -1."
#: doc/classes/HTTPClient.xml doc/classes/HTTPRequest.xml
msgid ""
@@ -31313,6 +31898,9 @@ msgid ""
"The proxy server is unset if [code]host[/code] is empty or [code]port[/code] "
"is -1."
msgstr ""
+"Définit le serveur de proxy pour les requêtes HTTPS.\n"
+"Le serveur de proxy n'est pas défini si [code]host[/code] est vide ou si "
+"[code]port[/code] est -1."
#: doc/classes/HTTPClient.xml
msgid ""
@@ -32664,6 +33252,8 @@ msgid ""
"OpenGL texture format [code]GL_RGB5_A1[/code] where 5 bits of depth for each "
"component of RGB and one bit for alpha."
msgstr ""
+"Le format de texture OpenGL [code]GL_RGB5_A1[/code] où il y a 5 bits pour "
+"chaque composant RGB, et un seul pour alpha."
#: doc/classes/Image.xml
msgid ""
@@ -33768,7 +34358,6 @@ msgstr ""
"dessiner, ou pour les sélections."
#: doc/classes/Input.xml
-#, fuzzy
msgid ""
"Wait cursor. Indicates that the application is busy performing an operation. "
"This cursor shape denotes that the application isn't usable during the "
@@ -33780,7 +34369,6 @@ msgstr ""
"principal est bloqué)."
#: doc/classes/Input.xml
-#, fuzzy
msgid ""
"Busy cursor. Indicates that the application is busy performing an operation. "
"This cursor shape denotes that the application is still usable during the "
@@ -35669,6 +36257,57 @@ msgid ""
"}\n"
"[/codeblock]"
msgstr ""
+"Convertit une variable [Variant] en texte JSON et retourne le résultat. "
+"Utile pour sérialiser les données pour les enregistrer ou les envoyer à "
+"travers le réseau.\n"
+"[b]Note :[/b] Les spécifications du JSON ne définissent pas de différence "
+"entre les entiers et les flottants, et ne définissent que le type commun "
+"[i]nombre[/i]. Donc, convertir un Variant en JSON transformera tous les "
+"nombres en [float].\n"
+"La paramètre [code]indent[/code] contrôle si et comment le JSON doit être "
+"indenté, la chaine de caractères utilisé pour ce paramètre sera utilisé pour "
+"l'indentation de la sortie, et même les espaces [code]\" \"[/code] "
+"fonctionneront. [code]\\t[/code] et [code]\\n[/code] peuvent aussi être "
+"utilisé pour la tabulation, ou pour le retour à la ligne, respectivement.\n"
+"[b]Exemples de sortie :[/b]\n"
+"[codeblock]\n"
+"## JSON.print(my_dictionary) # À la suite, sans aucun retour à la ligne\n"
+"{\"name\":\"mon_dictionnaire\",\"version\":\"1.0.0\",\"entities\":[{\"name\":"
+"\"élément_0\",\"value\":\"valeur_0\"},{\"name\":\"élément_1\",\"value\":"
+"\"valeur_1\"}]}\n"
+"\n"
+"## JSON.print(my_dictionary, \"\\t\") # Retour à la ligne avec tabulation\n"
+"{\n"
+" \"name\": \"mon_dictionnaire\",\n"
+" \"version\": \"1.0.0\",\n"
+" \"entities\": [\n"
+" {\n"
+" \"name\": \"élément_0\",\n"
+" \"value\": \"valeur_0\"\n"
+" },\n"
+" {\n"
+" \"name\": \"élément_1\",\n"
+" \"value\": \"valeur_1\"\n"
+" }\n"
+" ]\n"
+"}\n"
+"\n"
+"## JSON.print(my_dictionary, \"...\") # Retour à la ligne avec \"...\"\n"
+"{\n"
+"...\"name\": \"mon_dictionnaire\",\n"
+"...\"version\": \"1.0.0\",\n"
+"...\"entities\": [\n"
+"......{\n"
+".........\"name\": \"élément_0\",\n"
+".........\"value\": \"valeur_0\"\n"
+"......},\n"
+"......{\n"
+".........\"name\": \"élément_1\",\n"
+".........\"value\": \"valeur_1\"\n"
+"......}\n"
+"...]\n"
+"}\n"
+"[/codeblock]"
#: doc/classes/JSONParseResult.xml
msgid "Data class wrapper for decoded JSON."
@@ -35728,6 +36367,26 @@ msgid ""
" push_error(\"Unexpected results.\")\n"
"[/codeblock]"
msgstr ""
+"Un [Variant] contenant un JSON interprété. Utilisez [method @GDScript."
+"typeof] ou le mot-clé [code]is[/code] pour vérifier si le type retourné "
+"correspond à vos attentes. Par exemple, si le code JSON commence par des "
+"accolades ([code]{}[/code]), un [Dictionary] sera retourné. S'il commence "
+"par des crochets ([code][][/code]), un [Array] sera retourné.\n"
+"[b]Remarque :[/b] La spécification JSON ne définis pas de type différent "
+"pour les entiers et flottants, mais seulement un type [i]number[/i]; par "
+"conséquent, toutes les valeurs numériques seront converties en type [float] "
+"lors de l'analyse du texte JSON.\n"
+"[b]Remarque :[/b] Les objets JSON ne préservent par l'ordre des champs comme "
+"les dictionnaires de Godot. Il ne faut donc pas présumer que l'ordre des "
+"champs est respecté si un dictionnaire est construit à partir d'un JSON. À "
+"l'inverse, les tableaux JSON conservent l'ordre de leurs éléments :\n"
+"[codeblock]\n"
+"var p = JSON.parse('[\"salut\", \"le\", \"monde\", \" !\"]')\n"
+"if typeof(p.result) == TYPE_ARRAY:\n"
+" print(p.result[0]) # Affiche \"salut\"\n"
+"else:\n"
+" push_error(\"Résultat inattendu.\")\n"
+"[/codeblock]"
#: doc/classes/JSONRPC.xml
msgid "A helper to handle dictionaries which look like JSONRPC documents."
@@ -35826,6 +36485,22 @@ msgid ""
"while performing collision tests. This makes them really useful to implement "
"characters that collide against a world, but don't require advanced physics."
msgstr ""
+"Les corps Kinematic sont des types spéciaux de corps qui sont prévus pour "
+"être contrôlés par l'utilisateur. Ils ne sont pas affectés par la physique "
+"du tout ; contrairement aux autres types de corps, comme les caractères ou "
+"les corps rigides, ils sont plutôt similaires aux corps statiques. Ils ont "
+"principalement deux principaux usages :\n"
+"[b]Les mouvements simulés :[/b] Quand ces corps sont déplacés manuellement, "
+"que ça soit par le code ou avec un [AnimationPlayer] (avec [member "
+"AnimationPlayer.playback_process_mode] à \"physics\"), la physique calculera "
+"automatiquement une estimation de leur vitesse linéaire et angulaire. Ils "
+"sont très utiles pour les plateformes qui bougent ou les objets contrôlés "
+"par des AnimationPlayer (comme une porte, un pont qui se lève, etc.).\n"
+"[b]Les caractères cinétiques :[/b] La classe KinematicBody a aussi une API "
+"pour déplacer les objets (avec les méthodes [method move_and_collide] et "
+"[method move_and_slide]) tout en testant les collisions. Ils sont donc très "
+"utiles pour implémenter des caractères qui peuvent entrer en collision avec "
+"le monde, mais ne nécessitent pas de comportement physique avancé."
#: doc/classes/KinematicBody.xml doc/classes/KinematicBody2D.xml
msgid "Kinematic character (2D)"
@@ -35892,14 +36567,14 @@ msgstr ""
"direction au cours du dernier appel vers [method move_and_slide]."
#: doc/classes/KinematicBody.xml doc/classes/KinematicBody2D.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the body collided with the ceiling on the last "
"call of [method move_and_slide] or [method move_and_slide_with_snap]. "
"Otherwise, returns [code]false[/code]."
msgstr ""
-"Retourne [code]true[/code] si le corps est au plafond. Ne se met à jour que "
-"lors de l'appel de la [method move_and_slide]."
+"Retourne [code]true[/code] si le corps était entré en collision avec le "
+"plafond lors du dernier appel à [method move_and_slide] or [method "
+"move_and_slide_with_snap]. Retourne [code]false[/code] sinon."
#: doc/classes/KinematicBody.xml doc/classes/KinematicBody2D.xml
msgid ""
@@ -36093,6 +36768,22 @@ msgid ""
"while performing collision tests. This makes them really useful to implement "
"characters that collide against a world, but don't require advanced physics."
msgstr ""
+"Les corps Kinematic sont des types spéciaux de corps qui sont prévus pour "
+"être contrôlés par l'utilisateur. Ils ne sont pas affectés par la physique "
+"du tout ; contrairement aux autres types de corps, comme les caractères ou "
+"les corps rigides, ils sont plutôt similaires aux corps statiques. Ils ont "
+"principalement deux principaux usages :\n"
+"[b]Les mouvements simulés :[/b] Quand ces corps sont déplacés manuellement, "
+"que ça soit par le code ou avec un [AnimationPlayer] (avec [member "
+"AnimationPlayer.playback_process_mode] à \"physics\"), la physique calculera "
+"automatiquement une estimation de leur vitesse linéaire et angulaire. Ils "
+"sont très utiles pour les plateformes qui bougent ou les objets contrôlés "
+"par des AnimationPlayer (comme une porte, un pont qui se lève, etc.).\n"
+"[b]Les caractères cinétiques :[/b] La classe KinematicBody2D a aussi une API "
+"pour déplacer les objets (avec les méthodes [method move_and_collide] et "
+"[method move_and_slide]) tout en testant les collisions. Ils sont donc très "
+"utiles pour implémenter des caractères qui peuvent entrer en collision avec "
+"le monde, mais ne nécessitent pas de comportement physique avancé."
#: doc/classes/KinematicBody2D.xml
msgid "Using KinematicBody2D"
@@ -38771,6 +39462,38 @@ msgid ""
"OpenGL/Face-culling]winding order[/url] for front faces of triangle "
"primitive modes."
msgstr ""
+"MeshDataTool fournit une accès aux différents sommets d'un [Mesh]. Ça permet "
+"de lire et de modifier les données des sommets des maillages. Ça permet "
+"aussi de créer un tableau de sommets et d’arêtes.\n"
+"Pour utiliser le MeshDataTool, chargez un maillage avec [method "
+"create_from_surface]. Quand vous avez terminé de modifier les données, vous "
+"pouvez les incorporer dans le même maillage ou un autre avec [method "
+"commit_to_surface].\n"
+"Ci-dessous un exemple sur comment MeshDataTool peut être utilisé.\n"
+"[codeblock]\n"
+"var mesh = ArrayMesh.new()\n"
+"mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, CubeMesh.new()."
+"get_mesh_arrays())\n"
+"var mdt = MeshDataTool.new()\n"
+"mdt.create_from_surface(mesh, 0)\n"
+"for i in range(mdt.get_vertex_count()):\n"
+" var vertex = mdt.get_vertex(i)\n"
+" # Dans cet exemple, on décalage chaque face du maillage par une unité, "
+"ce qui éloigne les faces puisque les normales sont différentes.\n"
+" vertex += mdt.get_vertex_normal(i)\n"
+" # On enregistre les modifications.\n"
+" mdt.set_vertex(i, vertex)\n"
+"mesh.surface_remove(0)\n"
+"mdt.commit_to_surface(mesh)\n"
+"var mi = MeshInstance.new()\n"
+"mi.mesh = mesh\n"
+"add_child(mi)\n"
+"[/codeblock]\n"
+"Voir aussi [ArrayMesh], [ImmediateGeometry] et [SurfaceTool] pour la "
+"génération procédurale de géométries.\n"
+"[b]Note :[/b] Godot utilise le sens horaire [url=https://learnopengl.com/"
+"Advanced-OpenGL/Face-culling]pour le culling [/url] pour les faces avant "
+"dans les modes de création de triangles."
#: doc/classes/MeshDataTool.xml
msgid "Clears all data currently in MeshDataTool."
@@ -40002,6 +40725,26 @@ msgid ""
"phase. This means that you can request any change to the map, using any "
"thread, without worrying."
msgstr ""
+"Le NavigationServer2D est le serveur responsable pour toutes les navigation "
+"en 2D. Il gère différents objets, nommés carte, régions et agents.\n"
+"Les cartes (\"maps\") sont faites de régions, qui sont faites de maillages "
+"de navigation. Ensemble, ces cartes définissent les aires navigables dans le "
+"monde 2D. Pour que deux régions soient connectées entre elles, elles doivent "
+"avoir une bordure en commun. Une bordure (\"edge\") est considérée connectée "
+"à une autre si elles ont deux sommets rapprochés de moins de la distance "
+"[member Navigation.edge_connection_margin].\n"
+"Pour utiliser le système d'évitement, vous devez utiliser des agents. Vous "
+"pouvez définir la vitesse cible d'un agent, puis le serveur émettra une "
+"méthode de rappel avec la vitesse modifiée.\n"
+"[b]Note :[/b] Le système d'évitement des collisions ignorent les régions. "
+"Utiliser la vitesse modifiée telle quelle peut déplacer un agent hors de la "
+"surface de navigable. C'est une limite du système d'évitement des collision, "
+"et certaines situations plus complexes peuvent nécessiter l'utilisation du "
+"moteur physique.\n"
+"Le serveur garde en mémoire tous les appels et les exécutent durant la phase "
+"de synchronisation. Cela veut dire que vous pouvez demander n'importe quel "
+"changement sur l'ensemble des cartes, via n'importe quel fil d'exécution, "
+"sans soucis."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Creates the agent."
@@ -40800,9 +41543,8 @@ msgid ""
msgstr ""
#: doc/classes/NavigationObstacle.xml
-#, fuzzy
msgid "Returns the [RID] of this obstacle on the [NavigationServer]."
-msgstr "Retourne le [RID] de la énième forme d'une zone."
+msgstr "Retourne le [RID] de cet obstacle dans le [NavigationServer]."
#: doc/classes/NavigationObstacle.xml
msgid ""
@@ -40841,9 +41583,8 @@ msgid ""
msgstr ""
#: doc/classes/NavigationObstacle2D.xml
-#, fuzzy
msgid "Returns the [RID] of this obstacle on the [Navigation2DServer]."
-msgstr "Retourne le [RID] de la énième forme d'une zone."
+msgstr "Retourne le [RID] de cet obstacle dans le [Navigation2DServer]."
#: doc/classes/NavigationObstacle2D.xml
msgid ""
@@ -40981,6 +41722,26 @@ msgid ""
"phase. This means that you can request any change to the map, using any "
"thread, without worrying."
msgstr ""
+"Le NavigationServer est le serveur responsable pour toutes les navigation en "
+"3D. Il gère différents objets, nommés carte, régions et agents.\n"
+"Les cartes (\"maps\") sont faites de régions, qui sont faites de maillages "
+"de navigation. Ensemble, ces cartes définissent les aires navigables dans le "
+"monde 3D. Pour que deux régions soient connectées entre elles, elles doivent "
+"avoir une bordure en commun. Une bordure (\"edge\") est considérée connectée "
+"à une autre si elles ont deux sommets rapprochés de moins de la distance "
+"[member Navigation.edge_connection_margin].\n"
+"Pour utiliser le système d'évitement, vous devez utiliser des agents. Vous "
+"pouvez définir la vitesse cible d'un agent, puis le serveur émettra une "
+"méthode de rappel avec la vitesse modifiée.\n"
+"[b]Note :[/b] Le système d'évitement des collisions ignorent les régions. "
+"Utiliser la vitesse modifiée telle quelle peut déplacer un agent hors de la "
+"surface de navigable. C'est une limite du système d'évitement des collision, "
+"et certaines situations plus complexes peuvent nécessiter l'utilisation du "
+"moteur physique.\n"
+"Le serveur garde en mémoire tous les appels et les exécutent durant la phase "
+"de synchronisation. Cela veut dire que vous pouvez demander n'importe quel "
+"changement sur l'ensemble des cartes, via n'importe quel fil d'exécution, "
+"sans soucis."
#: doc/classes/NavigationServer.xml
#, fuzzy
@@ -41983,6 +42744,32 @@ msgid ""
"get_node(\"/root/MyGame\")\n"
"[/codeblock]"
msgstr ""
+"Récupère un nœud. Le [NodePath] peut être un chemin relatif (depuis le nœud "
+"actuel) ou absolu (dans l'arborescence) vers un nœud. Si le chemin n'existe "
+"pas, [code]null[/code] est retourné et une erreur est affichée. Appeler une "
+"méthode sur la valeur retournée si le nœud n'existe lancera une erreur comme "
+"\"Tentative d'appel de <method> sur une instance null.\".\n"
+"[b]Note :[/b] Récupérer un nœud avec un chemin absolu ne fonctionne que si "
+"ce nœud est dans l'arborescence (voir [method is_inside_tree]).\n"
+"[b]Exemple :[/b] En assumant que le nœud actuel soit \"Personnage\" et que "
+"l'arborescence soit la suivante :\n"
+"[codeblock]\n"
+"/root\n"
+"/root/Personnage\n"
+"/root/Personnage/Épée\n"
+"/root/Personnage/Sac-à-dos/Dague\n"
+"/root/MonJeu\n"
+"/root/Bassin/Alligator\n"
+"/root/Bassin/Moustique\n"
+"/root/Bassin/Gobelin\n"
+"[/codeblock]\n"
+"Les chemins possibles sont :\n"
+"[codeblock]\n"
+"get_node(\"Épée\")\n"
+"get_node(\"Sac-à-dos/Dague\")\n"
+"get_node(\"../Bassin/Alligator\")\n"
+"get_node(\"/root/MonJeu\")\n"
+"[/codeblock]"
#: doc/classes/Node.xml
msgid ""
@@ -42333,8 +43120,8 @@ msgid ""
"will only be received by nodes with the same [NodePath], including the exact "
"same node name. Behaviour depends on the RPC configuration for the given "
"method, see [method rpc_config]. Methods are not exposed to RPCs by default. "
-"See also [method rset] and [method rset_config] for properties. Returns an "
-"empty [Variant].\n"
+"See also [method rset] and [method rset_config] for properties. Returns "
+"[code]null[/code].\n"
"[b]Note:[/b] You can only safely use RPCs on clients after you received the "
"[code]connected_to_server[/code] signal from the [SceneTree]. You also need "
"to keep track of the connection state, either by the [SceneTree] signals "
@@ -42356,14 +43143,14 @@ msgstr ""
#: doc/classes/Node.xml
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
-"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns an empty "
-"[Variant]."
+"(see [method NetworkedMultiplayerPeer.set_target_peer]). Returns [code]null[/"
+"code]."
msgstr ""
#: doc/classes/Node.xml
+#, fuzzy
msgid ""
-"Sends a [method rpc] using an unreliable protocol. Returns an empty "
-"[Variant]."
+"Sends a [method rpc] using an unreliable protocol. Returns [code]null[/code]."
msgstr ""
"Envoie un [method rpc] en utilisant un protocole non fiable. Retourne un "
"[Variant] vide."
@@ -42372,7 +43159,7 @@ msgstr ""
msgid ""
"Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] "
"using an unreliable protocol (see [method NetworkedMultiplayerPeer."
-"set_target_peer]). Returns an empty [Variant]."
+"set_target_peer]). Returns [code]null[/code]."
msgstr ""
#: doc/classes/Node.xml
@@ -42956,6 +43743,40 @@ msgid ""
"when moving, renaming or deleting a node in the scene tree, but they are "
"never updated at runtime."
msgstr ""
+"Un chemin pré-interprété relatif ou absolu dans l'arborescence, à utiliser "
+"avec [method Node.get_node] ou d'autres fonctions similaires. Ça peut être "
+"une référence à un nœud, une ressource dans un nœud, ou une propriété dans "
+"un nœud ou un ressource. Par exemple, [code]\"Path2D/PathFollow2D/Sprite:"
+"texture:size\"[/code] réfère à la propriété [code]size[/code] de la "
+"ressource [code]texture[/code] du nœud nommé [code]\"Sprite\"[/code] qui est "
+"l'enfant des autres nœuds cités dans le chemin.\n"
+"Une simple chaine de caractères contentant le chemin suffit à des méthodes "
+"commes [method Node.get_node] qui la convertissent directement en NodePath, "
+"mais il est parfois nécessaire d'interpréter ce chemin en utilisant "
+"directement le [NodePath] ou format rapide [code]@\"path\"[/code]. Exporter "
+"une variable [NodePath] vous donnera un widget de sélection d'un nœud dans "
+"le panneau des propriétés dans l'éditeur, ce qui est souvent utile.\n"
+"Un [NodePath] est composé d'une liste de noms de nœud séparé par \"/"
+"\" (comme le chemin d'un fichier) et avec une liste facultative de \"sous-"
+"noms\" séparés par deux points qui peuvent être des ressources ou des "
+"propriétés.\n"
+"Quelques exemples de NodePath :\n"
+"[codeblock]\n"
+"# Aucun \"/\" au début veut dire que c'est relatif au nœud actuel.\n"
+"@\"A\" # L'enfant direct A\n"
+"@\"A/B\" # L'enfant B de A\n"
+"@\".\" # Le nœud actuel.\n"
+"@\"..\" # Le nœud parent.\n"
+"@\"../C\" # Le nœud C voisin.\n"
+"# Un \"/\" au début veut dire que c'est absolu dans le SceneTree.\n"
+"@\"/root\" # Équivalent à get_tree().get_root().\n"
+"@\"/root/Main\" # Si votre principale scène se nomme \"Main\".\n"
+"@\"/root/MyAutoload\" # Si vous avez un nœud ou une scène chargée "
+"automatiquement.\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Dans l'éditeur, les propriétés [NodePath] sont automatiquement "
+"mise à jour lors de déplacement, renommage ou suppression d'un nœud dans "
+"l'arborescence, mais ne sont jamais mis à jour quand le jeu est lancé."
#: doc/classes/NodePath.xml doc/classes/PackedScene.xml doc/classes/Panel.xml
#: doc/classes/PanelContainer.xml doc/classes/TileMap.xml
@@ -42990,6 +43811,32 @@ msgid ""
"\"/root/Level/Path2D\"\n"
"[/codeblock]"
msgstr ""
+"Créer un NodePath depuis une chaine de caractères, par ex. [code]\"Path2D/"
+"PathFollow2D/Sprite:texture:size\"[/code]. Un chemin est absolu s'il "
+"commence par une barre oblique (\"/\"). Les chemins absolus ne sont valides "
+"que dans l’arborescente globale, par dans les scènes individuelles. Pour les "
+"chemins relatifs, [code]\".\"[/code] et [code]\"..\"[/code] indique le nœud "
+"actuel et son parent respectivement.\n"
+"Les \"sous-noms\" facultatifs inclus après le chemin du nœud cible peuvent "
+"référer une ressource ou une propriété, et peuvent aussi être imbriquées.\n"
+"Quelques exemples de NodePath valides (en assumant que ces nœuds existent et "
+"contiennent les ressources et propriétés qui sont référencées) :\n"
+"[codeblock]\n"
+"# Réfère au nœud \"Sprite\".\n"
+"\"Path2D/PathFollow2D/Sprite\"\n"
+"# Réfère au nœud \"Sprite\" et sa ressource \"texture\".\n"
+"# \"get_node()\" retournera \"Sprite\", alors que "
+"\"get_node_and_resource()\"\n"
+"# retournera à la fois le nœud \"Sprite\" et sa ressource \"texture\".\n"
+"\"Path2D/PathFollow2D/Sprite:texture\"\n"
+"# Réfère au nœud \"Sprite\" de sa propriété \"position\".\n"
+"\"Path2D/PathFollow2D/Sprite:position\"\n"
+"# Réfère au nœud \"Sprite\" et au composant \"x\" de sa propriété "
+"\"position\".\n"
+"\"Path2D/PathFollow2D/Sprite:position:x\"\n"
+"# Chemin absolu (de le nœud racine \"root\").\n"
+"\"/root/Level/Path2D\"\n"
+"[/codeblock]"
#: doc/classes/NodePath.xml
msgid ""
@@ -43016,6 +43863,13 @@ msgid ""
"print(nodepath.get_concatenated_subnames()) # texture:load_path\n"
"[/codeblock]"
msgstr ""
+"Retourne tous les sous-noms reliés par deux points ([code]:[/code]) comme "
+"séparateur, c'est-à-dire que la partie droite des deux premiers points est "
+"un chemin vers un nœud.\n"
+"[codeblock]\n"
+"var nodepath = NodePath(\"Path2D/PathFollow2D/Sprite:texture:load_path\")\n"
+"print(nodepath.get_concatenated_subnames()) # texture:load_path\n"
+"[/codeblock]"
#: doc/classes/NodePath.xml
msgid ""
@@ -43028,6 +43882,14 @@ msgid ""
"print(node_path.get_name(2)) # Sprite\n"
"[/codeblock]"
msgstr ""
+"Retourne le nom du nœud à l'index [code]idx[/code] (la valeur est entre 0 et "
+"[method get_name_count]).\n"
+"[codeblock]\n"
+"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite\")\n"
+"print(node_path.get_name(0)) # Path2D\n"
+"print(node_path.get_name(1)) # PathFollow2D\n"
+"print(node_path.get_name(2)) # Sprite\n"
+"[/codeblock]"
#: doc/classes/NodePath.xml
msgid ""
@@ -43046,6 +43908,13 @@ msgid ""
"print(node_path.get_subname(1)) # load_path\n"
"[/codeblock]"
msgstr ""
+"Retourne la ressource ou le nom de propriété indiqué à [code]idx[/code] (de "
+"0 jusqu'à [method get_subname_count]).\n"
+"[codeblock]\n"
+"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite:texture:load_path\")\n"
+"print(node_path.get_subname(0)) # texture\n"
+"print(node_path.get_subname(1)) # load_path\n"
+"[/codeblock]"
#: doc/classes/NodePath.xml
msgid ""
@@ -43089,6 +43958,20 @@ msgid ""
"var image = texture.get_data()\n"
"[/codeblock]"
msgstr ""
+"Utilise un [OpenSimplexNoise] pour remplir la texture. Vous pouvez spécifier "
+"une taille de texture mais gardez en mémoire qu'une plus grande taille "
+"demandera un temps de génération plus long, et que les bruits continus ne "
+"fonctionnent qu'avec des textures carrées.\n"
+"NoiseTexture peut aussi générer des textures normalmap.\n"
+"Cette classe utilise des [Thread] en interne pour générer la texture, donc "
+"[method Texture.get_data] peut retourner [code]null[/code] si la génération "
+"de la texture n'a pas encore été finie. Dans ce cas, vous devez attendre que "
+"la texture soit générée avant d'accéder aux données :\n"
+"[codeblock]\n"
+"var texture = preload(\"res://noise.tres\")\n"
+"yield(texture, \"changed\")\n"
+"var image = texture.get_data()\n"
+"[/codeblock]"
#: modules/opensimplex/doc_classes/NoiseTexture.xml
msgid ""
@@ -44347,6 +45230,22 @@ msgid ""
"the project if it is currently running (since the project is an independent "
"child process)."
msgstr ""
+"Retarde l'exécution de l'actuel fil d'exécution de [code]msec[/code] "
+"millisecondes. [code]msec[/code] doit être supérieur ou égal à [code]0[/"
+"code]. Sinon, [method delay_msec] ne fera rien et affichera une erreur.\n"
+"[b]Note :[/b] [method delay_msec] va [i]bloquer[/i] l'exécution à retarder. "
+"Pour retarder l'exécution sans la bloquer, voir [method SceneTree."
+"create_timer]. Utiliser yield avec [method SceneTree.create_timer] retardera "
+"l'exécution du code placé en dessous de [code]yield[/code] mais sans "
+"affecter le reste du projet (ni l'éditeur, pour les [EditorPlugin] et les "
+"[EditorScript]s).\n"
+"[b]Note :[/b] Quand [method delay_msec] est appelé dans le fil d'exécution "
+"principal, le projet s'arrêtera et ne pourra plus mettre à jour son rendu ou "
+"accepter de nouvelles entrées tant que le retard ne sera pas terminé. Quand "
+"vous utilisez [method delay_msec] avec [EditorPlugin] ou [EditorScript], "
+"l'éditeur s'arrêtera mais le projet lancé qui continuera de fonctionner "
+"normalement (puisque le projet n'est pas dans le même processeur que "
+"l'éditeur)."
#: doc/classes/OS.xml
msgid ""
@@ -44367,6 +45266,22 @@ msgid ""
"the project if it is currently running (since the project is an independent "
"child process)."
msgstr ""
+"Retarde l'exécution de l'actuel fil d'exécution de [code]usec[/code] "
+"microsecondes. [code]usec[/code] doit être supérieur ou égal à [code]0[/"
+"code]. Sinon, [method delay_usec] ne fera rien et affichera une erreur.\n"
+"[b]Note :[/b] [method delay_usec] va [i]bloquer[/i] l'exécution à retarder. "
+"Pour retarder l'exécution sans la bloquer, voir [method SceneTree."
+"create_timer]. Utiliser yield avec [method SceneTree.create_timer] retardera "
+"l'exécution du code placé en dessous de [code]yield[/code] mais sans "
+"affecter le reste du projet (ni l'éditeur, pour les [EditorPlugin] et les "
+"[EditorScript]s).\n"
+"[b]Note :[/b] Quand [method delay_msec] est appelé dans le fil d'exécution "
+"principal, le projet s'arrêtera et ne pourra plus mettre à jour son rendu ou "
+"accepter de nouvelles entrées tant que le retard ne sera pas terminé. Quand "
+"vous utilisez [method delay_msec] avec [EditorPlugin] ou [EditorScript], "
+"l'éditeur s'arrêtera mais le projet lancé qui continuera de fonctionner "
+"normalement (puisque le projet n'est pas dans le même processeur que "
+"l'éditeur)."
#: doc/classes/OS.xml
msgid ""
@@ -44663,6 +45578,10 @@ msgid ""
"[code]\"Server\"[/code], [code]\"Windows\"[/code], [code]\"UWP\"[/code], "
"[code]\"X11\"[/code]."
msgstr ""
+"Retourne le nom du système d'exploitation hôte. Les valeurs possibles sont : "
+"[code]\"Android\"[/code], [code]\"iOS\"[/code], [code]\"HTML5\"[/code], "
+"[code]\"OSX\"[/code], [code]\"Server\"[/code], [code]\"Windows\"[/code], "
+"[code]\"UWP\"[/code], [code]\"X11\"[/code]."
#: doc/classes/OS.xml
msgid ""
@@ -44691,6 +45610,9 @@ msgid ""
"[enum PowerState] constants.\n"
"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
msgstr ""
+"Retourne l'état actuel de l'appareil par rapport à sa batterie ou son "
+"énergie. Voir [enum PowerState] constants.\n"
+"[b]Note :[/b] Cette méthode est implémentée sous Linux, macOS et Windows."
#: doc/classes/OS.xml
msgid ""
@@ -44753,6 +45675,23 @@ msgid ""
"[b]Note:[/b] This method is implemented on Android, Linux, macOS and "
"Windows. Returns [code]72[/code] on unsupported platforms."
msgstr ""
+"Retourne la densité en points pour pouce (\"dpi\") de l'écran spécifié. Si "
+"[code]screen[/code] est [code]-1[/code] (la valeur par défaut), l'écran "
+"actuel sera utilisé.\n"
+"[b]Note :[/b] Sous macOS, la valeur retournée est inexacte si la mise à "
+"l'échelle n'est pas un nombre entier.\n"
+"[b]Note :[/b] Pour les appareils Android, les densités des écrans sont "
+"groupés en six catégories :\n"
+"[codeblock]\n"
+" ldpi - 120 dpi\n"
+" mdpi - 160 dpi\n"
+" hdpi - 240 dpi\n"
+" xhdpi - 320 dpi\n"
+" xxhdpi - 480 dpi\n"
+"xxxhdpi - 640 dpi\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Cette méthode est implémentée sous Android, Linux, macOS et "
+"Windows. Retourne [code]72[/code] sur les plateformes non supportées."
#: doc/classes/OS.xml
msgid ""
@@ -45353,6 +46292,24 @@ msgid ""
"region is not drawn, while on Linux and macOS it is.\n"
"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
msgstr ""
+"Définit une région polygonale de la fenêtre qui accepte les événements de la "
+"souris. Ces événements en dehors de cette régions passeront au travers.\n"
+"Passer un tableau vide désactivera cet effet (tous les événements de la "
+"souris seront acceptés par la fenêtre, ce qui est le comportement par "
+"défaut).\n"
+"[codeblock]\n"
+"# Définir une région, avec un nœud Path2D.\n"
+"OS.set_window_mouse_passthrough($Path2D.curve.get_baked_points())\n"
+"\n"
+"# Définir une région, avec un nœud Polygon2D.\n"
+"OS.set_window_mouse_passthrough($Polygon2D.polygon)\n"
+"\n"
+"# Rétablir la région par défaut (toute la fenêtre).\n"
+"OS.set_window_mouse_passthrough([])\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Sous Windows, la partie de la fenêtre en dehors de la région "
+"définie n'est pas dessinée, alors qu'elle l'est sous Linux et macOS.\n"
+"[b]Note :[/b] Cette méthode est implémenté sous Linux, macOS et Windows."
#: doc/classes/OS.xml
msgid ""
@@ -45361,6 +46318,12 @@ msgid ""
"as that will negatively affect performance on some window managers.\n"
"[b]Note:[/b] This method is implemented on HTML5, Linux, macOS and Windows."
msgstr ""
+"Définit le titre de la fenêtre avec le texte donné.\n"
+"[b]Note :[/b] Cela doit être utilisé avec parcimonie. Ne l'utilisez pas à "
+"chaque trame, puisque les performances peuvent en être affectées avec "
+"certains gestionnaires de fenêtres.\n"
+"[b]Note :[/b] Cette méthode est implémentée sous HTML5, Linux, macOS et "
+"Windows."
#: doc/classes/OS.xml
msgid ""
@@ -45380,6 +46343,23 @@ msgid ""
"[b]Note:[/b] This method is implemented on Android, iOS, HTML5, Linux, macOS "
"and Windows."
msgstr ""
+"Demande au système d'exploitation d'ouvrir une ressource avec le programme "
+"le plus approprié. Par exemple :\n"
+"- [code]OS.shell_open(\"C:\\\\Users\\utilisateur\\Téléchargement\")[/code] "
+"sous Windows ouvrira le gestionnaire de fichiers dans le dossier de "
+"Téléchargements de l'utilisateur.\n"
+"- [code]OS.shell_open(\"https://godotengine.org\")[/code] ouvrira la page "
+"d'accueil de Godot dans le navigateur web par défaut.\n"
+"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] ouvrira le "
+"client mail par défaut avec le champs destinataire définit à "
+"[code]example@example.com[/code]. Voir [url=https://blog.escapecreative.com/"
+"customizing-mailto-links/]Personnaliser les liens [code]mailto:[/code][/url] "
+"pour la liste des champs qui peuvent être ajoutés.\n"
+"Utilisez [method ProjectSettings.globalize_path] pour convertir un chemin "
+"[code]res://[/code] ou [code]user://[/code] en chemin système pour utiliser "
+"avec cette méthode.\n"
+"[b]Note :[/b] Cette méthode est implémentée sous Android, iOS, HTML5, Linux, "
+"macOS et Windows."
#: doc/classes/OS.xml
msgid ""
@@ -45971,15 +46951,14 @@ msgid "Sends a raw packet."
msgstr "Envoie un paquet brut."
#: doc/classes/PacketPeer.xml
-#, fuzzy
msgid ""
"Sends a [Variant] as a packet. If [code]full_objects[/code] (or [member "
"allow_object_decoding]) is [code]true[/code], encoding objects is allowed "
"(and can potentially include code)."
msgstr ""
-"Encode la valeur d'une variable en un tableau d'octets(byte[]). Lorsque "
-"[code]full_objects[/code] a la valeur [code]true[/code], l'encodage d'objets "
-"est autorisé (et peut potentiellement inclure du code)."
+"Envoie un [Variant] dans un paquet. Si [code]full_objects[/code] (ou [member "
+"allow_object_decoding]) est [code]true[/code], le codage des objets est "
+"autorisé (et peuvent potentiellement contenir du code à exécuter)."
#: doc/classes/PacketPeer.xml
msgid ""
@@ -46213,6 +47192,21 @@ msgid ""
" return\n"
"[/codeblock]"
msgstr ""
+"Attend qu'un paquet arrive sur le port écoutant. Voir [method listen].\n"
+"[b]Note :[/b] [method wait] ne peut pas être interrompu une fois appelé. Il "
+"est possible de passer outre en autorisant l'envoi d'un paquet spécifique "
+"pour s'arrêter :\n"
+"[codeblock]\n"
+"# Serveur\n"
+"socket.set_dest_address(\"127.0.0.1\", 789)\n"
+"socket.put_packet(\"Arrête toi !\".to_ascii())\n"
+"\n"
+"# Client\n"
+"while socket.wait() == OK:\n"
+" var data = socket.get_packet().get_string_from_ascii()\n"
+" if data == \"Arrête toi !\":\n"
+" return\n"
+"[/codeblock]"
#: doc/classes/Panel.xml
msgid "Provides an opaque background for [Control] children."
@@ -49748,11 +50742,25 @@ msgstr "Un tableau compacté d'octets."
msgid ""
"An array specifically designed to hold bytes. Optimized for memory usage, "
"does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference."
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolByteArray] or "
+"mutating a [PoolByteArray] within an [Array] or [Dictionary], changes will "
+"be lost:\n"
+"[codeblock]\n"
+"var array = [PoolByteArray()]\n"
+"array[0].push_back(123)\n"
+"print(array) # [[]] (empty PoolByteArray within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolByteArray] property must be [i]reassigned[/i] with "
+"[code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolByteArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(123)\n"
+"array[0] = pool_array\n"
+"print(array) # [[123]] (PoolByteArray with 1 element inside an Array)\n"
+"[/codeblock]"
msgstr ""
-"Un tableau spécialement prévu pour contenir des octets. Optimisé pour "
-"l'usage mémoire, elle ne se fragmente pas.\n"
-"[b]Note :[/b] Ce type est passé par valeur et non pas référence."
#: doc/classes/PoolByteArray.xml
msgid ""
@@ -49885,18 +50893,34 @@ msgstr ""
"nouveau [PoolByteArray]. Chaque index négatif partira de la fin du tableau."
#: doc/classes/PoolColorArray.xml
-msgid "A pooled array of [Color]."
+#, fuzzy
+msgid "A pooled array of [Color]s."
msgstr "Un tableau compacté de [Color]."
#: doc/classes/PoolColorArray.xml
msgid ""
"An array specifically designed to hold [Color]. Optimized for memory usage, "
"does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference."
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolColorArray] or "
+"mutating a [PoolColorArray] within an [Array] or [Dictionary], changes will "
+"be lost:\n"
+"[codeblock]\n"
+"var array = [PoolColorArray()]\n"
+"array[0].push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
+"print(array) # [[]] (empty PoolColorArray within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolColorArray] property must be [i]reassigned[/i] with "
+"[code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolColorArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(Color(0.1, 0.2, 0.3, 0.4))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(0.1, 0.2, 0.3, 0.4)]] (PoolColorArray with 1 element "
+"inside an Array)\n"
+"[/codeblock]"
msgstr ""
-"Un tableau spécialement prévu pour contenir des [Color]. Optimisé pour "
-"l'usage mémoire, elle ne se fragmente pas.\n"
-"[b]Note :[/b] Ce type est passé par valeur et non pas référence."
#: doc/classes/PoolColorArray.xml
msgid ""
@@ -49932,7 +50956,24 @@ msgstr "Un tableau compacté d'entiers ([int])."
msgid ""
"An array specifically designed to hold integer values ([int]). Optimized for "
"memory usage, does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference.\n"
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolIntArray] or "
+"mutating a [PoolIntArray] within an [Array] or [Dictionary], changes will be "
+"lost:\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"array[0].push_back(1234)\n"
+"print(array) # [[]] (empty PoolIntArray within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolIntArray] property must be [i]reassigned[/i] with "
+"[code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolIntArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(1234)\n"
+"array[0] = pool_array\n"
+"print(array) # [[1234]] (PoolIntArray with 1 element inside an Array)\n"
+"[/codeblock]\n"
"[b]Note:[/b] This type is limited to signed 32-bit integers, which means it "
"can only take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. "
"[code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap "
@@ -49966,14 +51007,32 @@ msgid "Changes the int at the given index."
msgstr "Modifie le [int] à l’index donné."
#: doc/classes/PoolRealArray.xml
-msgid "A pooled array of reals ([float])."
+#, fuzzy
+msgid "A pooled array of real numbers ([float])."
msgstr "Un tableau compacté de flottants ([float])."
#: doc/classes/PoolRealArray.xml
msgid ""
"An array specifically designed to hold floating-point values. Optimized for "
"memory usage, does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference.\n"
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolRealArray] or "
+"mutating a [PoolRealArray] within an [Array] or [Dictionary], changes will "
+"be lost:\n"
+"[codeblock]\n"
+"var array = [PoolRealArray()]\n"
+"array[0].push_back(12.34)\n"
+"print(array) # [[]] (empty PoolRealArray within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolRealArray] property must be [i]reassigned[/i] with "
+"[code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolRealArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(12.34)\n"
+"array[0] = pool_array\n"
+"print(array) # [[12.34]] (PoolRealArray with 1 element inside an Array)\n"
+"[/codeblock]\n"
"[b]Note:[/b] Unlike primitive [float]s which are 64-bit, numbers stored in "
"[PoolRealArray] are 32-bit floats. This means values stored in "
"[PoolRealArray] have lower precision compared to primitive [float]s. If you "
@@ -50000,18 +51059,33 @@ msgid "Changes the float at the given index."
msgstr "Change la flottant à la position donnée."
#: doc/classes/PoolStringArray.xml
-msgid "A pooled array of [String]."
+#, fuzzy
+msgid "A pooled array of [String]s."
msgstr "Un tableau compacté de [String]."
#: doc/classes/PoolStringArray.xml
msgid ""
"An array specifically designed to hold [String]s. Optimized for memory "
"usage, does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference."
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolStringArray] or "
+"mutating a [PoolStringArray] within an [Array] or [Dictionary], changes will "
+"be lost:\n"
+"[codeblock]\n"
+"var array = [PoolStringArray()]\n"
+"array[0].push_back(\"hello\")\n"
+"print(array) # [[]] (empty PoolStringArray within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolStringArray] property must be [i]reassigned[/i] "
+"with [code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolStringArray()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(\"hello\")\n"
+"array[0] = pool_array\n"
+"print(array) # [[hello]] (PoolStringArray with 1 element inside an Array)\n"
+"[/codeblock]"
msgstr ""
-"Un tableau spécialement prévu pour contenir des [String]. Optimisé pour "
-"l'usage mémoire, elle ne se fragmente pas.\n"
-"[b]Note :[/b] Ce type est passé par valeur et non pas référence."
#: doc/classes/PoolStringArray.xml
msgid ""
@@ -50042,18 +51116,34 @@ msgid "Changes the [String] at the given index."
msgstr "Change la [String] à la position donnée."
#: doc/classes/PoolVector2Array.xml
-msgid "A pooled array of [Vector2]."
+#, fuzzy
+msgid "A pooled array of [Vector2]s."
msgstr "Un tableau compacté de [Vector2]."
#: doc/classes/PoolVector2Array.xml
msgid ""
"An array specifically designed to hold [Vector2]. Optimized for memory "
"usage, does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference."
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolVector2Array] or "
+"mutating a [PoolVector2Array] within an [Array] or [Dictionary], changes "
+"will be lost:\n"
+"[codeblock]\n"
+"var array = [PoolVector2Array()]\n"
+"array[0].push_back(Vector2(12, 34))\n"
+"print(array) # [[]] (empty PoolVector2Array within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolVector2Array] property must be [i]reassigned[/i] "
+"with [code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolVector2Array()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(Vector2(12, 34))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(12, 34)]] (PoolVector2Array with 1 element inside an "
+"Array)\n"
+"[/codeblock]"
msgstr ""
-"Un tableau spécialement prévu pour contenir des [Vector2]. Optimisé pour "
-"l'usage mémoire, elle ne se fragmente pas.\n"
-"[b]Note :[/b] Ce type est passé par valeur et non pas référence."
#: doc/classes/PoolVector2Array.xml doc/classes/TileMap.xml
#: doc/classes/TileSet.xml
@@ -50088,11 +51178,26 @@ msgstr "Un tableau compacté de [Vector3]."
msgid ""
"An array specifically designed to hold [Vector3]. Optimized for memory "
"usage, does not fragment the memory.\n"
-"[b]Note:[/b] This type is passed by value and not by reference."
+"[b]Note:[/b] This type is passed by value and not by reference. This means "
+"that when [i]mutating[/i] a class property of type [PoolVector3Array] or "
+"mutating a [PoolVector3Array] within an [Array] or [Dictionary], changes "
+"will be lost:\n"
+"[codeblock]\n"
+"var array = [PoolVector3Array()]\n"
+"array[0].push_back(Vector3(12, 34, 56))\n"
+"print(array) # [[]] (empty PoolVector3Array within an empty Array)\n"
+"[/codeblock]\n"
+"Instead, the entire [PoolVector3Array] property must be [i]reassigned[/i] "
+"with [code]=[/code] for it to be changed:\n"
+"[codeblock]\n"
+"var array = [PoolVector3Array()]\n"
+"var pool_array = array[0]\n"
+"pool_array.push_back(Vector3(12, 34, 56))\n"
+"array[0] = pool_array\n"
+"print(array) # [[(12, 34, 56)]] (PoolVector3Array with 1 element inside an "
+"Array)\n"
+"[/codeblock]"
msgstr ""
-"Un tableau spécialement prévu pour contenir des [Vector3]. Optimisé pour "
-"l'usage mémoire, elle ne se fragmente pas.\n"
-"[b]Note :[/b] Ce type est passé par valeur et non pas référence."
#: doc/classes/PoolVector3Array.xml
msgid ""
@@ -51139,6 +52244,26 @@ msgid ""
"ProjectSettings.add_property_info(property_info)\n"
"[/codeblock]"
msgstr ""
+"Ajoute une propriété personnalisée dans une des propriétés du projet. Le "
+"dictionnaire doit contenir :\n"
+"- [code]name[/code]: [String] (le nom de la propriété)\n"
+"- [code]type[/code]: [int] (voir [enum Variant.Type])\n"
+"- en option l'indice [code]hint[/code]: [int] (voir [enum PropertyHint]) et "
+"[code]hint_string[/code]: [String]\n"
+"[b]Exemple :[/b]\n"
+"[codeblock]\n"
+"ProjectSettings.set(\"category/property_name\", 0) # Le premier choix "
+"(\"un\" dans ce cas)\n"
+"\n"
+"var property_info = {\n"
+" \"name\": \"category/property_name\",\n"
+" \"type\": TYPE_INT,\n"
+" \"hint\": PROPERTY_HINT_ENUM,\n"
+" \"hint_string\": \"un,deux,trois\"\n"
+"}\n"
+"\n"
+"ProjectSettings.add_property_info(property_info)\n"
+"[/codeblock]"
#: doc/classes/ProjectSettings.xml
msgid "Clears the whole configuration (not recommended, may break things)."
@@ -51194,6 +52319,32 @@ msgid ""
" path = OS.get_executable_path().get_base_dir().plus_file(\"hello.txt\")\n"
"[/codeblock]"
msgstr ""
+"Retourne un chemin absolu et natif du système d'exploitation correspondant "
+"au chemin [code]path[/code] localisé (commençant par [code]res://[/code] ou "
+"[code]user://[/code]). Le chemin retourné variera suivant le système "
+"d'exploitation et les préférences utilisateur. Voir [url=$DOCS_URL/tutorials/"
+"io/data_paths.html]Les chemins vers les fichiers dans les projets Godot[/"
+"url] pour voir comment sont convertis ces chemins. Voir aussi [method "
+"localize_path].\n"
+"[b]Note :[/b] [method globalize_path] avec [code]res://[/code] ne "
+"fonctionnera pas dans projet exporté. À la place, ajoutez tout au début le "
+"dossier de base de l'exécutable au chemin retourné par le projet exporté :\n"
+"[codeblock]\n"
+"var path = \"\"\n"
+"if OS.has_feature(\"editor\"):\n"
+" # Exécuté depuis l'éditeur.\n"
+" # Le chemin `path` contiendra le chemin absolu vers le fichier `hello."
+"txt` à la racine du projet.\n"
+" path = ProjectSettings.globalize_path(\"res://hello.txt\")\n"
+"else:\n"
+" # Exécuté depuis le projet exporté.\n"
+" # Le chemin `path` contiendra le chemin absolu vers le fichier `hello."
+"txt` avec l'exécutable.\n"
+" # Ça n'est *pas* la identique à `ProjectSettings.globalize_path()` avec "
+"un chemin `res://`,\n"
+" # mais c'est assez proche dans le principe.\n"
+" path = OS.get_executable_path().get_base_dir().plus_file(\"hello.txt\")\n"
+"[/codeblock]"
#: doc/classes/ProjectSettings.xml
msgid "Returns [code]true[/code] if a configuration value is present."
@@ -54662,6 +55813,24 @@ msgid ""
"The [code]0[/code] value documented here is a placeholder, and not the "
"actual default seed."
msgstr ""
+"RandomNumberGenerator est une classe pour générer des nombres pseudo-"
+"aléatoires. Elle utilise l'algorithme [url=http://www.pcg-random.org/]PCG32[/"
+"url].\n"
+"[b]Note :[/b] L'implémentation de l'algorithme peut varier d'une version de "
+"Godot à l'autre et donc produire des suites de nombres très différents entre "
+"les versions.\n"
+"Pour générer un flottant aléatoire (dans un intervalle donné) basé sur le "
+"temps actuel:\n"
+"[codeblock]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"func _ready():\n"
+" rng.randomize()\n"
+" var my_random_number = rng.randf_range(-10.0, 10.0)\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Les valeurs par défaut des propriétés [member seed] et [member "
+"state] sont pseudo-aléatoire, et elles changent à chaque appel à [method "
+"randomize]. La valeur [code]0[/code] documentée ici est une valeur fictive, "
+"et non la valeur par défaut."
#: doc/classes/RandomNumberGenerator.xml
msgid "Random number generation"
@@ -54730,6 +55899,23 @@ msgid ""
"state], and not the initial seed value, which is going to be fixed in Godot "
"4.0."
msgstr ""
+"Initialise l'état d'un générateur de nombres aléatoires basé sur la graine "
+"donnée. Une graine donnée générera toujours la même suite de nombres "
+"aléatoires.\n"
+"[b]Note :[/b] Le générateur n'est pas soumis à l'effet avalanche, et peut "
+"générer des flux similaires de nombres à partir d'une même graine. Préférez "
+"utiliser une fonction de hachage pour améliorer la qualité de la graine si "
+"elle provient d'une source externe.\n"
+"[b]Note :[/b] Définir cette propriété produit un effet non voulu qui change "
+"l'état [member state] interne, donc assurez-vous d'initialiser la graine "
+"[i]avant[/i] de modifier l'état [member state]:\n"
+"[codeblock]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"rng.seed = hash(\"Godot\")\n"
+"rng.state = 100 # Restaure avec un état précédemment enregistré.\n"
+"[/codeblock]\n"
+"[b]Avertissement :[/b] cette propriété retourne le précédent [member state], "
+"et non pas la graine initiale, ce qui sera corrigé dans Godot 4.0."
#: doc/classes/RandomNumberGenerator.xml
msgid ""
@@ -54749,6 +55935,22 @@ msgid ""
"initialize the random number generator with arbitrary input, use [member "
"seed] instead."
msgstr ""
+"L'état actuel du générateur de nombres aléatoires. Enregistrez puis "
+"restaurez cette propriété pour maintenir l'état du générateur à l'état "
+"précédent :\n"
+"[codeblock]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"print(rng.randf()) # Affiche un nombre aléatoire.\n"
+"var saved_state = rng.state # Enregistre l'état actuel.\n"
+"print(rng.randf()) # Avance l'état interne.\n"
+"rng.state = saved_state # Restaure l'état enregistré.\n"
+"print(rng.randf()) # Affiche le même nombre aléatoire que précédemment.\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Ne modifiez pas l'état sauvegardé avec une valeur arbitraire, "
+"le générateur à besoin d'avoir un état particulier pour générer des valeurs "
+"correctement aléatoires. Cet état ne devrait être défini qu'à partir de "
+"valeurs qui proviennent de cette propriété. Pour initialiser le générateur "
+"avec une valeur personnalisée, utilisez plutôt [member seed]."
#: doc/classes/Range.xml
#, fuzzy
@@ -54761,6 +55963,10 @@ msgid ""
"[i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/"
"i] and [i]page[/i], for example a [ScrollBar]."
msgstr ""
+"Range est une classe de base des nœuds [Control] qui change une [code]value[/"
+"code] flottante entre le [code]minimum[/code] et le [code]maximum[/code], "
+"par étape [code]step[/code] et par [code]page[/code], par exemple un "
+"[ScrollBar]."
#: doc/classes/Range.xml
msgid ""
@@ -56928,7 +58134,8 @@ msgstr "Verrouille l'axe linéaire et de rotation spécifié."
#: doc/classes/RigidBody.xml
msgid ""
-"Damps RigidBody's rotational forces.\n"
+"Damps RigidBody's rotational forces. If this value is different from -1.0 it "
+"will be added to any linear damp derived from the world or areas.\n"
"See [member ProjectSettings.physics/3d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -57027,8 +58234,8 @@ msgstr ""
#: doc/classes/RigidBody.xml
msgid ""
"The body's linear damp. Cannot be less than -1.0. If this value is different "
-"from -1.0, any linear damp derived from the world or areas will be "
-"overridden.\n"
+"from -1.0 it will be added to any linear damp derived from the world or "
+"areas.\n"
"See [member ProjectSettings.physics/3d/default_linear_damp] for more details "
"about damping."
msgstr ""
@@ -57242,7 +58449,8 @@ msgstr ""
msgid ""
"Damps the body's [member angular_velocity]. If [code]-1[/code], the body "
"will use the [b]Default Angular Damp[/b] defined in [b]Project > Project "
-"Settings > Physics > 2d[/b].\n"
+"Settings > Physics > 2d[/b]. If greater than [code]-1[/code] it will be "
+"added to the default project value.\n"
"See [member ProjectSettings.physics/2d/default_angular_damp] for more "
"details about damping."
msgstr ""
@@ -57325,7 +58533,8 @@ msgstr ""
msgid ""
"Damps the body's [member linear_velocity]. If [code]-1[/code], the body will "
"use the [b]Default Linear Damp[/b] in [b]Project > Project Settings > "
-"Physics > 2d[/b].\n"
+"Physics > 2d[/b]. If greater than [code]-1[/code] it will be added to the "
+"default project value.\n"
"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
"about damping."
msgstr ""
@@ -58806,6 +60015,21 @@ msgid ""
"tween.tween_callback($Sprite, \"set_modulate\", [Color.blue]).set_delay(2)\n"
"[/codeblock]"
msgstr ""
+"Crée et ajoute un [CallbackTweener]. Cette méthode peut être utilisée pour "
+"appeler une méthode arbitraire sur n'importe quel objet. Utilisez "
+"[code]binds[/code] pour passer des arguments additionnels lors de l'appel.\n"
+"Exemple : un objet qui tire toujours les secondes.\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween().set_loops()\n"
+"tween.tween_callback(self, \"tirer\").set_delay(1)\n"
+"[/codeblock]\n"
+"Exemple : changer une texture en rouge et puis en bleu, avec un délai de 2 "
+"secondes.\n"
+"[codeblock]\n"
+"var tween = get_tree().create_tween()\n"
+"tween.tween_callback($Sprite, \"set_modulate\", [Color.red]).set_delay(2)\n"
+"tween.tween_callback($Sprite, \"set_modulate\", [Color.blue]).set_delay(2)\n"
+"[/codeblock]"
#: doc/classes/SceneTreeTween.xml
msgid ""
@@ -58832,6 +60056,28 @@ msgid ""
"tween.tween_interval(2)\n"
"[/codeblock]"
msgstr ""
+"Crée et ajoute un [IntervalTweener]. Cette méthode peut être utilisée pour "
+"créer des délais lors des interpolations, ou comme une alternative pour les "
+"délais des autres [Tweener] ou quand il n'y a pas d'animation (dans ce cas "
+"le [SceneTreeTween] se comportement comme un minuteur). [code]time[/code] "
+"est le durée du délai, en secondes.\n"
+"Exemple : créer un délai de 2s dans l'exécution du code.\n"
+"[codeblock]\n"
+"# ... du code\n"
+"yield(create_tween().tween_interval(2), \"finished\")\n"
+"# ... encore du code\n"
+"[/codeblock]\n"
+"Exemple : créer un objet qui se déplace d'avant en arrière et saute toutes "
+"les quelques secondes.\n"
+"[codeblock]\n"
+"var tween = create_tween().set_loops()\n"
+"tween.tween_property($Sprite, \"position:x\", 200.0, 1).as_relative()\n"
+"tween.tween_callback(self, \"sauter\")\n"
+"tween.tween_interval(2)\n"
+"tween.tween_property($Sprite, \"position:x\", -200.0, 1).as_relative()\n"
+"tween.tween_callback(self, \"sauter\")\n"
+"tween.tween_interval(2)\n"
+"[/codeblock]"
#: doc/classes/SceneTreeTween.xml
msgid ""
@@ -58861,6 +60107,32 @@ msgid ""
" $Label.text = \"Counting \" + str(value)\n"
"[/codeblock]"
msgstr ""
+"Crée et ajoute une [MethodTweener]. Cette méthode est similaire à une "
+"combinaison de [method tween_callback] et [method tween_property]. Elle "
+"appelle une méthode en permanence lors de l'interpolation avec la valeur à "
+"interpoler en argument. La valeur sera interpolée de [code]from[/code] à "
+"[code]to[/code] pendant [code]duration[/code] secondes. Utilisez "
+"[code]binds[/code] pour passer des arguments supplémentaire pour l'appel. "
+"Vous pouvez passer [method MethodTweener.set_ease] et [method MethodTweener."
+"set_trans] pour ajuster la courbe l'interpolation de la valeur ou [method "
+"MethodTweener.set_delay] pour la retarder.\n"
+"Exemple : faire regarder un objet 3D d'un point vers un autre.\n"
+"[codeblock]\n"
+"var tween = create_tween()\n"
+"tween.tween_method(self, \"look_at\", Vector3(-1, 0, -1), Vector3(1, 0, -1), "
+"1, [Vector3.UP]) # La méthode \"look_at()\" prend le vecteur haut en second "
+"argument, qui est dans le tableau du dernier argument.\n"
+"[/codeblock]\n"
+"Exemple : définir le texte d'un [Label], en utilisant une méthode "
+"intermédiaire et après un délai.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" var tween = create_tween()\n"
+" tween.tween_method(self, \"set_label_text\", 0, 10, 1).set_delay(1)\n"
+"\n"
+"func set_label_text(value: int):\n"
+" $Label.text = \"J'en suis à \" + str(value)\n"
+"[/codeblock]"
#: doc/classes/SceneTreeTween.xml
msgid ""
@@ -58957,7 +60229,7 @@ msgstr ""
#: doc/classes/SceneTreeTween.xml
msgid "If [SceneTree] is paused, the [SceneTreeTween] will also pause."
-msgstr ""
+msgstr "Si le [SceneTree] est en pause, le [SceneTreeTween] le sera aussi."
#: doc/classes/SceneTreeTween.xml
#, fuzzy
@@ -62975,6 +64247,19 @@ msgid ""
"print(\"\".get_extension()) # \"\" (empty string)\n"
"[/codeblock]"
msgstr ""
+"Retourne l'extension sans le point ([code].[/code]) final si le chaine de "
+"caractères est un nom ou un chemin de fichier valide. Si la chaine ne "
+"contient pas d'extension, une chaine vide est retournée.\n"
+"[codeblock]\n"
+"print(\"/chemin/vers/fichier.txt\".get_extension()) # \"txt\"\n"
+"print(\"fichier.txt\".get_extension()) # \"txt\"\n"
+"print(\"fichier.test.txt\".get_extension()) # \"txt\"\n"
+"print(\".txt\".get_extension()) # \"txt\"\n"
+"print(\"fichier.txt.\".get_extension()) # \"\" (chaine vide)\n"
+"print(\"fichier.txt..\".get_extension()) # \"\" (chaine vide)\n"
+"print(\"txt\".get_extension()) # \"\" (chaine vide)\n"
+"print(\"\".get_extension()) # \"\" (chaine vide)\n"
+"[/codeblock]"
#: doc/classes/String.xml
msgid "If the string is a valid file path, returns the filename."
@@ -63029,6 +64314,12 @@ msgid ""
"http_escape())\n"
"[/codeblock]"
msgstr ""
+"Échappe (code) une chaine de caractères dans un format compatible avec les "
+"URL. Est aussi référé au 'codage de URL' ('URL encode').\n"
+"[codeblock]\n"
+"print(\"https://example.org/?escaped=\" + \"Le Moteur Godot:'docs'\"."
+"http_escape())\n"
+"[/codeblock]"
#: doc/classes/String.xml
msgid ""
@@ -63374,6 +64665,22 @@ msgid ""
"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
+"Découpe une chaine de caractères par la chaine [code]delimiter[/code] et "
+"retourne un tableau avec ces sous-chaines, en partant de la droite.\n"
+"Les découpages retournés dans le tableau sont dans le même ordre que la "
+"chaine de caractères originale, de gauche à droite.\n"
+"Si [code]maxsplit[/code] est spécifié, il définit le nombre maximum de "
+"découpages à faire à partir de la droite jusqu'à [code]maxsplit[/code]. La "
+"valeur par défaut 0 signifie que tous les découpages seront faits, donnant "
+"donc le même résultat que [method split].\n"
+"Exemple :\n"
+"[codeblock]\n"
+"var some_string = \"Un,Deux,Trois,Quatre\"\n"
+"var some_array = some_string.rsplit(\",\", true, 1)\n"
+"print(some_array.size()) # Affiche 2\n"
+"print(some_array[0]) # Affiche \"Un,Deux,Trois\"\n"
+"print(some_array[1]) # Affiche \"Quatre\"\n"
+"[/codeblock]"
#: doc/classes/String.xml
msgid ""
@@ -63457,6 +64764,25 @@ msgid ""
"If you need to split strings with more complex rules, use the [RegEx] class "
"instead."
msgstr ""
+"Découpe une chaine de caractères par [code]delimiter[/code] et retourne un "
+"tableau avec tous les éléments contenu entre ce délimiteur. Le "
+"[code]delimiter[/code] peut être de n'importe quelle longueur.\n"
+"Si la valeur maximale [code]maxsplit[/code] est spécifiée, seuls les "
+"éléments à partir de la gauche jusqu'à [code]maxsplit[/code] éléments seront "
+"retournés. La valeur par défaut [code]0[/code] retournera tous les "
+"éléments.\n"
+"Si vous n'avez besoin que d'un seul élément dans le tableau, la méthode "
+"[method get_slice] est bien plus performante.\n"
+"Exemple :\n"
+"[codeblock]\n"
+"var some_string = \"Un,Deux,Trois,Quatre\"\n"
+"var some_array = some_string.split(\",\", true, 1)\n"
+"print(some_array.size()) # Affiche 2\n"
+"print(some_array[0]) # Affiche \"Un\"\n"
+"print(some_array[1]) # Affiche \"Deux,Trois,Quatre\"\n"
+"[/codeblock]\n"
+"Si vous souhaitez découper une chaine à partir de règles plus complexes, "
+"utilisez plutôt la classe [RegEx]."
#: doc/classes/String.xml
msgid ""
@@ -65241,6 +66567,18 @@ msgid ""
" var res_column = result[TextEdit.SEARCH_RESULT_COLUMN]\n"
"[/codeblock]"
msgstr ""
+"Lance une recherche à l'intérieur du texte. Les drapeaux de recherches "
+"peuvent être spécifiés avec l'énumération [enum SearchFlags].\n"
+"Retourne un [code]PoolIntArray[/code] vide si aucun résultat n'a été trouvé. "
+"Sinon, la ligne et la colonne du résultat peuvent être accédées via les "
+"indices définis dans l'énumération [enum SearchResult], par exemple :\n"
+"[codeblock]\n"
+"var result = search(key, flags, line, column)\n"
+"if result.size() > 0:\n"
+" # Résultat trouvé.\n"
+" var res_line = result[TextEdit.SEARCH_RESULT_LINE]\n"
+" var res_column = result[TextEdit.SEARCH_RESULT_COLUMN]\n"
+"[/codeblock]"
#: doc/classes/TextEdit.xml
msgid ""
@@ -65768,6 +67106,11 @@ msgid ""
"backend. In GLES2, their data can be accessed via scripting, but there is no "
"way to render them in a hardware-accelerated manner."
msgstr ""
+"Une Texture3D est une [Texture] en 3 dimensions qui a une largeur, une "
+"hauteur, et une profondeur. Voir aussi [TextureArray].\n"
+"[b]Note :[/b] Les [TextureArray] ne peuvent être projetés que pour shaders "
+"avec GLES3. Pour GLES2, leur données peuvent être accédées dans les scripts, "
+"mais il n'y a aucun moyen de les afficher directement via la carte graphique."
#: doc/classes/Texture3D.xml
msgid ""
@@ -65776,6 +67119,10 @@ msgid ""
"code] options. See [enum TextureLayered.Flags] enumerator for [code]flags[/"
"code] options."
msgstr ""
+"Créé une Texture3D avec la largeur [code]width[/code], la hauteur "
+"[code]height[/code], et la profondeur [code]depth[/code]. Voir [enum Image."
+"Format] pour les options de [code]format[/code]. Voir l'énumération [enum "
+"TextureLayered.Flags] pour les options de [code]flags[/code]."
#: doc/classes/TextureArray.xml
msgid "Array of textures stored in a single primitive."
@@ -65819,6 +67166,44 @@ msgid ""
"backend. In GLES2, their data can be accessed via scripting, but there is no "
"way to render them in a hardware-accelerated manner."
msgstr ""
+"Les [TextureArray] stockent un tableau de plusieurs [Image] dans une seule "
+"[Texture] de base. Chaque claque de ce tableau de textures génère ses "
+"propres mipmaps. C'est une bonne alternative pour les atlas de textures. "
+"Voir aussi [Texture3D].\n"
+"Les [TextureArray] doivent être affichés avec des shaders. Après "
+"l'importation de vos fichiers en [TextureArray] et avoir défini les Zones "
+"Horizontales et Verticales appropriées, vous pouvez l'afficher en "
+"définissant un uniform dans le shader, par exemple (en 2D):\n"
+"[codeblock]\n"
+"shader_type canvas_item;\n"
+"\n"
+"uniform sampler2DArray tex;\n"
+"uniform int index;\n"
+"\n"
+"void fragment() {\n"
+" COLOR = texture(tex, vec3(UV.x, UV.y, float(index)));\n"
+"}\n"
+"[/codeblock]\n"
+"Définissez l'entier de l'uniform \"index\" pour afficher une partie "
+"spécifique de la texture comme défini dans Zones Horizontales et Verticales "
+"dans l'importateur.\n"
+"[b]Note :[/b] Lors de la projection d'une texture albedo depuis un tableau "
+"de textures en 3D, l'indice de conversion sRGB vers l'espace linéaire "
+"([code]hint_albedo[/code]) devrait être utilisé pour éviter les couleurs "
+"d'être ternes :\n"
+"[codeblock]\n"
+"shader_type spatial;\n"
+"\n"
+"uniform sampler2DArray tex : hint_albedo;\n"
+"uniform int index;\n"
+"\n"
+"void fragment() {\n"
+" ALBEDO = texture(tex, vec3(UV.x, UV.y, float(index)));\n"
+"}\n"
+"[/codeblock]\n"
+"[b]Note :[/b] Les [TextureArray] ne peuvent être projetés que pour shaders "
+"avec GLES3. Pour GLES2, leur données peuvent être accédées dans les scripts, "
+"mais il n'y a aucun moyen de les afficher directement via la carte graphique."
#: doc/classes/TextureArray.xml
msgid ""
@@ -65827,11 +67212,17 @@ msgid ""
"code] options. See [enum TextureLayered.Flags] enumerator for [code]flags[/"
"code] options."
msgstr ""
+"Créé une TextureArray avec la largeur [code]width[/code], la hauteur "
+"[code]height[/code], et la profondeur [code]depth[/code]. Voir [enum Image."
+"Format] pour les options de [code]format[/code]. Voir l'énumération [enum "
+"TextureLayered.Flags] pour les options de [code]flags[/code]."
#: doc/classes/TextureButton.xml
msgid ""
"Texture-based button. Supports Pressed, Hover, Disabled and Focused states."
msgstr ""
+"Un bouton affiché avec une Texture. Supporte les états appuyé, survolé, "
+"désactivé, et avec le focus."
#: doc/classes/TextureButton.xml
msgid ""
@@ -65843,6 +67234,14 @@ msgid ""
"See also [BaseButton] which contains common properties and methods "
"associated with this node."
msgstr ""
+"Le [TextureButton] a les même fonctionnalités qu'un [Button], seulement "
+"qu'il utilise une images plutôt qu'une ressource [Theme]. Il est plus rapide "
+"à créer, mais ne supporte pas la localisation comme certains [Control] plus "
+"complexes.\n"
+"L'état \"normal\" doit contenir une texture ([member texture_normal]) ; les "
+"textures des autres états sont facultatives.\n"
+"Voir aussi [BaseButton] qui contient les propriétés et méthodes communes à "
+"tous les types de bouton."
#: doc/classes/TextureButton.xml
msgid ""
@@ -67622,6 +69021,13 @@ msgid ""
"If [code]use_space[/code] is true, use a space instead of the letter T in "
"the middle."
msgstr ""
+"Retourne la date et l'heure actuelle au format ISO 8601 (AAAA-MM-JJ'T'HH:MM:"
+"SS).\n"
+"Les valeurs retournées sont dans la zone horaire locale du système quand "
+"[code]utc[/code] est false, sinon elles sont dans la zone horaire UTC "
+"(méridien de Greenwich).\n"
+"Si [code]use_space[/code] est true, un espace est utilisé plutôt que le "
+"caractère 'T' au milieu."
#: doc/classes/Time.xml
msgid ""
@@ -68427,6 +69833,8 @@ msgid ""
"Returns a locale's language and its variant (e.g. [code]\"en_US\"[/code] "
"would return [code]\"English (United States)\"[/code])."
msgstr ""
+"Retourne la langue de la locale et sa variation (ex. [code]\"fr_FR\"[/code] "
+"retournera [code]\"Français (France)\"[/code])."
#: doc/classes/TranslationServer.xml
msgid "Removes the given translation from the server."
@@ -68473,6 +69881,28 @@ msgid ""
"through [method get_root]. You can use [method Object.free] on a [TreeItem] "
"to remove it from the [Tree]."
msgstr ""
+"Ça affiche une arborescence d'éléments qui peuvent être sélectionnés, "
+"développés ou réduits. Cette arborescence peut avoir plusieurs colonnes avec "
+"des contrôles personnalisés comme des champs de texte, des boutons ou des "
+"menus. C'est utile pour afficher des structures avec des interactions.\n"
+"Les arborescence sont construites par le code, en utilisant des objets "
+"[TreeItem] pour créer la structure. Ces objets ont une seule racine mais "
+"plusieurs racines peuvent être utilisées si une racine factice (masquée) est "
+"ajoutée.\n"
+"[codeblock]\n"
+"func _ready():\n"
+" var tree = Tree.new()\n"
+" var root = tree.create_item()\n"
+" tree.set_hide_root(true)\n"
+" var child1 = tree.create_item(root)\n"
+" var child2 = tree.create_item(root)\n"
+" var subchild1 = tree.create_item(child1)\n"
+" subchild1.set_text(0, \"Subchild1\")\n"
+"[/codeblock]\n"
+"Pour itérer à travers les objets [TreeItem] dans un [Tree], utilisez [method "
+"TreeItem.get_next] et [method TreeItem.get_children] après avoir obtenu la "
+"racine avec [method get_root]. Vous pouvez utiliser [method Object.free] sur "
+"un [TreeItem] pour le supprimer de son [Tree]."
#: doc/classes/Tree.xml
msgid "Clears the tree. This removes all items."
@@ -69562,7 +70992,7 @@ msgstr "Arrête l'animation et retire tous les tweens."
msgid ""
"Resets a tween to its initial value (the one given, not the one before the "
"tween), given its object and property/method pair. By default, all tweens "
-"are removed, unless [code]key[/code] is specified."
+"are reset, unless [code]key[/code] is specified."
msgstr ""
#: doc/classes/Tween.xml
@@ -69777,9 +71207,8 @@ msgid ""
msgstr ""
#: doc/classes/Tweener.xml
-#, fuzzy
msgid "Emitted when the [Tweener] has just finished its job."
-msgstr "Émis quand le nœud entre dans l'arborescence."
+msgstr "Émis quand le [Tweener] a terminé son interpolation."
#: doc/classes/UDPServer.xml
msgid "Helper class to implement a UDP server."
@@ -69994,6 +71423,44 @@ msgid ""
"and [method add_undo_method] out; the same goes for properties. You can also "
"register more than one method/property."
msgstr ""
+"Une aide pour gérer les opération annuler/refaire dans l'éditeur ou les "
+"outils personnalisés. Cela fonctionne en enregistrant des modifications de "
+"méthode et de propriété à l'intérieur \"d'actions\".\n"
+"Le comportement classique est de créer une action, puis d'ajouter les appels "
+"do/undo pour les modifications des fonctions et propriétés, puis d'appliquer "
+"l'action (avec [method commit_action]).\n"
+"Voici un exemple sur comment ajouter une action dans le [UndoRedo] de "
+"l'éditeur de Godot, depuis un greffon :\n"
+"[codeblock]\n"
+"# Une classe qui hérite de EditorPlugin\n"
+"\n"
+"var undo_redo = get_undo_redo() # Une méthode de EditorPlugin.\n"
+"\n"
+"func do_something():\n"
+" pass # Placer du code ici qui va faire quelque chose.\n"
+"\n"
+"func undo_something():\n"
+" pass # Placer du code ici qui annule ce que \"do_something()\" a déjà "
+"fait.\n"
+"\n"
+"func _on_MyButton_pressed():\n"
+" var node = get_node(\"MyNode2D\")\n"
+" undo_redo.create_action(\"Déplacer le nœud\")\n"
+" undo_redo.add_do_method(self, \"do_something\")\n"
+" undo_redo.add_undo_method(self, \"undo_something\") # Appelé quand "
+"annulé (Ctrl+Z pressé)\n"
+" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n"
+" undo_redo.add_undo_property(node, \"position\", node.position) # Changé "
+"quand annulé (Ctrl+Z pressé)\n"
+" undo_redo.commit_action()\n"
+"[/codeblock]\n"
+"Les méthodes [method create_action], [method add_do_method], [method "
+"add_undo_method], [method add_do_property], [method add_undo_property], et "
+"[method commit_action] doivent être appelés une après l'autre, comme dans "
+"cet exemple. Ne pas le faire ainsi peut provoquer des plantages.\n"
+"Si vous n'avez pas besoin d'enregistrer une méthode, vous pouvez ignorer "
+"[method add_do_method] et [method add_undo_method] ; et faire de même avec "
+"les propriétés. Vous pouvez aussi enregistrer plus d'une méthode/propriété."
#: doc/classes/UndoRedo.xml
msgid "Register a method that will be called when the action is committed."
@@ -70012,7 +71479,7 @@ msgstr ""
#: doc/classes/UndoRedo.xml
msgid "Register a method that will be called when the action is undone."
-msgstr ""
+msgstr "Enregistre une méthode qui sera appelée pour \"refaire\"."
#: doc/classes/UndoRedo.xml
msgid "Register a property value change for \"undo\"."
@@ -75707,10 +77174,13 @@ msgid "Returns the value of a certain material's parameter."
msgstr "Retourne la valeur du paramètre du matériau."
#: doc/classes/VisualServer.xml
+#, fuzzy
msgid ""
-"Returns the default value for the param if available. Otherwise returns an "
-"empty [Variant]."
+"Returns the default value for the param if available. Returns [code]null[/"
+"code] otherwise."
msgstr ""
+"Retourne la valeur par défaut du paramètre nommé [code]name[/code] du "
+"matériau."
#: doc/classes/VisualServer.xml
msgid ""
@@ -76627,6 +78097,28 @@ msgid ""
" $TextureRect.texture = proxy_texture\n"
"[/codeblock]"
msgstr ""
+"Crée un lien de mise à jour entre deux textures, pareil aux "
+"[ViewportTexture]. Quand la texture de base est une texture d'un [Viewport], "
+"chaque fois que cette fenêtre d'affichage fait un nouveau rendu, la texture "
+"de proxy sera automatiquement mise à jour.\n"
+"Par exemple, ce code crée un lien d'une [ImageTexture] générique vers la "
+"texture de rendu d'un [Viewport] en utilisant l'API du VisualServer :\n"
+"[codeblock]\n"
+"func _ready():\n"
+" var viewport_rid = get_viewport().get_viewport_rid()\n"
+" var viewport_texture_rid = VisualServer."
+"viewport_get_texture(viewport_rid)\n"
+"\n"
+" var proxy_texture = ImageTexture.new()\n"
+" var viewport_texture_image_data = VisualServer."
+"texture_get_data(viewport_texture_rid)\n"
+"\n"
+" proxy_texture.create_from_image(viewport_texture_image_data)\n"
+" var proxy_texture_rid = proxy_texture.get_rid()\n"
+" VisualServer.texture_set_proxy(proxy_texture_rid, viewport_texture_rid)\n"
+"\n"
+" $TextureRect.texture = proxy_texture\n"
+"[/codeblock]"
#: doc/classes/VisualServer.xml
msgid ""
@@ -76672,6 +78164,25 @@ msgid ""
"manually. For a further optimization see, [method "
"viewport_set_render_direct_to_screen]."
msgstr ""
+"Copie la fenêtre d'affichage dans une région de l'écran spécifiée par "
+"[code]rect[/code]. Si [member Viewport.render_direct_to_screen] est "
+"[code]true[/code], la fenêtre d'affichage n'utilise pas de framebuffer et "
+"son contenu est directement rendu à l'écran. Par contre, il est à noter que "
+"la fenêtre d'affichage racine est affichée en dernier, elle est donc "
+"affichée par dessus l'écran. Il est donc nécessaire de ne pas définir la "
+"fenêtre d'affichage sur une surface qui ne couvre pas la surface où la "
+"fenêtre d'affichage est attachée.\n"
+"Par exemple, vous pouvez définir la fenêtre d'affichage racine de ne pas "
+"faire de rendu du tout avec le code suivant :\n"
+"[codeblock]\n"
+"func _ready():\n"
+" get_viewport().set_attach_to_screen_rect(Rect2())\n"
+" $Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))\n"
+"[/codeblock]\n"
+"Utiliser cette méthode peut permettre d'améliorer considérablement les "
+"performances, surtout sur les appareils peut puissants. Par contre, cela "
+"nécessite de gérer manuellement les fenêtres d'affichage. Pour plus "
+"d'optimisations, voir [method viewport_set_render_direct_to_screen]."
#: doc/classes/VisualServer.xml
msgid ""
@@ -80687,6 +82198,9 @@ msgid ""
"[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level "
"multiplayer peer."
msgstr ""
+"Émis quand un nouveau message est reçu.\n"
+"[b]Note :[/b] Ce signal [i]n'est pas[/i] émis quand utilisé par un pair "
+"multijoueur de haut-niveau."
#: modules/webxr/doc_classes/WebXRInterface.xml
msgid "AR/VR interface using WebXR."
@@ -80851,6 +82365,12 @@ msgid ""
"[url=https://developer.mozilla.org/en-US/docs/Web/API/XRInputSource/"
"targetRayMode]XRInputSource.targetRayMode[/url] for more information."
msgstr ""
+"Retourne le mode du rayon de la cible pour le [code]controller_id[/code] "
+"spécifié.\n"
+"Cela peut aider à interpréter les entrées provenant de ce contrôleur. Voir "
+"[url=https://developer.mozilla.org/en-US/docs/Web/API/XRInputSource/"
+"targetRayMode]XRInputSource.targetRayMode[/url] (en anglais) pour plus "
+"d'informations."
#: modules/webxr/doc_classes/WebXRInterface.xml
msgid ""
@@ -81227,8 +82747,7 @@ msgid ""
"They can be used as the server certificate in [method StreamPeerSSL."
"accept_stream] (along with the proper [CryptoKey]), and to specify the only "
"certificate that should be accepted when connecting to an SSL server via "
-"[method StreamPeerSSL.connect_to_stream].\n"
-"[b]Note:[/b] Not available in HTML5 exports."
+"[method StreamPeerSSL.connect_to_stream]."
msgstr ""
#: doc/classes/X509Certificate.xml
@@ -81284,12 +82803,16 @@ msgid ""
"Gets the value of a certain attribute of the current element by name. This "
"will raise an error if the element has no such attribute."
msgstr ""
+"Retourne la valeur d'un certain attribut de l'élément actuel par son nom. "
+"Une erreur sera lancée si l'attribut n'existe pas."
#: doc/classes/XMLParser.xml
msgid ""
"Gets the value of a certain attribute of the current element by name. This "
"will return an empty [String] if the attribute is not found."
msgstr ""
+"Retourne la valeur d'un certain attribut de l'élément actuel par son nom. "
+"Une [String] vide sera retournée si l'attribut n'existe pas."
#: doc/classes/XMLParser.xml
msgid ""
@@ -81303,17 +82826,24 @@ msgid ""
"current node type is neither [constant NODE_ELEMENT] nor [constant "
"NODE_ELEMENT_END]."
msgstr ""
+"Retourne le nom du nœud de l'élément actuel. Une erreur sera lancée si le "
+"type de nœud actuel n'est ni [constant NODE_ELEMENT] ni [constant "
+"NODE_ELEMENT_END]."
#: doc/classes/XMLParser.xml
msgid ""
"Gets the byte offset of the current node since the beginning of the file or "
"buffer."
msgstr ""
+"Retourne le décalage en octet de l'actuel nœud depuis le début du fichier ou "
+"de la mémoire tampon."
#: doc/classes/XMLParser.xml
msgid ""
"Gets the type of the current node. Compare with [enum NodeType] constants."
msgstr ""
+"Retourne le type du nœud actuel. Comparer avec les constantes [enum "
+"NodeType]."
#: doc/classes/XMLParser.xml
msgid "Check whether the current element has a certain attribute."