/*
 * Copyright 2004 Henning Gerhardt
 *
 * 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_GERMAN, SUBLANG_NEUTRAL

#pragma code_page(65001)

STRINGTABLE
BEGIN

/* MMSYS errors */
MMSYSERR_NOERROR, 		"Der angeforderte Befehl wurde ausgeführt."
MMSYSERR_ERROR, 		"Unbekannter externer Fehler."
MMSYSERR_BADDEVICEID, 		"Die derzeit verwendete Gerätekennung ist außerhalb des zulässigen Bereichs für Ihr System."
MMSYSERR_NOTENABLED, 		"Der Treiber konnte nicht gestartet werden."
MMSYSERR_ALLOCATED, 		"Das Gerät wird bereits verwendet. Warten Sie, bis es freigegeben ist, und versuchen Sie es erneut."
MMSYSERR_INVALHANDLE, 		"Das angegebende Gerätehandle ist ungültig."
MMSYSERR_NODRIVER, 		"Es ist kein Treiber auf Ihrem System installiert !\n"
MMSYSERR_NOMEM, 		"Nicht genügend Speicher für diesen Befehl. Beenden Sie eine oder mehrere Anwendungen, und versuchen Sie es erneut."
MMSYSERR_NOTSUPPORTED,		"Diese Funktion wird nicht unterstützt. Benutzen Sie die Funktion 'Capabilities', um zu ermitteln, welche Funktion dieser Treiber unterstützt."
MMSYSERR_BADERRNUM, 		"Die angegebene Fehlernummer ist für dieses System nicht definiert."
MMSYSERR_INVALFLAG, 		"Ein ungültiges Flag wurde an eine Systemfunktion übergeben."
MMSYSERR_INVALPARAM, 		"Ein ungültiger Parameter wurde an eine Systemfunktion übergeben."

/* WAVE errors */
WAVERR_BADFORMAT, 		"Dieses Format wird nicht unterstützt oder kann nicht übersetzt werden. Benutzen Sie die Funktion 'Capabilities', um die unterstützten Formate zu ermitteln."
WAVERR_STILLPLAYING, 		"Die Funktion kann nicht durchgeführt werden, wenn noch Mediendateien wiedergegeben werden. Starten Sie das Gerät neu, oder warten Sie bis keine Daten mehr wiedergegeben werden."
WAVERR_UNPREPARED, 		"Der WAVE - Header wurde nicht vorbereitet. Benutzen Sie die Funktion 'Prepare' zum Vorbereiten des Headers und versuchen Sie es erneut."
WAVERR_SYNC, 			"Das Gerät kann nicht ohne das WAVE_ALLOWSYNC - Flag geöffnet werden. Benutzen Sie dieses Flag und versuchen Sie es erneut."

/* MIDI errors */
MIDIERR_UNPREPARED, 		"Der MIDI - Header wurde nicht vorbereitet. Benutzen Sie die Funktion 'Prepare' zum Vorbereiten des Headers und versuchen Sie es erneut."
MIDIERR_STILLPLAYING, 		"Die Funktion kann nicht durchgeführt werden, wenn noch Mediendateien wiedergegeben werden. Starten Sie das Gerät neu, oder warten Sie bis keine Daten mehr wiedergegeben werden."
MIDIERR_NOMAP, 		"Es wurde keine MIDI - Map gefunden. Es könnte ein Problem mit dem Treiber geben oder die Datei MIDIMAP.CFG fehlt oder ist beschädigt."
MIDIERR_NOTREADY, 		"Der Anschluss ist mit der Datenausgabe belegt. Warten Sie, bis die Daten übertragen wurden und versuchen Sie es erneut."
MIDIERR_NODEVICE, 		"Das gegenwärtige MIDI - Mapper Setup benutzt ein MIDI - Gerät, das nicht installiert ist. Benutzen Sie den MIDI - Mapper, um das Setup zu ändern."
MIDIERR_INVALIDSETUP, 		"Das aktuelle MIDI Setup ist beschädigt. Kopieren sie die ursprüngliche Datei MIDIMAP.CFG ind das Windows - Systemverzeichnis und versuchen Sie es erneut."

/* MCI errors */
MCIERR_INVALID_DEVICE_ID, 	"Ungültige MCI - Gerätekennung. Benutzen Sie die zurückgegebene ID, wenn Sie das MCI - Gerät öffnen."
MCIERR_UNRECOGNIZED_KEYWORD, 	"Der Treiber kann den angegebenen Befehlsparameter nicht anerkennen."
MCIERR_UNRECOGNIZED_COMMAND,	"Der Treiber kann den angegebenen Befehl nicht anerkennen."
MCIERR_HARDWARE, 		"Es gibt ein Problem mit Ihrem Media - Gerät. Stellen Sie sicher, dass es richtig arbeitet oder fragen Sie den Gerätehersteller."
MCIERR_INVALID_DEVICE_NAME, 	"Das angegebene Gerät ist nicht geöffnet oder wird vom MCI nicht erkannt."
MCIERR_OUT_OF_MEMORY, 		"Nicht genügend Speicher für den angeforderten Vorgang.\nBeenden Sie eine oder mehrere Anwendungen, und versuchen Sie es erneut."
MCIERR_DEVICE_OPEN, 		"Der Gerätename wird von dieser Anwendung bereits als Alias benutzt. Benutzen Sie einen eindeutigen Alias"
MCIERR_CANNOT_LOAD_DRIVER, 	"Es gibt ein unbekanntes Problem beim Laden des angegebenen Gerätetreibers."
MCIERR_MISSING_COMMAND_STRING, "Kein Befehl wurde angegeben."
MCIERR_PARAM_OVERFLOW, 	"Die Ausgabezeichenkette war zu lang für den Rückgabepuffer. Erhöhen Sie die Puffergröße."
MCIERR_MISSING_STRING_ARGUMENT, "Der Befehl erfordert einen Zeichenkettenparameter. Bitte stellen Sie einen bereit."
MCIERR_BAD_INTEGER, 		"Die Angabe einer ganzen Zahl ist für diesen Befehl ungültig."
MCIERR_PARSER_INTERNAL, 	"Der Gerätetreiber hat einen ungültigen Rückgabewert geliefert. Fragen Sie den Gerätehersteller nach einem neuen Treiber."
MCIERR_DRIVER_INTERNAL, 	"Ein Treiberfehler ist aufgetreten. Fragen Sie den Gerätehersteller nach einem neuen Treiber."
MCIERR_MISSING_PARAMETER, 	"Der angegebene Befehl erfordert einen Parameter. Bitte geben Sie einen an."
MCIERR_UNSUPPORTED_FUNCTION, 	"Das verwendete MCI - Gerät unterstützt diesen Befehl nicht."
MCIERR_FILE_NOT_FOUND, 	"Die angeforderte Datei wurde nicht gefunden. Stellen Sie sicher, dass Pfad- und Dateiname richtig sind."
MCIERR_DEVICE_NOT_READY, 	"Der Gerätetreiber ist nicht bereit."
MCIERR_INTERNAL, 		"Ein Fehler ereignete sich beim Starten von MCI. Versuche Windows neu zu starten."
MCIERR_DRIVER, 		"Es gibt ein Problem mit dem Gerätetreiber. Der Treiber wird geschlossen. Ein Fehler kann nicht gemeldet werden."
MCIERR_CANNOT_USE_ALL, 	"Der Gerätename 'all' ist nicht in diesem Befehl erlaubt."
MCIERR_MULTIPLE, 		"Es traten Fehler in mehr als einem Gerät auf. Geben Sie jeden Befehl für jedes Gerät einzeln an, um zu bestimmen, welches Gerät die Fehler verursachte."
MCIERR_EXTENSION_NOT_FOUND, 	"Kann keinen Gerätetyp aus der angegebenen Dateinamenerweiterung ermitteln."
MCIERR_OUTOFRANGE, 		"Der angegebene Parameter liegt außerhalb des zulässigen Bereichs für diesen Befehl."
MCIERR_FLAGS_NOT_COMPATIBLE, 	"Die Parameter können nicht zusammen verwendet werden."
MCIERR_FILE_NOT_SAVED, 	"Die Datei kann nicht gespeichert werden. Stellen Sie sicher, dass genügend Platz auf dem Datenträger verfügbar ist oder Ihre Netzwerkverbindung noch besteht."
MCIERR_DEVICE_TYPE_REQUIRED, 	"Das angegebene Gerät wurde nicht gefunden. Stellen Sie sicher, dass es installiert ist oder der Gerätename richtig geschrieben ist."
MCIERR_DEVICE_LOCKED, 		"Das angegebene Gerät wird geschlossen. Warten Sie einige Sekunden, und versuchen Sie es erneut."
MCIERR_DUPLICATE_ALIAS, 	"Der angegebene Alias wird von dieser Anwendung bereits verwendet. Wählen Sie einen eindeutigen Alias."
MCIERR_BAD_CONSTANT, 		"Der angegebene Parameter für diesen Befehl ungültig."
MCIERR_MUST_USE_SHAREABLE, 	"Das Gerät ist bereits geöffnet. Benutzen Sie den 'shareable' - Parameter bei jedem 'open' - Befehl."
MCIERR_MISSING_DEVICE_NAME, 	"Der angegebene Befehl erfordert einen Alias-,  Datei-, Treiber- oder Gerätenamen. Bitte geben Sie einen an."
MCIERR_BAD_TIME_FORMAT, 	"Der angegebene Wert für das Zeitformat ist ungültig. Lesen Sie in der MCI - Dokumentation nach gültigen Formaten nach."
MCIERR_NO_CLOSING_QUOTE, 	"Ein abschließendes Anführungszeichen fehlt im Parameter. Bitte geben Sie eins an."
MCIERR_DUPLICATE_FLAGS, 	"Ein Parameter oder Wert wurde zweimal angegeben. Geben Sie in nur einzeln an."
MCIERR_INVALID_FILE, 		"Die angegebene Datei kann auf dem MCI - Gerät nicht wiedergegeben werden. Die Datei ist wahrscheinlich beschädigt oder in einem ungültigen Format."
MCIERR_NULL_PARAMETER_BLOCK, 	"Der Parameterblock, der zu MCI übergeben wurde, war NULL."
MCIERR_UNNAMED_RESOURCE, 	"Es kann keine unbenannte Datei gespeichert werden. Geben Sie einen Dateinamen an."
MCIERR_NEW_REQUIRES_ALIAS, 	"Sie müssen einen Alias mit dem 'new' - Parameter angeben."
MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Das 'notify' Flag ist unzulässig für selbstöffnende Geräte."
MCIERR_NO_ELEMENT_ALLOWED, 	"Ein Dateiname kann mit diesem Gerät nicht verwendet werden."
MCIERR_NONAPPLICABLE_FUNCTION, "Die Befehle sind in der angegebenen Reihenfolge nicht ausführbar. Ändern Sie die Reihenfolge, und versuchen Sie es erneut."
MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Der Befehl kann nicht auf ein selbstöffnedes Gerät angewandt werden. Warten Sie, bis das Gerät geschlossen wurde und versuchen Sie es erneut."
MCIERR_FILENAME_REQUIRED, 	"Der Dateiname ist ungültig. Der Dateiname muss aus maximal 8 Zeichen, gefolgt von einem Punkt und einer Dateinamenerweiterung bestehen."
MCIERR_EXTRA_CHARACTERS, 	"Zusätzliche Zeichen nach einer Zeichenkette mit Anführungszeichen sind nicht erlaubt."
MCIERR_DEVICE_NOT_INSTALLED, 	"Das angegebene Gerät ist nicht auf Ihren System installiert. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um das Gerät zu installieren."
MCIERR_GET_CD, 		"Auf die angegebene Datei oder das MCI - Gerät kann nicht zugegriffen werden. Versuchen Sie, das Verzeichnis zu wechseln oder das System neu zu starten."
MCIERR_SET_CD, 		"Auf die angegebene Datei oder das MCI - Gerät kann nicht zugegriffen werden, weil die Anwendung nicht das Verzeichnis wechseln kann."
MCIERR_SET_DRIVE, 		"Auf die angegebene Datei oder das MCI - Gerät kann nicht zugegriffen werden, weil die Anwendung nicht das Laufwerk wechseln kann."
MCIERR_DEVICE_LENGTH, 		"Geben Sie einen Geräte- oder Treibernamen mit weniger als 79 Zeichen an."
MCIERR_DEVICE_ORD_LENGTH, 	"Geben Sie einen Geräte- oder Treibernamen mit weniger als 69 Zeichen an."
MCIERR_NO_INTEGER, 		"Der angegebene Befehl erfordert einen ganzzahligen Parameter. Bitte geben Sie einen an."
MCIERR_WAVE_OUTPUTSINUSE, 	"Alle Waveformgeräte, die diese Dateien in dem gegenwärtigen Format wiedergeben könnten, sind in Benutzung. Warten Sie, bis ein Waveformgerät frei ist, und wiederholen Sie den Vorgang."
MCIERR_WAVE_SETOUTPUTINUSE, 	"Das gegenwärtige Waveformgerät kann nicht wiedergeben, weil es gerade benutzt wird. Warten Sie, bis das Gerät frei ist, und wiederholen Sie den Vorgang."
MCIERR_WAVE_INPUTSINUSE, 	"Es ist kein Waveformgerät frei, das das gegenwärtige Format aufzeichnen könnte. Warten Sie, bis ein Waveformgerät frei ist, und wiederholen Sie den Vorgang."
MCIERR_WAVE_SETINPUTINUSE, 	"Das gegenwärtige Waveformgerät kann nicht aufzeichnen, weil es gerade verwendet wird. Warten Sie, bis das Gerät frei ist, und wiederholen Sie den Vorgang."
MCIERR_WAVE_OUTPUTUNSPECIFIED,	"Jedes kompatible Waveform - Wiedergabegerät kann verwendet werden."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"Jedes kompatible Waveform - Aufnahmegerät kann verwendet werden."
MCIERR_WAVE_OUTPUTSUNSUITABLE, "Es ist kein Waveformgerät installiert, das Dateien im aktuellen Format wiedergeben kann. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um ein Waveformgerät zu installieren."
MCIERR_WAVE_SETOUTPUTUNSUITABLE,"Das Wiedergabegerät erkennt das gegenwärtige Dateiformat nicht."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"Es ist kein Waveformgerät installiert, das Dateien im aktuellen Format aufnehmen kann. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um ein Waveformgerät zu installieren."
MCIERR_WAVE_SETINPUTUNSUITABLE, "Das Gerät, mit dem Sie aufzeichnen möchten, erkennt das gegenwärtige Dateiformat nicht."
MCIERR_NO_WINDOW, 		"Es gibt kein Anzeigefenster."
MCIERR_CREATEWINDOW, 		"Fenster konnte nicht erzeugt oder verwendet werden."
MCIERR_FILE_READ, 		"Die Datei konnte nicht gelesen werden. Stellen Sie sicher, dass die Datei existiert oder Ihre Netzwerkverbindung noch besteht."
MCIERR_FILE_WRITE, 		"Die Datei konnte nicht geschrieben werden. Stellen Sie sicher, dass genügend Platz auf dem Datenträger verfügbar ist, oder dass die Netzwerkverbindung noch besteht."
MCIERR_SEQ_DIV_INCOMPATIBLE, 	"Die Zeitformate von ""song pointer"" und SMPTE schliessen sich gegenseitig aus. Sie können sie nicht zusammen verwenden."
MCIERR_SEQ_NOMIDIPRESENT, 	"Es sind keine MIDI - Geräte auf dem System installiert. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um einen MIDI - Treiber zu installieren."
MCIERR_SEQ_PORT_INUSE, 	"Der angegebene MIDI - Anschluss wird bereits verwendet. Warten Sie bis der Anschluss frei ist, und versuchen Sie es erneut."
MCIERR_SEQ_PORT_MAPNODEVICE, 	"Das gegenwärtige MIDI - Mapper Setup benutzt ein MIDI - Gerät, dass nicht auf Ihren System installiert ist. Benutzen Sie den MIDI - Mapper in der Systemsteuerung, um das Setup zu ändern."
MCIERR_SEQ_PORT_MISCERROR, 	"Beim Benutzen des angegebenen Anschlusses trat ein Fehler auf."
MCIERR_SEQ_PORT_NONEXISTENT, 	"Es sind keine angegebnen MIDI - Geräte auf dem System installiert. Benutzen Sie die Hardwareerkennung in der Systemsteuerung, um ein MIDI - Gerät zu installieren."
MCIERR_SEQ_PORTUNSPECIFIED, 	"Es gibt keinen aktuellen MIDI - Anschluss auf dem System."
MCIERR_SEQ_TIMER, 		"Alle Multimediazeitgeber werden von anderen Anwendungen verwendet. Beenden Sie eine dieser Anwendungen, und versuchen Sie es erneut."

END
