/*
 * Wine command prompt
 * French Language Support
 *
 * Copyright 2003 Sylvain Petreolle
 * 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
 */

#include "wcmd.h"

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

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

STRINGTABLE
{
  WCMD_ATTRIB, "Aide d'ATTRIB\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,     "Aide de CD\n"
  WCMD_CHDIR,  "Aide de CHDIR\n"

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

  WCMD_COPY,   "Aide de COPY\n"
  WCMD_CTTY,   "Aide de CTTY\n"
  WCMD_DATE,   "Aide de DATE\n"
  WCMD_DEL,    "Aide de DEL\n"
  WCMD_DIR,    "Aide de DIR\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,  "Aide de ERASE\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,     "Aide de MD\n"
  WCMD_MKDIR,  "Aide de MKDIR\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 (initialement\n\
c'est la valeur donnée dans le fichier wine.conf). 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,    "Aide de REN\n"
  WCMD_RENAME, "Aide de RENAME\n"
  WCMD_RD,     "Aide de RD.\n"
  WCMD_RMDIR,  "Aide de RMDIR.\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,   "Aide de TIME\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_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\
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"
}
