/*
 * Winmm
 * French language support
 *
 * Copyright 1999 Eric Pouech
 *
 * 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 "windef.h"
#include "mmddk.h"

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

LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL

STRINGTABLE
BEGIN

/* MMSYS errors */
MMSYSERR_NOERROR, 		"La commande spécifiée a été exécutée."
MMSYSERR_ERROR,			"Erreur externe non définie."
MMSYSERR_BADDEVICEID, 		"Un identificateur de périphérique hors des limites pour votre système a été utilisé."
MMSYSERR_NOTENABLED,		"Le pilote n'a pas été activé."
MMSYSERR_ALLOCATED, 		"Le périphérique spécifié est en cours d'utilisation. Attendez qu'il soit libre, puis essayez à nouveau."
MMSYSERR_INVALHANDLE, 		"Le handle de périphérique spécifié n'est pas valide."
MMSYSERR_NODRIVER, 		"Il n'y a pas de pilote installé sur votre système."
MMSYSERR_NOMEM,			"Mémoire insuffisante pour cette tâche. Quittez un ou plusieurs programmes, puis essayez à nouveau."
MMSYSERR_NOTSUPPORTED, 		"Fonction non prise en charge. Utilisez la fonction Capacités pour obtenir les fonctions de ce pilote."
MMSYSERR_BADERRNUM, 		"Un numéro d'erreur non défini dans le système a été spécifié."
MMSYSERR_INVALFLAG, 		"Un indicateur non valide a été transmis à une fonction système."
MMSYSERR_INVALPARAM,		"Un paramètre non valide a été passé à une fonction système."

/* WAVE errors */
WAVERR_BADFORMAT, 		"Le format choisi ne peut être traduit ou utilisé. Utilisez Capacités pour voir les formats pris en charge."
WAVERR_STILLPLAYING, 		"Le Lecteur multimédia continue à lire des données. Réinitialisez-le ou attendez que toutes les données aient été lues."
WAVERR_UNPREPARED, 		"L'en-tête du son n'a pas été préparé. Utilisez la fonction Préparer pour le faire, puis essayez à nouveau."
WAVERR_SYNC, 			"Impossible d'ouvrir le périphérique sans utiliser l'indicateur WAVE_ALLOWSYNC. Utilisez l'indicateur, puis essayez à nouveau."

/* MIDI errors */
MIDIERR_UNPREPARED, 		"L'en-tête MIDI n'a pas été préparé. Utilisez la fonction Préparer pour le faire, puis essayez à nouveau."
MIDIERR_STILLPLAYING, 		"Le Lecteur multimédia continue à lire des données. Réinitialisez-le ou attendez que toutes les données aient été. lues."
MIDIERR_NOMAP, 			"Il n'y a pas d'instrument défini pour un mappeur MIDI. Utiliser l'onglet MIDI dans Propriétés multimédia pour installer les instruments."
MIDIERR_NOTREADY, 		"Le port transmet des données au périphérique. Attendez la fin de la transmission, puis essayez à nouveau."
MIDIERR_NODEVICE, 		"Le fichier de description d'instrument MIDI (.IDF) n'est pas valide. Pour plus d'informations, contactez le constructeur de l'instrument."
MIDIERR_INVALIDSETUP, 		"Un appel MIDI non valide dans le mode d'ouverture en cours a été émis. Ouvrez à nouveau le périphérique en employant le mode correct."

/* MCI errors */
MCIERR_INVALID_DEVICE_ID, 	"ID de périphérique MCI non valide. Utilisez l'ID renvoyé lorsque vous avez ouvert le périphérique MCI."
MCIERR_UNRECOGNIZED_KEYWORD, 	"Le paramètre de commande utilisé n'est pas défini dans l'ensemble de commandes MCI."
MCIERR_UNRECOGNIZED_COMMAND,	"La commande utilisée n'est pas une commande MCI valide."
MCIERR_HARDWARE, 		"Votre périphérique multimédia présente un problème. Vérifiez qu'il fonctionne convenablement ou contactez le constructeur."
MCIERR_INVALID_DEVICE_NAME, 	"Ce n'est pas un périphérique MCI connu."
MCIERR_OUT_OF_MEMORY, 		"Mémoire insuffisante pour cette tâche. Quittez un ou plusieurs programmes, puis essayez à nouveau."
MCIERR_DEVICE_OPEN, 		"Cet alias est déjà utilisé par ce programme. Employez un alias unique plutôt que le nom du périphérique."
MCIERR_CANNOT_LOAD_DRIVER, 	"Le pilote de périphérique n'a pas pu être chargé. Vérifiez qu'il est installé correctement."
MCIERR_MISSING_COMMAND_STRING, 	"La chaîne de commande est vide."
MCIERR_PARAM_OVERFLOW, 		"La chaîne de sortie était trop grande pour tenir dans la mémoire tampon de retour. Augmentez la taille de la mémoire tampon."
MCIERR_MISSING_STRING_ARGUMENT, "La commande spécifiée nécessite un paramètre chaîne de caractères : veuillez l'entrer."
MCIERR_BAD_INTEGER, 		"Le nombre entier que vous avez spécifié n'est pas valide pour cette commande. Entrez un nombre."
MCIERR_PARSER_INTERNAL, 	"Le pilote de périphérique a renvoyé une réponse de type non valide. Pour obtenir un nouveau pilote, contactez le constructeur du périphérique."
MCIERR_DRIVER_INTERNAL, 	"Le pilote de périphérique présente un problème. Demandez au constructeur du périphérique de vous fournir un nouveau pilote."
MCIERR_MISSING_PARAMETER, 	"Il manque un paramètre dans la commande spécifiée : veuillez l'entrer."
MCIERR_UNSUPPORTED_FUNCTION, 	"Le périphérique MCI que vous utilisez ne prend pas en charge la commande spécifiée."
MCIERR_FILE_NOT_FOUND, 		"Le fichier spécifié est introuvable. Vérifiez que le chemin d'accès et le nom de fichier sont corrects."
MCIERR_DEVICE_NOT_READY, 	"Le pilote de périphérique n'est pas prêt. Attendez une minute avant d'essayer à nouveau."
MCIERR_INTERNAL, 		"Un problème est survenu lors de l'initialisation de MCI. Essayez de redémarrer Windows."
MCIERR_DRIVER, 			"Une erreur spécifique au pilote a provoqué sa fermeture. Essayez de relancer la commande."
MCIERR_CANNOT_USE_ALL, 		"Utilisez un nom de périphérique spécifique pour cette commande."
MCIERR_MULTIPLE, 		"Des erreurs se sont produites dans plusieurs périphériques. Spécifiez chaque commande et chaque périphérique séparément afin de déterminer les périphériques qui ont provoqué les erreurs."
MCIERR_EXTENSION_NOT_FOUND, 	"Impossible de jouer ce fichier. Vérifiez le nom de fichier ou installez un pilote qui reconnaît ce type de fichier."
MCIERR_OUTOFRANGE, 		"Le paramètre est hors limites pour la commande spécifiée."
MCIERR_FLAGS_NOT_COMPATIBLE, 	"Les paramètres spécifiés ne peuvent être utilisés ensemble."
MCIERR_FILE_NOT_SAVED, 		"Il est impossible d'enregistrer le fichier spécifié. Vérifiez que vous avez assez d'espace disque ou que vous êtes toujours connecté au réseau."
MCIERR_DEVICE_TYPE_REQUIRED, 	"Le périphérique spécifié est introuvable. Vérifiez s'il est installé ou si son nom est correctement orthographié."
MCIERR_DEVICE_LOCKED, 		"Le périphérique spécifié est en cours de fermeture. Attendez quelques secondes puis essayez à nouveau."
MCIERR_DUPLICATE_ALIAS, 	"L'alias spécifié est déjà utilisé dans cette application. Utilisez un alias unique."
MCIERR_BAD_CONSTANT, 		"La constante utilisée n'est pas correcte pour cette commande."
MCIERR_MUST_USE_SHAREABLE, 	"Le pilote de périphérique est déjà utilisé en ce moment. Pour le partager, utilisez le paramètre de partage ('shareable') dans chaque commande d'ouverture ('open')."
MCIERR_MISSING_DEVICE_NAME, 	"La commande spécifiée requiert un nom d'alias, de fichier, de pilote ou de périphérique : veuillez l'entrer."
MCIERR_BAD_TIME_FORMAT, 	"La valeur spécifiée comme format horaire n'est pas valide. Les formats valides sont indiqués dans la documentation MCI."
MCIERR_NO_CLOSING_QUOTE, 	"Un guillemet double fermant manque dans la valeur du paramètre. Ajoutez-le."
MCIERR_DUPLICATE_FLAGS, 	"Un paramètre ou une valeur a été spécifié deux fois et ne peut être spécifié qu'une seule fois."
MCIERR_INVALID_FILE, 		"Le fichier ne peut pas être exécuté sur un périphérique MCI spécifié. Le fichier est endommagé ou son format n'est pas correct."
MCIERR_NULL_PARAMETER_BLOCK, 	"Un bloc de paramètres nuls a été passé à MCI."
MCIERR_UNNAMED_RESOURCE, 	"Impossible d'enregistrer un fichier sans nom. Entrez un nom de fichier."
MCIERR_NEW_REQUIRES_ALIAS, 	"Vous devez spécifier un alias lorsque vous employez le paramètre 'nouveau'."
MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Il est impossible d'utiliser l'indicateur 'notifier' avec les périphériques à ouverture automatique."
MCIERR_NO_ELEMENT_ALLOWED, 	"Impossible d'utiliser un nom de fichier avec le périphérique spécifié."
MCIERR_NONAPPLICABLE_FUNCTION, 	"Impossible d'exécuter les commandes dans l'ordre spécifié. Corrigez l'ordre des commandes, puis essayez à nouveau."
MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Impossible d'exécuter cette commande sur un périphérique à ouverture automatique. Attendez que le périphérique soit fermé pour essayer à nouveau."
MCIERR_FILENAME_REQUIRED, 	"Le nom de fichier est incorrect."
MCIERR_EXTRA_CHARACTERS, 	"Il est impossible de spécifier des caractères supplémentaires après une chaîne placée entre guillemets."
MCIERR_DEVICE_NOT_INSTALLED, 	"Ce périphérique n'est pas installé. Pour installer un nouveau pilote, double-cliquez sur l'icône Ajout de périphérique dans le Panneau de configuration."
MCIERR_GET_CD, 			"Impossible d'accéder au fichier ou au périphérique MCI spécifié. Essayez de changer de répertoire ou de redémarrer votre ordinateur."
MCIERR_SET_CD, 			"Impossible d'accéder au fichier ou au périphérique MCI spécifié, car l'application ne peut pas changer de répertoire."
MCIERR_SET_DRIVE, 		"Impossible d'accéder au fichier ou au périphérique MCI spécifié, car l'application ne peut pas changer de lecteur."
MCIERR_DEVICE_LENGTH, 		"Spécifiez un nom de périphérique ou de pilote de moins de 79 caractères."
MCIERR_DEVICE_ORD_LENGTH, 	"Spécifiez un nom de périphérique ou de pilote comptant moins de 69 caractères."
MCIERR_NO_INTEGER, 		"La commande spécifiée nécessite un paramètre numérique. Exemple : ""jouer jusqu'à 10"". Entrez ce paramètre."
MCIERR_WAVE_OUTPUTSINUSE, 	"Tous les périphériques audio capables de jouer des fichiers sous ce format sont en cours d'utilisation. Attendez qu'un périphérique audio soit libre, puis essayez à nouveau."
MCIERR_WAVE_SETOUTPUTINUSE, 	"Le périphérique audio de lecture est en cours d'utilisation. Attendez qu'il soit libre, puis essayez à nouveau."
MCIERR_WAVE_INPUTSINUSE, 	"Tous les périphériques audio capables d'enregistrer des fichiers sous ce format sont en cours d'utilisation. Attendez qu'un périphérique audio soit libre, puis essayez à nouveau."
MCIERR_WAVE_SETINPUTINUSE, 	"Le périphérique audio d'enregistrement est en cours d'utilisation. Attendez qu'il soit libre, puis essayez à nouveau."
MCIERR_WAVE_OUTPUTUNSPECIFIED,	"N'importe quel périphérique audio de lecture peut être utilisé."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"N'importe quel périphérique audio d'enregistrement peut être utilisé."
MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"Aucun périphérique audio capable de jouer des fichiers sous le format en cours n'a été installé."
MCIERR_WAVE_SETOUTPUTUNSUITABLE,"Ce périphérique ne parvient pas à reconnaître le format du fichier actuel. Sélectionnez un autre périphérique, puis essayez à nouveau."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"Aucun périphérique audio capable d'enregistrer des fichiers sous le format en cours n'a été installé."
MCIERR_WAVE_SETINPUTUNSUITABLE, "Ce périphérique ne parvient pas à reconnaître le format du fichier actuel. Sélectionnez un autre périphérique, puis essayez à nouveau."
MCIERR_NO_WINDOW, 		"Il n'y pas de fenêtre d'affichage."
MCIERR_CREATEWINDOW, 		"Impossible d'utiliser ou de créer une fenêtre."
MCIERR_FILE_READ, 		"Impossible de lire ce fichier. Assurez-vous qu'il n'a pas été supprimé ou vérifiez votre disque ou votre connexion réseau."
MCIERR_FILE_WRITE, 		"Il est impossible d'écrire des informations dans le fichier spécifié. Vérifiez que vous avez assez d'espace disque ou que vous êtes toujours connecté au réseau."
MCIERR_SEQ_DIV_INCOMPATIBLE, 	"Il est impossible d'utiliser le format horaire pointeur de piste et le format horaire SMPTE en même temps."
MCIERR_SEQ_NOMIDIPRESENT, 	"Le système n'a pas de périphériques MIDI installés. Pour installer un nouveau pilote, double-cliquez sur l'icône Ajout de périphérique dans le Panneau de configuration."
MCIERR_SEQ_PORT_INUSE, 		"Le port MIDI spécifié est déjà utilisé. Attendez qu'il soit libre et essayez à nouveau."
MCIERR_SEQ_PORT_MAPNODEVICE, 	"La configuration actuelle du mappeur MIDI fait référence à un périphérique MIDI non installé sur votre système. Utilisez l'option mappeur MIDI dans le Panneau de Configuration pour changer la configuration."
MCIERR_SEQ_PORT_MISCERROR, 	"Une erreur est survenue sur le port spécifié."
MCIERR_SEQ_PORT_NONEXISTENT, 	"Ce périphérique n'est pas installé. Pour installer un nouveau pilote, double-cliquez sur l'icône Ajout de périphérique dans le Panneau de configuration."
MCIERR_SEQ_PORTUNSPECIFIED, 	"Le système n'a pas spécifié de port MIDI par défaut."
MCIERR_SEQ_TIMER, 		"Tous les temporisateurs multimédia sont en cours d'utilisation par d'autres applications. Quittez une de ces applications et essayez à nouveau."

END
