/*
 * Copyright 1999 Klaas van Gend
 *
 * 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"

#pragma code_page(65001)

STRINGTABLE LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
BEGIN

/* MMSYS errors */
MMSYSERR_NOERROR, 		"De gespecificeerde opdracht is uitgevoerd."
MMSYSERR_ERROR, 		"Ongedefinieerde fout van buitenaf."
MMSYSERR_BADDEVICEID, 	"Een apparaat-ID werd gebruikt dat buiten de grenzen van uw systeem ligt."
MMSYSERR_NOTENABLED, 	"De driver is niet geactiveerd."
MMSYSERR_ALLOCATED, 	"Het gewenste apparaat is in gebruik. Wacht totdat het vrijkomt en probeer het dan opnieuw."
MMSYSERR_INVALHANDLE, 	"De gespecificeerde apparaatverwijzing is ongeldig."
MMSYSERR_NODRIVER, 		"Er is geen driver geïnstalleerd op uw systeem !\n"
MMSYSERR_NOMEM, 		"Er is niet genoeg geheugen beschikbaar voor deze taak. Sluit enkele programma's af om meer geheugen vrij te krijgen en doe dan nog een poging."
MMSYSERR_NOTSUPPORTED, 	"Deze functie wordt niet ondersteund. Gebruik de 'Capabilities' functie om uit te zoeken welke toepassingen en boodschappen de driver ondersteund."
MMSYSERR_BADERRNUM, 	"Een niet binnen het systeem bekend foutnummer werd gebruikt."
MMSYSERR_INVALFLAG, 	"Een ongeldige vlag werd aan een systeemfunctie gevoerd."
MMSYSERR_INVALPARAM, 	"Een systeemfunctie kreeg een ongeldige parameter te eten."

/* WAVE errors */
WAVERR_BADFORMAT, 		"Het aangegeven formaat wordt niet ondersteund of geconverteerd. Gebruik de 'Capabilities' functie om de ondersteunde formaten te vinden"
WAVERR_STILLPLAYING, 	"Kan deze opdracht niet uitvoeren zolang er afgespeeld wordt. Herstart het apparaat of wacht totdat het apparaat klaar is met spelen."
WAVERR_UNPREPARED, 		"De Wave Header was niet aanwezig. Gebruik de 'Prepare' functie om de Header te genereren en probeer het dan opnieuw."
WAVERR_SYNC, 			"Kan het apparaat niet openen zonder de WAVE_ALLOWSYNC vlag. Zet de vlag en probeer opnieuw."

/* MIDI errors */
MIDIERR_UNPREPARED, 	"De MIDI Header was niet aanwezig. Gebruik de 'Prepare' functie om de Header te genereren en probeer het dan opnieuw."
MIDIERR_STILLPLAYING, 	"Kan deze opdracht niet uitvoeren zolang afgespeeld wordt. Herstart het apparaat of wacht totdat het apparaat klaar is met spelen."
MIDIERR_NOMAP, 			"Er is geen MIDI Map gevonden. Er zou een driver probleem kunnen zijn of de MIDIMAP.CFG file is verminkt of afwezig."
MIDIERR_NOTREADY, 		"De poort is bezig data ter versturen naar het apparaat. Wacht totdat alle data is verstuurd en probeer het dan opnieuw."
MIDIERR_NODEVICE, 		"De huidige MIDI Mapper setup verwijst naar een MIDI-apparaat dat niet op het systeem aanwezig is. Gebruik MIDI Mapper om de instellingen aan te passen."
MIDIERR_INVALIDSETUP, 	"De huidige MIDI setup is beschadigd. Kopieer de originele MIDIMAP.CFG file naar de Windows SYSTEM directory en probeer het daarna weer."

/* MCI errors */
MCIERR_INVALID_DEVICE_ID, 		"Ongeldig MCI-apparaat-ID. Gebruik het teruggegeven ID als u dit MCI-apparaat opent."
MCIERR_UNRECOGNIZED_KEYWORD, 	"De driver herkent de opgegeven opdrachtparameter niet."
MCIERR_UNRECOGNIZED_COMMAND,	"De driver herkent de opgegeven opdracht niet."
MCIERR_HARDWARE, 				"Er is een probleem met uw media-apparaat. Controleer of hij correct werkt of neem contact op met de leverancier."
MCIERR_INVALID_DEVICE_NAME, 	"Het opgegeven apparaat is niet geopend of wordt niet door MCI herkend."
MCIERR_OUT_OF_MEMORY, 		    "Er is niet genoeg geheugen beschikbaar voor deze taak. Sluit enkele programma's af om meer geheugen vrij te krijgen en probeer opnieuw."
MCIERR_DEVICE_OPEN, 			"Een apparaat met die naam is al als alias in gebruik door deze applicatie. Gebruik een unieke alias."
MCIERR_CANNOT_LOAD_DRIVER, 		"Er is een onbekende fout ontstaan tijdens het laden van de apparaatdriver."
MCIERR_MISSING_COMMAND_STRING, 	"Er was geen opdracht opgegeven."
MCIERR_PARAM_OVERFLOW, 		    "De output string was te groot om in de antwoordbuffer te passen. Vergroot de buffer."
MCIERR_MISSING_STRING_ARGUMENT, "De gegeven opdracht vereist een character-stringparameter. Lever er s.v.p. één aan"
MCIERR_BAD_INTEGER, 		    "De gegeven integer is niet geldig bij dit commando."
MCIERR_PARSER_INTERNAL, 	    "De apparaat driver retourneerde een ongeldige waarde. Vraag de fabrikant om een andere driver."
MCIERR_DRIVER_INTERNAL, 	    "Er is een probleem met de apparaat driver. Vraag de fabrikant om een andere driver."
MCIERR_MISSING_PARAMETER, 		"De gegeven opdracht heeft een parameter nodig. Vult u deze a.u.b. in."
MCIERR_UNSUPPORTED_FUNCTION, 	"Het MCI-apparaat dat u gebruikt ondersteund het gegeven commando niet."
MCIERR_FILE_NOT_FOUND, 		    "Kan het opgegeven bestand niet vinden. Zorg ervoor dat het pad en de bestandsnaam correct zijn."
MCIERR_DEVICE_NOT_READY, 		"De apparaatdriver is niet gereed."
MCIERR_INTERNAL, 				"Tijdens het initialiseren van MCI ontstond een probleem. Probeer dit te verhelpen door Windows opnieuw te starten."
MCIERR_DRIVER, 					"Er is een probleem met de apparaatdriver. Daarom is de driver afgesloten. Derhalve een toegangsfout."
MCIERR_CANNOT_USE_ALL, 			"Kan 'all' niet gebruiken als apparaatnaam bij het opgegeven commando."
MCIERR_MULTIPLE, 				"In meer dan één apparaat zijn fouten opgetreden. Geef elk commando en apparaat apart op om te achterhalen welke apparaten fouten veroorzaken."
MCIERR_EXTENSION_NOT_FOUND, 	"Kan het apparaat type niet achterhalen uit de gegeven bestandsextensie."
MCIERR_OUTOFRANGE, 		        "De gegeven parameter is buiten het bereik van het opgegeven commando."
MCIERR_FLAGS_NOT_COMPATIBLE, 	"De gegeven parameters kunnen niet samen gebruikt worden."
MCIERR_FILE_NOT_SAVED, 			"Kan de opgegeven file niet opslaan. Zorg ervoor dat er voldoende schijfruimte is of dat u nog steeds met het netwerk verbonden bent."
MCIERR_DEVICE_TYPE_REQUIRED, 	"Kan het opgegeven apparaat niet vinden. Verzeker u ervan dat het correct geïnstalleerd is en dat de apparaatnaam correct is opgegeven."
MCIERR_DEVICE_LOCKED, 			"Het opgegeven apparaat wordt nu gesloten. Wacht s.v.p. enkele seconden en probeer het dan opnieuw."
MCIERR_DUPLICATE_ALIAS, 	    "De opgegeven alias is al in gebruik door dit programma. Gebruik een unieke alias."
MCIERR_BAD_CONSTANT, 		    "De opgegeven parameter is ongeldig voor dit commando."
MCIERR_MUST_USE_SHAREABLE, 		"De apparaatdriver is al in gebruik. Om het te delen, gebruik de 'deelbaar' parameter met elk 'open' commando."
MCIERR_MISSING_DEVICE_NAME, 	"Het gegeven commando vereist een alias, bestand, driver of apparaatnaam. Geeft u er svp een in."
MCIERR_BAD_TIME_FORMAT, 	    "De gegeven waarde voor het tijdsformaat is ongeldig. Zoek in de MCI handleidingen naar geldige formaten."
MCIERR_NO_CLOSING_QUOTE, 		"Een afsluitende dubbele apostrof ontbreekt van de parameter waarde. Geeft u er s.v.p. één op."
MCIERR_DUPLICATE_FLAGS, 		"Een parameter of waarde werd dubbel opgegeven. Doe dat s.v.p. maar één keer."
MCIERR_INVALID_FILE, 			"Het gegeven bestand kan niet op het MCI-apparaat worden afgespeeld. Het bestand is misschien corrupt of niet in het juiste formaat."
MCIERR_NULL_PARAMETER_BLOCK, 	"Een leeg parameterblok werd doorgegeven aan MCI."
MCIERR_UNNAMED_RESOURCE, 		"Kan een bestand zonder naam niet opslaan. Geef een bestandsnaam s.v.p."
MCIERR_NEW_REQUIRES_ALIAS, 	    "U moet een alias opgeven als u de 'new' parameter gebruikt."
MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Kan de 'notify' vlag niet gebruiken met automatisch geopende apparaten."
MCIERR_NO_ELEMENT_ALLOWED, 	    "Kan voor het huidige apparaat geen bestandsnaam gebruiken."
MCIERR_NONAPPLICABLE_FUNCTION, 	"Kan de opgegeven commando's niet in deze volgorde uitvoeren. Corrigeer de commandoreeks en probeer opnieuw."
MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Kan het opgegeven commando niet uitvoeren op een automatisch geopend apparaat. Wacht totdat het apparaat is afgesloten en probeer het dan opnieuw."
MCIERR_FILENAME_REQUIRED, 	    "De bestandsnaam is ongeldig. Zorg ervoor dat de bestandsnaam aan het 8.3 formaat voldoet."
MCIERR_EXTRA_CHARACTERS, 	    "Het is niet mogelijk om extra lettertekens toe te voegen na een string in aanhalingstekens."
MCIERR_DEVICE_NOT_INSTALLED, 	"Het opgegeven apparaat is niet geïnstalleerd op het systeem. Gebruik de 'Drivers'-optie in het Configuratiescherm om het apparaat te installeren."
MCIERR_GET_CD, 					"Kan het opgegeven bestand of MCI-apparaat niet openen. Probeer de directory te wijzigen of de computer opnieuw te starten."
MCIERR_SET_CD, 					"Kan het opgegeven bestand of MCI-apparaat niet openen omdat de applicatie de directory niet kan wijzigen."
MCIERR_SET_DRIVE, 				"Kan het opgegeven bestand of MCI-apparaat niet openen omdat de applicatie de directory niet kan wijzigen."
MCIERR_DEVICE_LENGTH, 		    "Geef een apparaat of driver naam op met minder dan 79 lettertekens."
MCIERR_DEVICE_ORD_LENGTH, 	    "Geef een apparaat of driver naam op met minder dan 79 lettertekens."
MCIERR_NO_INTEGER, 				"Het gegeven commando vereist een integer parameter. Geef er s.v.p. één."
MCIERR_WAVE_OUTPUTSINUSE, 		"Alle WAVE-apparaten die in staat zijn om een bestand in dit formaat af te spelen, zijn in gebruik. Wacht totdat een WAVE-apparaat vrij is en probeer het dan opnieuw."
MCIERR_WAVE_SETOUTPUTINUSE, 	"Kan het huidige WAVE-apparaat niet gebruiken omdat het in gebruik is. Wacht totdat het apparaat vrij is en probeer het dan opnieuw."
MCIERR_WAVE_INPUTSINUSE, 		"Alle WAVE-apparaten die in staat zijn om een bestand in dit formaat op te nemen, zijn in gebruik. Wacht totdat een WAVE-apparaat vrij is en probeer het dan opnieuw."
MCIERR_WAVE_SETINPUTINUSE, 	    "Kan het huidige WAVE-apparaat niet gebruiken om op te nemen omdat het in gebruik is. Wacht totdat het apparaat vrij is en probeer het dan opnieuw."
MCIERR_WAVE_OUTPUTUNSPECIFIED,	"Elk compatibel WAVE-afspeelapparaat kan worden gebruikt."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"Elk compatibel WAVE-opnameapparaat kan worden gebruikt."
MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"Er is momenteel geen WAVE-apparaat geïnstalleerd dat bestanden in het huidige formaat kan afspelen. Gebruik de 'Drivers' optie om zo'n WAVE-apparaat te installeren."
MCIERR_WAVE_SETOUTPUTUNSUITABLE,"Het apparaat waar u mee probeert af te spelen is niet in staat om het huidige formaat te herkennen."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"Er is momenteel geen WAVE-apparaat geïnstalleerd dat bestanden in het huidige formaat kan opnemen. Gebruik de 'Drivers' optie om zo'n WAVE-apparaat te installeren."
MCIERR_WAVE_SETINPUTUNSUITABLE, "Het apparaat waar u mee probeert op te nemen is niet in staat om het huidige formaat te herkennen."
MCIERR_NO_WINDOW, 		        "Er is geen weergave venster."
MCIERR_CREATEWINDOW, 		    "Kon geen venster maken of gebruiken."
MCIERR_FILE_READ, 				"Kan het opgegeven bestand niet lezen. Controleer of het bestand nog steeds bestaat, en controleer de verbinding naar de disk of het netwerk."
MCIERR_FILE_WRITE, 				"Kan het opgegeven bestand niet schrijven. Controleer of er voldoende schijfruimte is, en controleer de verbinding met het netwerk."

MCIERR_SEQ_DIV_INCOMPATIBLE, 	"Van tijdsformaten van 'song pointer' en SMPTE kan er maar een in gebruik zijn. U kunt ze niet beide tegelijkertijd gebruiken."
MCIERR_SEQ_NOMIDIPRESENT, 		"Het systeem heeft geen MIDI apparaten geïnstalleerd. Gebruik de 'Drivers'-optie in het Configuratiescherm om een MIDI-apparaat te installeren."
MCIERR_SEQ_PORT_INUSE, 		    "De opgegeven MIDI poort is al in gebruik. Wacht totdat deze vrij is en probeer dan opnieuw."
MCIERR_SEQ_PORT_MAPNODEVICE, 	"De huidige MIDI Mapper setup verwijst naar een MIDI-apparaat dat niet op het systeem is geïnstalleerd. Gebruik de 'MIDI mapper'-optie in het Configuratiescherm om een MIDI-apparaat te installeren."
MCIERR_SEQ_PORT_MISCERROR, 	    "Er is een fout opgetreden bij de opgegeven poort."
MCIERR_SEQ_PORT_NONEXISTENT, 	"Het opgegeven MIDI Mapper apparaat is niet op het systeem geïnstalleerd. Gebruik de 'MIDI mapper'-optie in het Configuratiescherm om het te installeren."
MCIERR_SEQ_PORTUNSPECIFIED, 	"Het systeem heeft momenteel geen aangewezen MIDI poort."
MCIERR_SEQ_TIMER, 		        "Alle multimedia timers zijn in gebruik door andere applicaties. Sluit een van deze applicaties, probeer het dan opnieuw."

END
