/*
 * Wine command prompt
 * French Language Support
 *
 * Copyright 2003 Sylvain Petreolle
 * Copyright 2007 Jonathan Ernst
 * Copyright 2009-2010 Frédéric Delanoy
 * 
 * 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 "wcmd.h"

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

STRINGTABLE
{
  WCMD_ATTRIB, "ATTRIB affiche ou modifie les attributs de fichiers DOS.\n"
  WCMD_CALL,
"CALL <fichierbatch> sert à appeler un fichier batch\n\
depuis un autre fichier batch. Quand le fichier batch sort, le contrôle revient\n\
au fichier qui l'a appelé. La commande CALL doit être suivie des paramètres\n\
de la procédure appelée.\n\
\n\
Les changements de répertoire courant, de variables d'environnement etc. faits\n\
dans une procédure appelée sont transmis à l'appelant.\n"

  WCMD_CD,     "CD <rép> est la version courte de CHDIR. Elle change le\
répertoire courant par défaut.\n"
  WCMD_CHDIR,  "CHDIR <rép> change le répertoire courant par défaut.\n"

  WCMD_CLS,
"CLS efface l'écran de la console.\n"

  WCMD_COPY,   "COPY copie un ou plusieurs fichiers.\n"
  WCMD_CTTY,   "CTTY change le périphérique d'entrée/sortie.\n"
  WCMD_DATE,   "DATE affiche ou modifie la date système.\n"
  WCMD_DEL,    "DEL <fichiers> efface un fichier ou un groupe de fichiers.\n"
  WCMD_DIR,    "DIR liste le contenu d'un répertoire.\n"

  WCMD_ECHO,
"ECHO <chaîne> affiche <chaîne> sur la console courante.\n\
\n\
ECHO ON provoque l'affichage de toutes les commandes sur la console\n\
avant leur exécution.\n\
\n\
ECHO OFF annule l'effet de tout ECHO ON antérieur (ECHO est OFF par\n\
défaut). On peut empêcher l'affichage de ECHO OFF en le faisant\n\
précéder d'un signe @.\n"

  WCMD_ERASE,  "ERASE <fichiers> efface un ou plusieurs fichiers.\n"

  WCMD_FOR,
"La commande FOR sert à exécuter une commande pour chaque fichier d'un groupe de fichiers.\n\
\n\
Syntaxe : FOR %variable IN (groupe) DO commande\n\
\n\
La nécessité de doubler le signe '%' lorsque l'on utilise FOR dans un fichier batch\n\
n'existe pas dans cmd.\n"

  WCMD_GOTO,
"La commande GOTO transfère l'exécution à une autre commande (située\n\
après une étiquette donnée) dans un fichier batch.\n\
\n\
L'étiquette cible du GOTO a une longueur de maximum 255 caractères\n\
mais ne peut inclure d'espaces (à la différence d'autres systèmes\n\
d'exploitation). Si deux étiquettes identiques (ou plus) sont dans le même\n\
fichier, seule la première sera utilisée. Essayer de sauter vers une étiquette\n\
non existante termine l'exécution du fichier batch.\n\
\n\
GOTO n'a pas d'effet si utilisé interactivement.\n"

  WCMD_HELP,   "Affiche une brève aide sur les commandes internes de CMD\n"

  WCMD_IF,
"IF est utilisé pour exécuter une commande de façon conditionnelle.\n\
\n\
Syntaxe :	IF [NOT] EXIST nomfichier commande\n\
		IF [NOT] chaîne1==chaîne2 commande\n\
		IF [NOT] ERRORLEVEL nombre commande\n\
\n\
Dans la deuxième forme de la commande, chaîne1 et chaîne2 doivent être\n\
entre guillemets. La comparaison est insensible à la casse.\n"

  WCMD_LABEL,  "LABEL sert à modifier le nom de volume d'un disque.\n\
\n\
Syntaxe : LABEL [lecteur:]\n\
La commande demande le nouveau nom de volume pour le lecteur spécifié.\n\
Vous pouvez afficher le nom de volume avec la commande VOL.\n"

  WCMD_MD,     "MD est la version courte de MKDIR. Elle crée un répertoire.\n"
  WCMD_MKDIR,  "MKDIR <rép> crée un répertoire.\n"
  WCMD_MOVE,
"MOVE déplace un fichier, un groupe de fichiers ou un répertoire\n\
à un autre endroit dans le système de fichiers. Si l'objet déplacé est un répertoire, alors\n\
tous les fichiers et sous-répertoires de l'objet sont également déplacés.\n\
MOVE échoue si l'ancien et le nouvel emplacement sont sur des lecteurs DOS différents.\n"

  WCMD_PATH,
"PATH affiche ou change le chemin de recherche de cmd.\n\
\n\
Entrer PATH seul affiche le réglage courant de PATH (dont la valeur\n\
initiale provient de la base de registre). Pour changer\n\
le réglage, faites suivre la commande PATH par la nouvelle valeur.\n\
Il est aussi possible de modifier le PATH en utilisant la variable\n\
d'environnement PATH, par exemple :\n\
		PATH %PATH%;c:\\temp\n"

  WCMD_PAUSE,
"PAUSE affiche un message sur l'écran : 'Pressez Entrée pour continuer'\n\
et attend que l'utilisateur presse la touche Entrée. PAUSE est surtout utilisé dans\n\
les fichiers batchs pour permettre à l'utilisateur de lire la sortie de\n\
la dernière commande avant qu'elle ne disparaisse de l'écran.\n"

  WCMD_PROMPT,
"PROMPT règle l'invite de commande.\n\
\n\
La chaîne suivant la commande PROMPT (ainsi que le blanc la suivant directement)\n\
apparaît au début de la ligne quand cmd attend une entrée texte.\n\
\n\
Les chaînes de caractères suivantes ont une signification spéciale :\n\
\n\
$$    Signe dollar        $_    Saut de ligne       $b    Barre verticale (|)\n\
$d    Date courante       $e    Escape              $g    Signe >\n\
$l    Signe <             $n    Lecteur courant     $p    Répertoire courant\n\
$q    Signe =             $t    Heure courante      $v    Version de cmd\n\
\n\
Notez qu'entrer la commande PROMPT sans texte d'invite remet l'invite\n\
à sa valeur par défaut, à savoir la lettre du lecteur courant suivie de\n\
son répertoire courant et d'un signe plus-grand-que (>).\n\
(c.-à-d. la commande PROMPT $p$g).\n\
\n\
L'invite peut aussi être adaptée en modifiant la variable d'environnement\n\
 PROMPT ; ainsi la commande 'SET PROMPT=texte' a le même effet que 'PROMPT texte'\n"

  WCMD_REM,
"Une ligne de commande commençant par REM (suivi d'une espace) n'engendre\n\
aucune action, et peut donc servir de commentaire dans un fichier batch.\n"

  WCMD_REN,    "REN est la version courte de RENAME. Elle renomme un fichier.\n"
  WCMD_RENAME, "RENAME renomme un fichier.\n"
  WCMD_RD,     "RD est la version courte de RMDIR. Elle efface un répertoire.\n"
  WCMD_RMDIR,  "RMDIR efface un sous-répertoire.\n"

  WCMD_SET,
"SET affiche ou change les variables d'environnement de cmd.\n\
\n\
SET sans paramètre affiche l'environnement courant.\n\
\n\
Pour créer et modifier une variable d'environnement, la syntaxe est :\n\
\n\
      SET <variable>=<valeur>\n\
\n\
où <variable> et <valeur> sont des chaînes de caractères. Il ne peut y avoir aucun\n\
espace autour du signe '=', ni dans <variable>.\n\
\n\
\n\
Sous Wine, l'environnement du système hôte est\n\
inclus dans l'environnement Win32, il y aura par conséquent généralement\n\
bien plus de valeurs que dans un système Win32 natif. Notez qu'il\n\
n'est pas possible de modifier l'environnement du système d'exploitation dans cmd.\n"

  WCMD_SHIFT,
"SHIFT est utilisé dans un fichier batch pour enlever le premier paramètre de la\n\
liste ; ainsi, le paramètre 2 devient paramètre 1 et ainsi de suite. Il est sans effet\n\
s'il est appelé depuis la ligne de commande.\n"

  WCMD_TIME,   "TIME règle ou affiche l'heure système courante.\n"

  WCMD_TITLE,
"Définit le titre de la fenêtre pour la session cmd, Syntaxe : TITLE [chaîne]\n"

  WCMD_TYPE,
"TYPE <nomfichier> affiche <nomfichier> sur la console (ou ailleurs\n\
si redirigé). Aucun test n'est fait pour voir si le fichier contient bien du texte.\n"

  WCMD_VERIFY,
"VERIFY est utilisé pour positionner, effacer ou tester l'indicateur de vérification.\n\
\n\
Les formes suivantes sont correctes :\n\
VERIFY ON	Positionne l'indicateur\n\
VERIFY OFF	Efface l'indicateur\n\
VERIFY\t\tAffiche l'état ON ou OFF de l'indicateur.\n\
\n\
L'indicateur de vérification n'a pas de fonction dans Wine.\n"

  WCMD_VER,
"VER affiche la version de cmd utilisée.\n"

  WCMD_VOL,    "Aide de VOL\n"

  WCMD_PUSHD,  "PUSHD <répertoire> enregistre le répertoire courant sur\n\
une pile et remplace le répertoire courant par le répertoire spécifié.\n"

  WCMD_POPD,   "POPD change le répertoire courant par le dernier enregistré à l'aide de\n\
PUSHD.\n"

  WCMD_MORE,   "MORE affiche le contenu de fichiers ou l'entrée standard par pages.\n"

  WCMD_CHOICE, "CHOICE affiche un message et bloque jusqu'à ce que l'utilisateur appuie\n\
sur une des touches spécifiées dans une liste configurable.\n\
CHOICE est principalement utilisé pour construire une sélection de menu dans un fichier batch.\n"

  WCMD_EXIT,
"EXIT termine la session de ligne de commande et retourne\n\
au système d'exploitation ou au shell où vous avez invoqué cmd.\n"

  WCMD_ALLHELP, "Les commandes intégrées de CMD sont :\n\
ATTRIB\t\tAffiche ou modifie les attributs de fichiers DOS\n\
CALL\t\tInvoque un fichier batch à l'intérieur d'un autre\n\
CD (CHDIR)\tChange le répertoire courant par défaut\n\
CHOICE\t\tAttend l'appui d'une touche appartenant à une liste configurable\n\
CLS\t\tEfface l'écran\n\
COPY\t\tCopie un ou plusieurs fichiers\n\
CTTY\t\tChange le périphérique d'entrée/sortie\n\
DATE\t\tAffiche ou modifie la date système\n\
DEL (ERASE)\tEfface un fichier ou un groupe de fichiers\n\
DIR\t\tListe le contenu d'un répertoire\n\
ECHO\t\tAffiche du texte sur la console\n\
HELP\t\tAffiche de brefs détails sur l'utilisation d'une commande\n\
MD (MKDIR)\tCrée un répertoire\n\
MORE\t\tAffiche du texte par pages\n\
MOVE\t\tDéplace un fichier, un groupe de fichiers ou un répertoire\n\
PATH\t\tRègle ou affiche le chemin de recherche\n\
POPD\t\tRemplace le répertoire courant par le dernier enregistré avec PUSHD\n\
PROMPT\t\tChange l'invite de commande\n\
PUSHD\t\tChange de répertoire en enregistrant le répertoire courant\n\
REN (RENAME)\tRenomme un fichier\n\
RD (RMDIR)\tEfface un répertoire\n\
SET\t\tRègle ou affiche les variables d'environnement\n\
TIME\t\tRègle ou affiche l'heure système courante\n\
TITLE\t\tRègle le titre de la fenêtre pour la session CMD\n\
TYPE\t\tAffiche le contenu d'un fichier texte\n\
VER\t\tAffiche la version de cmd utilisée.\n\
VOL\t\tAffiche le nom de volume d'un lecteur de disque\n\
EXIT\t\tQuitte CMD\n\n\
Entrez HELP <commande> pour plus d'informations sur les commandes ci-dessus\n"

  WCMD_CONFIRM, "Êtes-vous sûr"
  WCMD_YES, "O"
  WCMD_NO, "N"
  WCMD_NOASSOC, "Association de fichier manquante pour l'extension %s\n"
  WCMD_NOFTYPE, "Aucune commande d'ouverture n'est associée avec le type de fichier « %s »\n"
  WCMD_OVERWRITE, "Écraser %s"
  WCMD_MORESTR, "Plus..."
  WCMD_TRUNCATEDLINE, "Ligne du processus batch probablement tronquée. Utilisation de :\n"
  WCMD_NYI, "Pas encore implémenté\n\n"
  WCMD_NOARG, "Argument manquant\n"
  WCMD_SYNTAXERR, "Erreur de syntaxe\n"
  WCMD_FILENOTFOUND, "%s : fichier non trouvé\n"
  WCMD_NOCMDHELP, "Pas d'aide disponible pour %s\n"
  WCMD_NOTARGET, "La destination de l'instruction GOTO n'a pas été trouvée\n"
  WCMD_CURRENTDATE, "La date courante est %s\n"
  WCMD_CURRENTTIME, "L'heure courante est %s\n"
  WCMD_NEWDATE, "Saisissez la nouvelle date : "
  WCMD_NEWTIME, "Saisissez la nouvelle heure : "
  WCMD_MISSINGENV, "La variable d'environnement %s n'est pas définie\n"
  WCMD_READFAIL, "Impossible d'ouvrir « %s »\n"
  WCMD_CALLINSCRIPT, "Impossible d'appeler une étiquette de batch hors d'un script batch\n"
  WCMD_ALL, "T"
  WCMD_DELPROMPT, "%s, Supprimer"
  WCMD_ECHOPROMPT, "Echo est %s\n"
  WCMD_VERIFYPROMPT, "Verify est %s\n"
  WCMD_VERIFYERR, "Verify doit être ON ou OFF\n"
  WCMD_ARGERR, "Erreur de paramètre\n"
  WCMD_VOLUMEDETAIL, "Le volume dans le lecteur %c est %s\nLe numéro de série du volume est %04x-%04x\n\n"
  WCMD_VOLUMEPROMPT, "Étiquette du volume (11 caractères, ENTRÉE pour aucun) ?"
  WCMD_NOPATH, "PATH non trouvé\n"
  WCMD_ANYKEY,"Appuyez sur ENTRÉE pour continuer : "
  WCMD_CONSTITLE,"Invite de commande Wine"
  WCMD_VERSION,"CMD version %s\n\n"
  WCMD_MOREPROMPT, "Plus ? "
  WCMD_LINETOOLONG, "La ligne d'entrée est trop longue.\n"
}
