# Translation of grid.pot to French
# Copyright (C) 2005 The R Foundation
# This file is distributed under the same license as the grid R package.
# Philippe Grosjean <phgrosjean@sciviews.org>, 2005.
#
msgid ""
msgstr ""
"Project-Id-Version: R 4.0.4\n"
"Report-Msgid-Bugs-To: bugs.r-project.org\n"
"POT-Creation-Date: 2021-11-06 17:17+0100\n"
"PO-Revision-Date: 2021-02-10 17:42+0100\n"
"Last-Translator: Philippe Grosjean <phgrosjean@sciviews.org>\n"
"Language-Team: French <R-core@r-project.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.4.2\n"

#: gpar.c:523
msgid "updateGContext must only be called after initGContext"
msgstr "updateGContext doit être appelé après initGContext"

#: grid.c:199
#, fuzzy
msgid "Turning clipping on or off within a (clipping) path is no honoured"
msgstr "Activer ou désactiver le découpage dans un chemin de découpage ('clipping path') n’est pas pris en compte"

#: grid.c:241
msgid "cannot clip to rotated viewport"
msgstr "impossible de couper une vue pivotée"

#: grid.c:455
#, fuzzy
msgid "Clipping paths within a (clipping) path are not honoured"
msgstr "Les chemins de découpage ('clipping path’) à l’intérieur d’un chemin de découpage ne sont pas pris en compte"

#: grid.c:474
#, fuzzy
msgid "Masks within a (clipping) path are not honoured"
msgstr "Le masquage à l’aide d’un chemin de découpage ('clipping path') n’est pas pris en compte"

#: grid.c:916 grid.c:921 grid.c:1040 grid.c:1045
msgid "cannot pop the top-level viewport ('grid' and 'graphics' output mixed?)"
msgstr "impossible de rendre la vue de plus haut niveau active (sorties 'grid' et 'graphics' mixées ?)"

#: grid.c:1246
msgid "attempt to plot on null device"
msgstr "tentative de dessin dans un périphérique 'null'"

#: grid.c:1702
msgid "there is no layout defined"
msgstr "aucune mise en page définie"

#: grid.c:1922
msgid "polygon edge not found (zero-width or zero-height?)"
msgstr "extrémité de polygone non trouvé (longueur ou largeur nulle?)"

#: grid.c:1931
msgid "polygon edge not found"
msgstr "extrémités de polygone non trouvés"

#: grid.c:2085
msgid "require at least two points to draw arrow"
msgstr "il faut au moins deux points pour tracer une flèche"

#: grid.c:2408
msgid "non-finite control point in Xspline"
msgstr "point de contrôle non fini dans Xspline"

#: grid.c:3333
msgid "non-finite x or y in graphics path"
msgstr "x ou y infinis dans le chemin graphique"

#: grid.c:3383
msgid "Empty raster"
msgstr "Graphique raster vide"

#: grid.c:3869
msgid "invalid plotting symbol"
msgstr "symboles graphiques incorrects"

#: grid.c:3963
msgid "unable to clip to rotated rectangle"
msgstr "impossible de couper au rectangle pivoté"

#: layout.c:600
msgid "invalid 'layout.pos.row'"
msgstr "'layout.pos.row' incorrect"

#: layout.c:604
msgid "invalid 'layout.pos.col'"
msgstr "'layout.pos.col' incorrect"

#: matrix.c:50
msgid "singular transformation matrix"
msgstr "matrice de transformation singulière"

#: state.c:192
msgid "unable to store 'grid' state.  Too many devices open?"
msgstr "impossible de conserver l'état de 'grid'. Trop de périphériques ouverts ?"

#: unit.c:65
msgid "Cannot create unit scalar from 0-length unit vector"
msgstr "Impossible de créer un scalaire unitaire à partir d’un vecteur d’unité de longueur nulle"

#: unit.c:799 unit.c:1298
msgid "invalid unit or unit not yet implemented"
msgstr "unité non autorisée ou pas encore implémentée"

#: unit.c:1355 unit.c:1386
msgid "Viewport has zero dimension(s)"
msgstr "Le zone active (Viewport) a des dimensions nulles"

#: unit.c:1418 unit.c:1433 unit.c:1448 unit.c:1463
msgid "Unsupported unit conversion"
msgstr "Conversion d'unités non supportée"

#: unit.c:1555
msgid "Invalid unit"
msgstr "Unité incorrecte"

#: unit.c:1570
msgid "'units' must be character"
msgstr "les unités dans 'units' doivent être une chaîne de caractères"

#: unit.c:1573
msgid "'units' must be of length > 0"
msgstr "Les unités dans 'units' doivent être de longueur > 0"

#: unit.c:1584
msgid "data must be either NULL, have length 1, or match the length of the final unit vector"
msgstr "les données doivent être NULL, avoir une longueur 1, ou être de la même longueur que la vecteur unité final"

#: unit.c:1596
msgid "no string supplied for 'strwidth/height' unit"
msgstr "pas de chaîne de caractères fournie pour l’unité 'strwidth/height'"

#: unit.c:1600
msgid "no 'grob' supplied for 'grobwidth/height' unit"
msgstr "pas de 'grob' fourni pour 'grobwidth/height'"

#: unit.c:1618
msgid "'gPath' must have depth 1 in 'grobwidth/height' units"
msgstr "'gPath' doit avoir une profondeur de 1 dans les unités 'grobwidth/height'"

#: unit.c:1623
msgid "non-NULL value supplied for plain unit"
msgstr "valeur non nulle fournie pour l’unité"

#: unit.c:1676 unit.c:1710 unit.c:1759
msgid "old version of unit class is no longer allowed"
msgstr "une vieille version de la classe unité n’est plus autorisée"

#: unit.c:1682
msgid "object is not coercible to a unit"
msgstr "l’object n’est pas convertible en une unité"

#: unit.c:1708
msgid "object is not a unit"
msgstr "l’object n’est pas une unité"

#: unit.c:1840
msgid "units can only be multiplied with numerics and integers"
msgstr "les unités ne peuvent être multipliées que par des nombres décimaux ou entiers"

#: viewport.c:56
msgid "Mask is not logical value ('none' or 'inherit')"
msgstr "Le masque n’est pas une valeur booléenne ('none' ou 'inherit’)"

#: viewport.c:330
msgid "non-finite location and/or size for viewport"
msgstr "position et / ou taille de vue non finies"

#~ msgid "unimplemented unit function"
#~ msgstr "fonction d'unité non implémentée"

#~ msgid "Invalid circle radius (must be non-negative)"
#~ msgstr "Rayon de cercle incorrect (doit être positif ou nul)"
