# Translation of R-splines.pot to French
# Copyright (C) 2005 The R Foundation
# This file is distributed under the same license as the splines 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: 2018-03-29 07:06\n"
"PO-Revision-Date: 2021-02-10 17:51+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"

msgid "must have at least 'ord' knots"
msgstr "il faut au moins 'ord' noeuds"

msgid "length of 'derivs' is larger than length of 'x'"
msgstr "la longueur de 'derivs' est plus grande que la longueur de 'x'"

msgid "empty 'derivs'"
msgstr "'derivs' vide"

msgid "'ord' must be positive integer, at most the number of knots"
msgstr "'ord' doit être un entier positif, au nombre de noeuds au mieux"

msgid "need at least %s (=%d) knots"
msgstr "il faut au moins %s (=%d) noeuds"

msgid "the 'x' data must be in the range %g to %g unless you set '%s'"
msgstr "les données 'x' doivent être dans la plage %g to %g à moins de spécifier '%s'"

msgid "%s needs package 'Matrix' correctly installed"
msgstr "%s a besoin du package 'Matrix' installé correctement"

msgid "values of 'x' must be distinct"
msgstr "les valeurs de 'x' doivent être distinctes"

msgid "must have at least 'ord'=%d points"
msgstr "il faut au moins 'ord'=%d points"

msgid "'formula' must be of the form \"y ~ x\""
msgstr "'formula' doit être de la forme \"y ~ x \""

msgid "lengths of 'x' and 'y' must match"
msgstr "les longueurs de 'x' et 'y' doivent correspondre"

msgid "values of 'x' must be strictly increasing"
msgstr "les valeurs de 'x' doivent être strictement croissantes"

msgid "'ord' must be >= 2"
msgstr "'ord' doit être >= 2"

msgid "the range of 'x' values exceeds one period"
msgstr "la plage de 'x' est plus large qu'une période"

msgid "knot positions must be non-decreasing"
msgstr "les positions des noeuds ne peut être décroissante"

msgid "lengths of 'x' and 'y' must be the same"
msgstr "les longueurs de 'x' et 'y' doivent être les mêmes"

msgid "'deriv' must be between 0 and %d"
msgstr "'deriv' doit être compris entre 0 et %d"

msgid "knot positions must be strictly increasing"
msgstr "les positions des noeuds doivent être strictement croissantes"

msgid "currently implemented only for cubic splines"
msgstr "implémenté uniquement pour les salines cubiques pour l’instant"

msgid "spline must be monotone"
msgstr "la courbe spline doit être monotone"

msgid "'degree' must be integer >= 1"
msgstr "'degree' doit être un entier >= 1"

msgid "'df' was too small; have used %d"
msgstr "'df' était trop petit ; nous avons utilisé %d"

msgid "some 'x' values beyond boundary knots may cause ill-conditioned bases"
msgstr "quelques valeurs de 'x' au delà des limites de noeuds peut causer des bases mal conditionnées"
