/*
 * XCOPY - Wine-compatible xcopy program
 * Dutch language support
 *
 * Copyright (C) 2008 Frans Kool
 *
 * 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
 */


LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

STRINGTABLE
{
    STRING_INVPARMS, "Onjuist aantal parameters - Gebruik xcopy /? om hulp te krijgen\n"
    STRING_INVPARM,  "Onjuiste parameter '%s' -  Gebruik xcopy /? om hulp te krijgen\n"
    STRING_PAUSE,    "Druk op <enter> om te beginnen met copiëren\n"
    STRING_SIMCOPY,  "%d bestand(en) zouden worden gecopiëerd\n"
    STRING_COPY,     "%d bestand(en) gecopiëerd\n"
    STRING_QISDIR,   "Is '%s' een bestand of een directory\n" \
                     "op de bestemming?\n" \
                     "(B - Bestand, D - Directory)\n"
    STRING_SRCPROMPT,"%s? (Ja|Nee)\n"
    STRING_OVERWRITE,"Overschrijven %s? (Ja|Nee|Alles)\n"
    STRING_COPYFAIL, "Copiëren van '%s' naar '%s' mislukt met r/c %d\n"
    STRING_OPENFAIL, "Fout tijdens openen van '%s'\n"
    STRING_READFAIL, "Fout tijdens lezen van '%s'\n"
    STRING_YES_CHAR, "J"
    STRING_NO_CHAR,  "N"
    STRING_ALL_CHAR, "A"
    STRING_FILE_CHAR,"B"
    STRING_DIR_CHAR, "D"

    STRING_HELP,
"XCOPY - Copiëerd bron bestanden of directory bomen naar een bestemming\n\
\n\
Gebruik:\n\
XCOPY bron [bestemming] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U] \n\
\t     [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Parameters:\n\
\n\
[/I]  Als bestemming niet bestaat en 2 of meer bestanden worden\n\
\tgecopiëerd, neem aan dat een directory werd bedoeld\n\
[/S]  Copiëer directories en subdirectories\n\
[/E]  Copiëer directories en subdirectories, inclusief lege\n\
[/Q]  Toon geen namen tijdens copiëren (stil).\n\
[/F]  Toon volledige bron- en bestemmingnamen tijdens copiëren\n\
[/L]  Simuleer de actie, toon de namen die gecopiëerd zouden worden\n\
[/W]  Wacht op gebruiker actie voordat de copiëeractie begint\n\
[/T]  Creëert de lege directory structuur maar copiëert geen bestanden\n\
[/Y]  Onderdrukt gebruikersactie wanneer bestanden worden overschreven\n\
[/-Y] Vraagt gebruikersactie wanneer bestanden worden overschreven\n\
[/P]  Vraagt gebruikersactie voor ieder bron bestand voor copiëren\n\
[/N]  Copiëer m.b.v korte bestandsnamen\n\
[/U]  Copiëer alleen bestanden die al bestaan op de bestemming\n\
[/R]  Overschrijf alle schrijf-beveiligde bestanden\n\
[/H]  Inclusief verborgen en systeem bestanden\n\
[/C]  Ga door zelfs als er een fout optreed tijdens het copiëren\n\
[/A]  Copiëer alleen bestanden met archiverings attribuut aan\n\
[/M]  Copiëer alleen bestanden met archiverings attribuut aan, verwijderd \n\
\tdit archiverings attribuut\n\
[/D | /D:m-d-y] Copiëer nieuwe bestanden of die gewijzigd zijn na de opgegeven\n\
\t\tdatum. Als geen detum wordt gegeven, copiëer alleen als bron nieuwer is.\n\n"

}
