/*
 * 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)
