/*
 * XCOPY - Wine-compatible xcopy program
 * French language support
 *
 * Copyright 2007 Jonathan Ernst
 *
 * 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_FRENCH, SUBLANG_NEUTRAL

STRINGTABLE
{
    STRING_INVPARMS, "Nombre invalide de paramètres - Utilisez xcopy /? pour obtenir de l'aide\n"
    STRING_INVPARM,  "Paramètre invalide « %s » -  Utilisez xcopy /? pour obtenir de l'aide\n"
    STRING_PAUSE,    "Appuyez sur ENTRÉE pour démarrer la copie\n"
    STRING_SIMCOPY,  "%d fichier(s) seront copiés\n"
    STRING_COPY,     "%d fichier(s) copiés\n"
    STRING_QISDIR,   "Est-ce que « %s » est un fichier ou un répertoire\n" \
                     "dans la destination ?\n" \
                     "(F - Fichier, R - Répertoire)\n"
    STRING_SRCPROMPT,"%s ? (Oui|Non)\n"
    STRING_OVERWRITE,"Écraser  %s ? (Oui|Non|Tous)\n"
    STRING_COPYFAIL, "La copie de « %s » vers « %s » a échoué avec le c/r %d\n"
    STRING_OPENFAIL, "Impossible d'ouvrir « %s »\n"
    STRING_READFAIL, "Impossible de lire « %s »\n"
    STRING_YES_CHAR, "O"
    STRING_NO_CHAR,  "N"
    STRING_ALL_CHAR, "T"
    STRING_FILE_CHAR,"F"
    STRING_DIR_CHAR, "R"

    STRING_HELP,
"XCOPY - Copie les fichiers ou répertoires source vers une destination\n\
\n\
Syntaxe :\n\
XCOPY source [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U] \n\
\t     [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Où :\n\
\n\
[/I]  Suppose que la destination est un répertoire si elle n'existe pas et que l'on copie plus\n\
\td'un fichier\n\
[/S]  Copie les répertoires et sous-répertoires\n\
[/E]  Copie les répertoires et sous-répertoires, y compris ceux qui sont vides\n\
[/Q]  Ne pas afficher la liste des fichiers copiés (mode silencieux)\n\
[/F]  Afficher la source et la destination complète lors de la copie\n\
[/L]  Simuler l'opération, en montrant le nom des fichiers qui auraient été copiés\n\
[/W]  Demande avant de démarrer la copie\n\
[/T]  Créer une structure de répertoires vides, mais ne copie pas les fichiers\n\
[/Y]  Ne demande pas de confirmation lors de l'écrasement des fichiers\n\
[/-Y] Demande une confirmation lors de l'écrasement des fichiers\n\
[/P]  Demande avant de copier chaque fichier source\n\
[/N]  Copie en utilisant des noms courts\n\
[/U]  Copie uniquement les fichiers qui existent déjà dans la destination\n\
[/R]  Écrase même les fichiers en lecture seule\n\
[/H]  Inclure les fichiers cachés et système dans la copie\n\
[/C]  Continue même si une erreur survient pendant la copie\n\
[/A]  Copie uniquement les fichiers qui ont l'attribut archive défini\n\
[/M]  Copie uniquement les fichiers qui ont l'attribut archive défini, supprime \n\
\tensuite l'attribut\n\
[/D | /D:m-d-y] Copie uniquement les fichiers nouveaux ou ceux modifiés après la date spécifiée.\n\
\t\tSi aucune date n'est spécifiée, copie uniquement lorsque le fichier de destination est plus vieux\n\
\t\tque le fichier source\n\n"

}
