/*
 * XCOPY - Wine-compatible xcopy program
 * Italian language support
 *
 * Copyright (C) 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 "xcopy.h"

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

LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL

STRINGTABLE
{
    STRING_INVPARMS, "Numero non valido di parametri - Digita xcopy /? per l'aiuto\n"
    STRING_INVPARM,  "Parametro '%s' non valido -  Digita xcopy /? per l'aiuto\n"
    STRING_PAUSE,    "Premi Invio per iniziare a copiare\n"
    STRING_SIMCOPY,  "%d file saranno copiati\n"
    STRING_COPY,     "%d file copiato/i\n"
    STRING_QISDIR,   "'%s' è il nome di un file o una cartella\n\
                     nella destinazione?\n\
                     (F - File, C - Cartella)\n"
    STRING_SRCPROMPT,"%s? (Sì|No)\n"
    STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n"
    STRING_COPYFAIL, "La copia di '%s' in '%s' è fallita con r/c %d\n"
    STRING_OPENFAIL, "Impossibile aprire '%s'\n"
    STRING_READFAIL, "Errore durante la lettura di '%s'\n"
    STRING_YES_CHAR, "S"
    STRING_NO_CHAR,  "N"
    STRING_ALL_CHAR, "T"
    STRING_FILE_CHAR,"F"
    STRING_DIR_CHAR, "C"

    STRING_HELP,
"XCOPY - Copia file e alberi di cartelle sorgenti in una destinazione\n\
\n\
Sintassi:\n\
XCOPY sorgente [destinazione] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t     [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Dove:\n\
\n\
[/I]  Assume una cartella se la destinazione non esiste e sono copiati 2 o\n\
\tpiù file\n\
[/S]  Copia le cartelle e le sottocartelle\n\
[/E]  Copia le cartelle e le sottocartelle, incluse quelle vuote\n\
[/Q]  Non mostra i nomi durante la copia, modalità silenziosa.\n\
[/F]  Mostra i nomi completi della sorgente e della destinazione durante la copia\n\
[/L]  Simula l'operazione, mostrando i nomi che sarebbero copiati\n\
[/W]  Richiede prima di iniziare l'operazione di copia\n\
[/T]  Crea la struttura di cartelle vuote ma non copia i file\n\
[/Y]  Disabilita le conferme quando sono sovrascritti dei file\n\
[/-Y] Abilita le conferme quando sono sovrascritti dei file\n\
[/P]  Chiede conferma per ogni file sorgente prima di copiare\n\
[/N]  Copia usando i nomi abbreviati\n\
[/U]  Copia solo files che sono già presenti nella destinazione\n\
[/R]  Sovrascrive ogni file che abbia l'attributo Sola lettura\n\
[/H]  Include i file nascosti e di sistema nella copia\n\
[/C]  Continua anche se accade un errore durante la copia\n\
[/A]  Copia solo i file che abbiano l'attributo Archivio\n\
[/M]  Copia solo i file che abbiano l'attributo Archivio, rimuovendo\n\
\tl'attributo\n\
[/D | /D:m-g-a] Copia i nuovi file o quelli modificati dopo la data fornita.\n\
\t\tSe nessuna data è stata fornita, copia solo se la destinazione è più vecchia\n\
\t\tdella sorgente\n\n"

}
