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

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 geinstalleerd 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 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, 	    "Ongeldige MCI apparaat ID. Gebruik de teruggegeven ID als u dit MCI apparaat opent."
MCIERR_UNRECOGNIZED_KEYWORD, 	"De driver kant de gegeven opdracht parameter niet herkennen."
MCIERR_UNRECOGNIZED_COMMAND,	"De driver kant de gegeven opdracht niet herkennen."
MCIERR_HARDWARE, 		        "ER is een probleem met uw media apparaat. Controleer of 't correct werkt of neem contact op met de leverancier."
MCIERR_INVALID_DEVICE_NAME, 	"The specified device is not open or is not recognized by MCI."
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 in gebruik als alias door deze applicatie. Gebruik een uniek alias."
MCIERR_CANNOT_LOAD_DRIVER, 	    "Er is een onbekende fout ontstaan tijdens het laden van de apparaat driver."
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-string parameter. Lever er dus een aan s.v.p."
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 benodigt een parameter. Vult u die 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 apparaat driver is niet gereed."
MCIERR_INTERNAL, 		        "Tijdens het initialiseren van MCI onstond een probleem. Probeer dit te verhelpen door Windows opnieuw te starten."
MCIERR_DRIVER, 			        "Er is een probleem met de apparaat driver. Daarom is de driver afgesloten. Derhalve een toegangsfout."
MCIERR_CANNOT_USE_ALL, 		    "Kan 'all' niet gebruiken als apparaat naam bij het opgegeven commando."
MCIERR_MULTIPLE, 		        "In meer dan een apparaat zijn fouten opgetreden. Geef elk commando en apparaat apart om te achterhalen welke apparaten fouten veroorzaken."
MCIERR_EXTENSION_NOT_FOUND, 	"Kan het apparaat type niet achterhalen uit de gegeven bestands-extensie."
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 saven. Zorg ervoor dat er voldoende diskruimte 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 geinstalleerd is en dat de apparaatnaam correct is opgegeven."
MCIERR_DEVICE_LOCKED, 		    "Het opgegeven apparaat wordt nu gesloten. Wacht svp. enkele seconden en probeer het dan opnieuw."
MCIERR_DUPLICATE_ALIAS, 	    "Het gegeven alias is al in gebruik door dit programma. Gebruik een unieke alias."
MCIERR_BAD_CONSTANT, 		    "De gegeven parameters is ongeldig bij het gegeven commando."
MCIERR_MUST_USE_SHAREABLE, 	    "De apparaat driver 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 apostroph ontbreekt van de parameter waarde. Geeft u er svp een in."
MCIERR_DUPLICATE_FLAGS, 	    "Een parameter of waarde werd dubbel opgegeven. Doe dat svp maar een keer."
MCIERR_INVALID_FILE, 		    "De gegeven file 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 parameter block werd doorgegeven aan MCI."
MCIERR_UNNAMED_RESOURCE, 	    "Kan niet saven naar bestand zonder naam. Geef een bestandsnaam svp."
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 todat het apparaat is afgesloten en probeer 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 geinstalleerd 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. Svp geef er eentje."
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 compatible WAVE afspeelapparaat kan worden gebruikt."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"Elk compatible WAVE opnameapparaat kan worden gebruikt."
MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"Er is momenteel geen WAVE apparaat geinstalleerd 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 probeert mee af te spelen is niet in staat om het huidige formaat te herkennen."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"Er is momenteel geen WAVE apparaat geinstalleerd 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 probeert mee op te nemen is niet in staat om het huidige formaat te herkennen."
MCIERR_NO_WINDOW, 		        "Er is geen weergave venster."
MCIERR_CREATEWINDOW, 		    "Kon geenvenster maken of gebruiken."
MCIERR_FILE_READ, 		        "Kan het opgegeven bestand niet lezen. Contrleer 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. Contrleer of er voldoende diskruimte is, en controleer de verbinding naar het netwerk."

MCIERR_SEQ_DIV_INCOMPATIBLE, 	"Van tijdformaten 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 geinstalleerd. 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 geinstalleerd. Gebruik de 'MIDI mapper'-optie in het Configuratiescherm om een MIDI apparaat te installeren."
MCIERR_SEQ_PORT_MISCERROR, 	    "Er is error opgetreden bij de opgegeven poort."
MCIERR_SEQ_PORT_NONEXISTENT, 	"Het opgegeven MIDI Mapper apparaat is niet op het systeem geinstalleerd. 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
