/*
 * 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\
                     nell'obiettivo?\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"

}
