/*
 * 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
 */
#pragma code_page(65001)


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"

}

#pragma code_page(default)
