/*
 * 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(s) sarebbero copiati\n"
    STRING_COPY,     "%d file(s) copiati\n"
    STRING_QISDIR,   "'%s' è il nome di un file o una cartella\n" \
                     "sull'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(s) 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]  Assumi una cartella se la destinazione non esiste e sono copiati 2 o\n\
\tpiù files\n\
[/S]  Copia le cartelle e le sottocartelle\n\
[/E]  Copia le cartelle e le sottocartelle, includendo quelle vuote\n\
[/Q]  Non mostrare 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 nome che sarebbero copiati\n\
[/W]  Prompts before beginning the copy operation\n\
[/T]  Crea la struttura di cartelle vuote ma non copia i files\n\
[/Y]  Disabilita le conferme quando sono sovrascritti files\n\
[/-Y] Abilita le conferme quando sono sovrascritti files\n\
[/P]  Chiede conferma per ogni file sorgente prima di copiare\n\
[/N]  Copia usando gli short names\n\
[/U]  Copia solo files che sono già presenti nella destinazione\n\
[/R]  Sovrascrivi ogni file che abbia l'attributo Sola Lettura\n\
[/H]  Includi files nascosti e di sistema nella copia\n\
[/C]  Continua anche se accade un errore durante la copia\n\
[/A]  Copia solo files che abbiano l'attributo Archivio\n\
[/M]  Copia solo files che abbiano l'attributo Archivio, rimuovendo\n\
\tl'attributo\n\
[/D | /D:m-g-a] Copia i nuovi files 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"

}
