# 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: utils 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"

#: io.c:329 io.c:333 io.c:343 io.c:574 io.c:774 io.c:827 io.c:840 io.c:844
#: io.c:850 io.c:851 io.c:1097 io.c:1098 io.c:1100 io.c:1101 io.c:1102
#: io.c:1103 io.c:1104 io.c:1105 stubs.c:47 stubs.c:67 windows/dialogs.c:169
#: windows/dialogs.c:194 windows/dialogs.c:197 windows/dialogs.c:241
#: windows/dialogs.c:278 windows/dialogs.c:289 windows/dialogs.c:313
#: windows/dialogs.c:321 windows/util.c:117 windows/widgets.c:78
#: windows/widgets.c:81 windows/widgets.c:86
#, c-format
msgid "invalid '%s' argument"
msgstr "argomento '%s' non valido"

#: io.c:352 io.c:837
msgid "invalid quote symbol set"
msgstr "simbolo di citazione non valido"

#: io.c:364 io.c:860 io.c:1085
msgid "cannot open the connection"
msgstr "non è possibile aprire la connessione"

#: io.c:367 io.c:371
msgid "cannot read from this connection"
msgstr "non posso leggere da questa connessione"

#: io.c:418 io.c:436
#, c-format
msgid "quoted string on line %d terminated by EOF"
msgstr "la stringa tra apici alla linea %d termina con EOF"

#: io.c:570
msgid "the first argument must be of mode character"
msgstr "il primo argomento dev'essere in modalità caratteri"

#: io.c:600
#, c-format
msgid "invalid 'numerals' string: \"%s\""
msgstr "stringa 'numerals' non valida: \"%s\""

#: io.c:776
#, c-format
msgid "Selection: "
msgstr "Selezione: "

#: io.c:870 io.c:886
msgid "cannot allocate buffer in 'readTableHead'"
msgstr "non posso allocare il buffer in 'readTableHead'"

#: io.c:900
msgid "\\ followed by EOF"
msgstr "\\ seguito da EOF"

#: io.c:953 io.c:958
#, c-format
msgid "incomplete final line found by readTableHeader on '%s'"
msgstr "trovata linea finale incompleta da readTableHeader su '%s'"

#: io.c:1016
msgid "index out of range"
msgstr "indice fuori campo di variazione"

#: io.c:1053
#, c-format
msgid "Problem closing connection:  %s"
msgstr "Problema riscontrato durante la chiusura della connessione: %s"

#: io.c:1055
msgid "Problem closing connection"
msgstr "Problema riscontrato durante la chiusura della connessione"

#: io.c:1078
msgid "'file' is not a connection"
msgstr "'file' non è una connessione"

#: io.c:1081
msgid "cannot write to this connection"
msgstr "non è possibile scrivere su questa connessione"

#: io.c:1111
msgid "'dec' must be a single character"
msgstr "'dec' dev'essere un singolo carattere"

#: io.c:1137
#, c-format
msgid "corrupt data frame -- length of column %d does not not match nrows"
msgstr "data frame corrotto -- la lunghezza della colonna %d non corrisponde con nrows"

#: io.c:1168
#, c-format
msgid "column %s claims to be a factor but does not have numeric codes"
msgstr "la colonna %s si presenta come un factor ma non ha codici numerici"

#: io.c:1186
msgid "corrupt matrix -- dims not not match length"
msgstr "matrice corrotta -- le dimensioni non corrispondono con la lunghezza"

#: stubs.c:56
msgid "'savehistory' can only be used in Rgui and Rterm"
msgstr "'savehistory' può essere utilizzata in Rgui e Rterm"

#: stubs.c:73
msgid "'loadhistory' can only be used in Rgui and Rterm"
msgstr "'loadhistory' può essere utilizzata in Rgui e Rterm"

#: stubs.c:85
msgid "invalid timestamp"
msgstr "timestamp non valido"

#: stubs.c:151 stubs.c:159
msgid "X11 dataentry cannot be loaded"
msgstr "La dataentry X11 non può essere caricata"

#: stubs.c:155 stubs.c:184 stubs.c:190
msgid "X11 is not available"
msgstr "X11 non è disponibile"

#: stubs.c:248 stubs.c:251
#, c-format
msgid "invalid '%s' specification"
msgstr "specificazione '%s' non valida"

#: utils.c:85
msgid "'hostname' must be a character vector of length 1"
msgstr "'hostname' dev'essere un vettore di caratteri di lunghezza 1"

#: utils.c:91
#, c-format
msgid "nsl() was unable to resolve host '%s'"
msgstr "nls() non è stato in grado di risolvere il nome host '%s'"

#: utils.c:98
msgid "unknown format returned by 'gethostbyname'"
msgstr "'gethostbyname' ha restituito un formato sconosciuto"

#: utils.c:107
msgid "nsl() is not supported on this platform"
msgstr "nls() non è supportata su questa piattaforma"

#: windows/dialogs.c:181
msgid "unknown type"
msgstr "tipo sconosciuto"

#: windows/dialogs.c:213 windows/dialogs.c:237 windows/dialogs.c:275
#: windows/dialogs.c:310
msgid "menu functions can only be used in the GUI"
msgstr "le funzioni menu possono solo essere usate nella GUI"

#: windows/dialogs.c:245
#, c-format
msgid "unable to retrieve items for %s (%s)"
msgstr "non è possibile recuperare le voci per %s (%s)"

#: windows/dialogs.c:283
#, c-format
msgid "unable to add menu (%s)"
msgstr "non è possibile aggiungere il menu (%s)"

#: windows/dialogs.c:295
#, c-format
msgid "unable to add menu item (%s)"
msgstr "non è possibile aggiungere la voce di menu (%s)"

#: windows/dialogs.c:318
msgid "menu does not exist"
msgstr "il menu non esiste"

#: windows/dialogs.c:325
#, c-format
msgid "unable to delete menu item (%s)"
msgstr "non è possibile eliminare la voce di menu (%s)"

#: windows/registry.c:73 windows/registry.c:248 windows/registry.c:251
#: windows/registry.c:254
#, c-format
msgid "invalid '%s' value"
msgstr "valore '%s' non valido"

#: windows/registry.c:266
#, c-format
msgid "Registry key '%ls' not found"
msgstr "Chiave registro '%ls' non trovata"

#: windows/util.c:42
msgid "unsupported version of Windows"
msgstr "versione non supportata di Windows"

#: windows/util.c:281
msgid "argument must be a character vector or a raw vector"
msgstr "l'argomento dev'essere un vettore di caratteri o un vettore raw"

#: windows/util.c:318
msgid "unable to open the clipboard"
msgstr "non è possibile aprire gli appunti"

#: windows/util.c:323
msgid "unable to write to the clipboard"
msgstr "non è possibile scrivere negli appunti"

#: windows/util.c:402
msgid "'title' must be a character string"
msgstr "'title' dev'essere una stringa di caratteri"

#: windows/util.c:411
msgid "'text' must be a character string"
msgstr "'text' dev'essere una stringa di caratteri"

#: windows/util.c:450
#, c-format
msgid "'%s' must be length 1"
msgstr "'%s' dev'essere di lunghezza 1"

#: windows/util.c:563
#, c-format
msgid "'%s' must be a list"
msgstr "'%s' dev'essere una lista"

#: windows/util.c:567
#, c-format
msgid "'%s' element %d is not a window handle"
msgstr "'%s' elemento %d non è un gestore di finestra"

#: windows/widgets.c:108
msgid "Select one or more"
msgstr "Selezionane uno o più"

#: windows/widgets.c:108
msgid "Select one"
msgstr "Selezionane uno"

#: windows/widgets.c:182 windows/widgets.c:250
msgid "'default' must be a character string"
msgstr "'default' dev'essere una stringa di caratteri"

#: windows/widgets.c:184 windows/widgets.c:252
msgid "'default' is overlong"
msgstr "'default' è troppo lungo"

#: windows/widgets.c:188 windows/widgets.c:256
msgid "'caption' must be a character string"
msgstr "'caption' dev'essere una stringa di caratteri"

#: windows/widgets.c:190
msgid "'multi' must be a logical value"
msgstr "'multi' dev'essere una valore logico"

#: windows/widgets.c:192
msgid "'filterindex' must be an integer value"
msgstr "'filterindex' dev'essere un valore integer"
