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

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

#pragma code_page(65001)

STRINGTABLE
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
