/*
 * Wine command prompt
 * Italian Language Support
 *
 * Copyright (C) 1999 D A Pickles
 * Copyright (C) 2009-2010 Luca Bennati
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "wcmd.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL

STRINGTABLE
{
  WCMD_ATTRIB, "Aiuto su ATTRIB\n"
  WCMD_CALL,
"CALL <nomedelfilebatch> si usa all'interno di un file batch per eseguire\n\
comandi da un altro file batch. Quando il file batch esiste, il controllo\n\
torna al file che l'ha chiamato. Il comando CALL può passare parametri alla\n\
procedura chiamata.\n\
\n\
Cambiamenti alla cartella predefinita, alle variabili d'ambiente etc fatti dentro una\n\
procedura chiamata sono ereditati dalla chiamante.\n"

  WCMD_CD,     "Aiuto su CD\n"
  WCMD_CHDIR,  "Aiuto su CHDIR\n"

  WCMD_CLS,    "CLS pulisce la schermata della console\n"

  WCMD_COPY,   "Aiuto su COPY\n"
  WCMD_CTTY,   "Aiuto su CTTY\n"
  WCMD_DATE,   "Aiuto su DATE\n"
  WCMD_DEL,    "Aiuto su DEL\n"
  WCMD_DIR,    "Aiuto su DIR\n"

  WCMD_ECHO,
"ECHO <string> mostra <string> sul dispositivo di terminale corrente.\n\
\n\
ECHO ON fa sì che tutti i comandi seguenti in un file batch siano mostrati\n\
sul dispositivo di terminale prima di essere eseguiti.\n\
\n\
ECHO OFF inverte l'effetto di un precedente ECHO ON (ECHO usa OFF per\n\
default). Si può evitare che il comando ECHO OFF sia mostrato\n\
precedendolo con un segno @.\n"

  WCMD_ERASE,  "Aiuto su ERASE\n"

  WCMD_FOR,
"Il comando FOR è usato per eseguire un comando per ciascuno di un set di files.\n\
\n\
Sintassi: FOR %variabile IN (set) DO comando\n\
\n\
La necessità di raddoppiare il segno % nell'uso di un FOR in un file batch non\n\
esiste nel cmd di wine.\n"

  WCMD_GOTO,
"Il comando GOTO trasferisce l'esecuzione ad un'altra istruzione dentro un\n\
file batch.\n\
\n\
L'etichetta di destinazione di un GOTO può essere lunga fino a 255 caratteri\n\
ma non può includere spazi (questo è differente da altri sistemi\n\
operativi). Se esistono due o più etichette identiche in un file batch, la\n\
prima sarà sempre eseguita. Tentare un GOTO verso un'etichetta\n\
inesistente termina l'esecuzione del file batch.\n\
\n\
GOTO non ha effetto quando usato in modalità interattiva.\n"

  WCMD_HELP,   "Aiuto su HELP\n"

  WCMD_IF,
"IF è usato per eseguire condizionalmente un comando.\n\
\n\
Sintassi:	IF [NOT] EXIST nomedelfile comando\n\
		IF [NOT] stringa1==stringa2 comando\n\
		IF [NOT] ERRORLEVEL numero comando\n\
\n\
Nella seconda forma del comando, stringa1 and stringa2 devono essere\n\
in doppi apici. Il confronto non è sensibile alle maiuscole.\n"

  WCMD_LABEL,  "LABEL è usato per creare un'etichetta del volume di un disco.\n\
\n\
Sintassi: LABEL [unità:]\n\
Il comando ti chiederà la nuova etichetta di volume per l'unità specificata.\n\
Puoi mostrare l'etichetta di volume del disco con il comando VOL.\n"

  WCMD_MD,     "Aiuto su MD\n"
  WCMD_MKDIR,  "Aiuto su MKDIR\n"
  WCMD_MOVE,
"MOVE sposta un file o una cartella in un punto diverso nel file system.\n\
\n\
Se l'oggetto che viene spostato è una cartella allora tutti i files e le sottocartelle\n\
dentro l'oggetto saranno spostate insieme.\n\
\n\
MOVE fallisce se la nuova e la vecchia locazione sono su lettere di unità DOS differenti.\n"

  WCMD_PATH,
"PATH mostra o cambia il percorso di ricerca di cmd.\n\
\n\
Usando PATH, verrà mostrato l'impostazione corrente di PATH (il cui valore è preso\n\
inizialmente dal registro). Per cambiarla, fai seguire al\n\
comando PATH il nuovo valore.\n\
\n\
È anche possibile modificare il PATH usando la variabile d'ambiente\n\
PATH, per esempio:\n\
		PATH %PATH%;c:\\temp\n"

  WCMD_PAUSE,
"PAUSE mostra un messaggio sullo schermo 'Premere Invio per continuare'\n\
e aspetta che l'utente prema Invio. È utile principalmente nei files\n\
batch per permettere all'utente di leggere l'output di un comando precedente\n\
prima che scorra fuori dallo schermo.\n"

  WCMD_PROMPT,
"PROMPT configura il prompt a linea di comando.\n\
\n\
La stringa che segue il comando PROMPT (e lo spazio immediatamente dopo)\n\
appariranno all'inizio della linea quando cmd sta aspettando l'input dell'utente.\n\
\n\
Le seguenti stringhe di caratteri hanno il loro significato speciale accanto:\n\
\n\
$$    Segno del dollaro		$_    Linefeed		$b    Segno della pipe (|)\n\
$d    Data attuale		$e    Escape		$g    Segno >\n\
$l    Segno <			$n    Unità attuale	$p    Percorso corrente\n\
$q    Segno uguale		$t    Ora attuale	$v    Versione di cmd\n\
\n\
Nota che inserire il comando PROMPT senza una stringa dopo resetta il\n\
prompt al default, che è la cartella corrente (che include la\n\
lettera dell'unità attuale) seguita da un segno maggiore (>).\n\
(come un comando PROMPT $p$g).\n\
\n\
Il prompt può essere cambiato anche alterando la variabile d'ambiente PROMPT,\n\
perciò il comando 'SET PROMPT=testo' ha lo stesso effetto di 'PROMPT testo'\n"

  WCMD_REM,
"Una linea di comando che comincia con REM (seguito da uno spazio) non esegue\n\
alcuna azione e può, quindi, essere usata come un commento in un file batch.\n"

  WCMD_REN,    "Aiuto su REN\n"
  WCMD_RENAME, "Aiuto su RENAME\n"
  WCMD_RD,     "Aiuto su RD\n"
  WCMD_RMDIR,  "Aiuto su RMDIR\n"

  WCMD_SET,
"SET mostra o cambia le variabili d'ambiente di cmd.\n\
\n\
SET senza parametri mostra tutto dell'ambiente attuale.\n\
\n\
Per creare o modificare una variabile d'ambiente, la sintassi è:\n\
\n\
      SET <variabile>=<valore>\n\
\n\
dove <variabile> e <valore> sono stringhe di caratteri. Non devono esserci\n\
spazi prima del segno uguale, né il nome della variabile può\n\
avere spazi all'interno.\n\
\n\
Sotto Wine, l'ambiente del sistema operativo sottostante è\n\
incluso nell'ambiente Win32; ci saranno quindi generalmente\n\
molti più valori che ina implementazione nativa di Win32. Nota che non è\n\
possibile influenzare l'ambiente del sistema operativo da dentro il cmd.\n"

  WCMD_SHIFT,
"SHIFT è usato in un file batch per rimuovere un parametro dall'inizio della\n\
lista, perciò il parametro 2 diventa parametro 1 e così via. Non ha effetto\n\
se chiamato dalla linea di comando.\n"

  WCMD_TIME,   "Aiuto su TIME\n"

  WCMD_TITLE,  "Stabilisce il titolo della finestra per quella di cmd, sintassi TITLE [stringa]\n"

  WCMD_TYPE,
"TYPE <nomedelfile> copia <nomedelfile> sul dispositivo della console (o ovunque\n\
se rediretto). Nessun controllo è fatto se il file sia testo leggibile.\n"

  WCMD_VERIFY,
"VERIFY è usato per impostare, pulire o verificare la flag di verify. Forme valide sono:\n\
\n\
VERIFY ON	Imposta la flag\n\
VERIFY OFF	Pulisce la flag\n\
VERIFY		Mostra ON o OFF a seconda dei casi.\n\
\n\
La flag di verify non ha funzioni in Wine.\n"

  WCMD_VER,
"VER mostra la versione di cmd che stai usando\n"

  WCMD_VOL,    "Aiuto su VOL\n"

  WCMD_PUSHD,  "PUSHD <nomedellacartella> salva la cartella attuale su di uno\n\
stack e poi la cambia con quella passata.\n"

  WCMD_POPD,   "POPD cambia la cartella attuale con l'ultima salvata con\n\
PUSHD.\n"

  WCMD_MORE,   "MORE mostra l'output di files o l'input dalla pipe in pagine.\n"

  WCMD_CHOICE, "CHOICE mostra un testo e aspetta l'inserimento da parte\n\
dell'utente di un tasto permesso da una lista selezionabile.\n\
CHOICE è usato generalmente per creare un menù a selezione in un file batch.\n"

  WCMD_EXIT,
"EXIT termina la sessione corrente di cmd e torna al\n\
sistema operativo o alla shell dal quale hai chiamato cmd.\n"

  WCMD_ALLHELP, "I comandi built-in di CMD sono:\n\
ATTRIB\t\tMostra o cambia gli attributi dei files DOS\n\
CALL\t\tInvoca un file batch da dentro un altro\n\
CD (CHDIR)\tCambia la cartella di default attuale\n\
CHOICE\t\tAspetta la pressione di un tasto da una lista selezionabile\n\
CLS\t\tPulisce lo schermo della console\n\
COPY\t\tCopia files\n\
CTTY\t\tCambia il dispositivo di input/output\n\
DATE\t\tMostra o cambia la data di sistema\n\
DEL (ERASE)\tCancella un file o un set di files\n\
DIR\t\tElenca il contenuto di una cartella\n\
ECHO\t\tCopia il testo direttamente sull'output della console\n\
HELP\t\tMostra dei semplici dettagli di aiuto su di un argomento\n\
MD (MKDIR)\tCrea una sottocartella\n\
MORE\t\tMostra l'output in pagine\n\
MOVE\t\tMuove un file, set di files o un albero di cartelle\n\
PATH\t\tConfigura o mostra il percorso di ricerca\n\
POPD\t\tRipristina la cartella all'ultima salvata con PUSHD\n\
PROMPT\t\tCambia il prompt dei comandi\n\
PUSHD\t\tCambia su una nuova cartella, salvando quella attuale\n\
REN (RENAME)\tRinomina un file\n\
RD (RMDIR)\tCancella una sottocartella\n\
SET\t\tConfigura o mostra le variabili d'ambiente\n\
TIME\t\tConfigura o cambia l'orario di sistema attuale\n\
TITLE\t\tConfigura il titolo della finestra per la sessione di CMD\n\
TYPE\t\tInserisce il contenuto di un file di testo\n\
VER\t\tMostra la versione attuale di CMD\n\
VOL\t\tMostra l'etichetta di volume di un'unità disco\n\
EXIT\t\tChiude CMD\n\n\
Inserisci HELP <comando> per maggiori informazioni su ciascuno dei comandi soprastanti\n"

  WCMD_CONFIRM, "Sei sicuro"
  WCMD_YES, "S"
  WCMD_NO, "N"
  WCMD_NOASSOC, "Associazione di file mancante per l'estensione %s\n"
  WCMD_NOFTYPE, "Nessun comando di apertura associato con il tipo di file '%s'\n"
  WCMD_OVERWRITE, "Sovrascrivere %s"
  WCMD_MORESTR, "Di più..."
  WCMD_TRUNCATEDLINE, "Linea nell'elaborazione Batch probabilmente troncata. Uso:\n"
  WCMD_NYI, "Non ancora implementato\n\n"
  WCMD_NOARG, "Manca un parametro\n"
  WCMD_SYNTAXERR, "Errore di sintassi\n"
  WCMD_FILENOTFOUND, "%s : File non trovato\n"
  WCMD_NOCMDHELP, "Nessun aiuto disponibile per %s\n"
  WCMD_NOTARGET, "Destinazione del GOTO non trovata\n"
  WCMD_CURRENTDATE, "La data attuale è  %s\n"
  WCMD_CURRENTTIME, "L'ora attuale è  %s\n"
  WCMD_NEWDATE, "Inserisci una nuova data: "
  WCMD_NEWTIME, "Inserisci una nuova ora: "
  WCMD_MISSINGENV, "Variabile d'ambiente %s non definita\n"
  WCMD_READFAIL, "Impossibile aprire '%s'\n"
  WCMD_CALLINSCRIPT, "Impossibile chiamare un'etichetta batch fuori da uno script batch\n"
  WCMD_ALL, "T"
  WCMD_DELPROMPT, "%s, Cancella"
  WCMD_ECHOPROMPT, "Echo è %s\n"
  WCMD_VERIFYPROMPT, "Verify è %s\n"
  WCMD_VERIFYERR, "Verify deve essere ON o OFF\n"
  WCMD_ARGERR, "Errore nel parametro\n"
  WCMD_VOLUMEDETAIL, "Il volume nell'unità %c è %s\nIl numero seriale del volume è %04x-%04x\n\n"
  WCMD_VOLUMEPROMPT, "Etichetta del volume (11 caratteri, Invio per nessuno)?"
  WCMD_NOPATH, "PATH non trovato\n"
  WCMD_ANYKEY,"Premere Invio per continuare: "
  WCMD_CONSTITLE,"Prompt dei comandi di Wine"
  WCMD_VERSION,"Versione di CMD %s\n\n"
  WCMD_MOREPROMPT, "Di più? "
  WCMD_LINETOOLONG, "La linea di input è troppo lunga.\n"
}
