# R Italian translation
# Copyright (C) The R Foundation
# This file is distributed under the same license as the R package.
# Daniele Medri <dmedri@gmail.com>, 2005-2020.
#
msgid ""
msgstr ""
"Project-Id-Version: R-splines 3.6.3\n"
"Report-Msgid-Bugs-To: bugs.r-project.org\n"
"Last-Translator: Daniele Medri <dmedri@gmail.com>\n"
"Language-Team: Italian https://github.com/dmedri/R-italian-lang\n"
"Language: it\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.2.1\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"

msgid "must have at least 'ord' knots"
msgstr "bisogna avere almeno nodi 'ord'"

msgid "length of 'derivs' is larger than length of 'x'"
msgstr "la lunghezza di 'derivs' è più grande della lunghezza di 'x'"

msgid "empty 'derivs'"
msgstr "'derivs' vuoto"

msgid "'ord' must be positive integer, at most the number of knots"
msgstr "'ord' dev'essere un intero positivo, al massimo il numero dei nodi"

msgid "need at least %s (=%d) knots"
msgstr "richiesti almeno %s (=%d) nodi"

msgid "the 'x' data must be in the range %g to %g unless you set '%s'"
msgstr "i dati 'x' devono essere nell'intervallo %g a %g finché non imposti '%s'"

msgid "%s needs package 'Matrix' correctly installed"
msgstr "%s richiede il pacchetto 'Matrix' correttamente installato"

msgid "values of 'x' must be distinct"
msgstr "i valori di 'x' devono essere distinti"

msgid "must have at least 'ord'=%d points"
msgstr "devi avere almeno 'ord'=%d punti"

msgid "'formula' must be of the form \"y ~ x\""
msgstr "'formula' dev'essere nella forma \"y ~ x\""

msgid "lengths of 'x' and 'y' must match"
msgstr "le lunghezze di 'x' e 'y' devono corrispondere"

msgid "values of 'x' must be strictly increasing"
msgstr "i valori di 'x' devono essere strettamente crescenti"

msgid "'ord' must be >= 2"
msgstr "'ord' dev'essere >= 2"

msgid "the range of 'x' values exceeds one period"
msgstr "l'intervallo dei valori di 'x' eccede un periodo"

msgid "knot positions must be non-decreasing"
msgstr "le posizioni dei nodi devono essere non-decrescenti"

msgid "lengths of 'x' and 'y' must be the same"
msgstr "le lunghezze di 'x' e 'y' devono essere le medesime"

msgid "'deriv' must be between 0 and %d"
msgstr "'deriv' dev'essere tra 0 e %d"

msgid "knot positions must be strictly increasing"
msgstr "le posizioni dei nodi devono essere strettamente crescenti"

msgid "currently implemented only for cubic splines"
msgstr "attualmente implementate solo per splines cubiche"

msgid "spline must be monotone"
msgstr "spline dev'essere monotona"

msgid "'degree' must be integer >= 1"
msgstr "'degree' dev'essere un intero >= 1"

msgid "'df' was too small; have used %d"
msgstr "'df' era troppo piccolo; si è utilizzato %d"

msgid "some 'x' values beyond boundary knots may cause ill-conditioned bases"
msgstr "alcuni valori 'x' oltre i nodi di confine potrebbero causare basi mal condizionate"
