/*
 * XCOPY - Wine-compatible xcopy program
 * German language support
 *
 * Copyright (C) 2007 J. Edmeades
 * Copyright (C) 2008 M. Karcher
 *
 * 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"

#pragma code_page(65001)

LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL

STRINGTABLE
{
    STRING_INVPARMS, "Falsche Parameteranzahl -  xcopy /? zeigt Hilfe an\n"
    STRING_INVPARM,  "Unbekannter Parameter '%s' - xcopy /? zeigt Hilfe an\n"
    STRING_PAUSE,    "Eingabetaste betätigen, um mit dem Kopieren zu beginnen\n"
    STRING_SIMCOPY,  "%d Datei(en) würden kopiert\n"
    STRING_COPY,     "%d Datei(en) kopiert\n"
    STRING_QISDIR,   "Ist '%s' eine Datei oder ein Verzeichnis\n" \
                     "am Zielsort?\n" \
                     "(D - Datei, V - Verzeichnis)\n"
    STRING_SRCPROMPT,"%s? (Ja|Nein)\n"
    STRING_OVERWRITE,"%s überschreiben? (Ja|Nein|Alle)\n"
    STRING_COPYFAIL, "Kopieren von '%s' nach '%s' fehlgeschlagen. Fehlernummer: %d\n"
    STRING_OPENFAIL, "Fehler beim Öffnen von '%s'\n"
    STRING_READFAIL, "Fehler beim Lesen von '%s'\n"
    STRING_YES_CHAR, "J"
    STRING_NO_CHAR,  "N"
    STRING_ALL_CHAR, "A"
    STRING_FILE_CHAR,"D"
    STRING_DIR_CHAR, "V"

    STRING_HELP,
"XCOPY - Kopiert Dateien oder Verzeichnisse an einen Zielort\n\
\n\
Syntax:\n\
XCOPY Quelle [Ziel] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t     [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Mit:\n\
\n\
[/I]  Behandle Ziel als Verzeichnisnamen, wenn es nicht existiert und\n\
\tmehrere Dateien kopiert werden.\n\
[/S]  Kopiere Verzeichnisse und Unterverzeichnisse\n\
[/E]  Kopiere Verzeichnisse und Unterverzeichnisse, auch leere\n\
[/Q]  Zeige die Dateinamen beim Kopieren nicht an\n\
[/F]  Zeige vollständige Dateinamen von Quelle und Ziel an\n\
[/L]  Simulation: Zeige die Namen der Datein, die kopiert würden\n\
[/W]  Wartet vor Beginn des Kopierens auf Bestätigung\n\
[/T]  Erzeuge eine leere Verzeichnisstruktur, ohne Dateien zu kopieren\n\
[/Y]  Keine Nachfrage vor dem Überschreiben von Dateien\n\
[/-Y] Nachrage vor dem Überschreiben von Dateien\n\
[/P]  Fragt für jede Quelldatei, ob sie kopiert werden soll\n\
[/N]  Kopiert die Dateien unter ihrem Kurznamen\n\
[/U]  Kopiert nur Dateien, die am Ziel bereits existieren\n\
[/R]  Überschreibt schreibgeschützte Dateien\n\
[/H]  Kopiere auch versteckte und Systemdateien\n\
[/C]  Nach Fehlern den Kopiervorgang fortsetzen\n\
[/A]  Nur Dateien mit Archivbit kopieren\n\
[/M]  Nur Dateien mit Archivbit kopieren, danach Archivbit löschen\n\
[/D | /D:M-T-J] Kopiere neue Dateien und Dateien, die neuer als das\n\
\t\tangegebene Datum sind. Wird kein Datum angegegebn, werden nur\n\
\t\tQuelldateien kopiert, die neuer sind als die Zieldatei\n\n"

}
