/*
 * Copyright 1999 Eric Pouech
 * Copyright 2003 Ivan Leo Puoti
 * Copyright 2010 Luca Bennati
 *
 * 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)

STRINGTABLE LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
BEGIN

/* MMSYS errors */
MMSYSERR_NOERROR, 		"Il comando specificato è stato eseguito."
MMSYSERR_ERROR, 		"Errore esterno non definito."
MMSYSERR_BADDEVICEID, 		"È stato usato l'ID di un dispositivo che è fuori dalla portata del sistema."
MMSYSERR_NOTENABLED, 		"Il driver non era abilitato."
MMSYSERR_ALLOCATED, 		"Il dispositivo specificato è già in uso. Attendere che sia nuovamente disponibile e riprovare."
MMSYSERR_INVALHANDLE, 		"L'handle del dispositivo specificato non è valido."
MMSYSERR_NODRIVER, 		"Non è stato installato nessun driver nel sistema !\n"
MMSYSERR_NOMEM, 		"Memoria insufficente per eseguire questa operazione. Chiudere una o più applicazioni per aumentare la memoria disponibile, e riprovare."
MMSYSERR_NOTSUPPORTED, 		"Questa funzione non è supportata. Usare la funzione Capabilities per determinare quali funzioni e messaggi sono supportati dal driver."
MMSYSERR_BADERRNUM, 		"È stato specificato un numero di errore non definito dal sistema."
MMSYSERR_INVALFLAG, 		"Una flag non valida è stata passata a una funzione di sistema."
MMSYSERR_INVALPARAM, 		"Un parametro non valido è stato pasato a una funzione di sistema."

/* WAVE errors */
WAVERR_BADFORMAT, 		"Il formato specificato non è supportato o non può essere tradotto. Usare la funzione Capabilities per determinare le funzioni supportate"
WAVERR_STILLPLAYING, 		"Impossibile effettuare questa operazione mentre il supporto di dati è ancora in esecuzione. Reinizializzare il dispositivo o attendere la fine dell'esecuzione."
WAVERR_UNPREPARED, 		"L'header wave non è stato preparato. Usare la funzione Prepare per preparare l'header e riprovare."
WAVERR_SYNC, 			"Impossibile aprire il dispositivo senza usare la flag WAVE_ALLOWSYNC. Usare la flag e riprovare."

/* MIDI errors */
MIDIERR_UNPREPARED, 		"L'header MIDI non è stato preparato. Usare la funzione Prepare per preparare l'header e riprovare."
MIDIERR_STILLPLAYING, 		"Impossibile effettuare questa operazione mentre il supporto di dati è ancora in esecuzione. Reinizializzare il dispositivo o attendere la fine dell'esecuzione."
MIDIERR_NOMAP, 			"Non è stata trovata una mappa MIDI. Ci potrebbe essere un problema con il driver o il file MIDIMAP.CFG potrebbe essere danneggiato o mancante."
MIDIERR_NOTREADY, 		"La porta sta trasmettendo dati al dispositivo. Attendere la fine della trasmissione dati e riprovare."
MIDIERR_NODEVICE, 		"La configurazione attuale del Mapper MIDI si riferisce a un dispositivo MIDI che non è presente nel sistema. Usare il Mapper MIDI per modificare la configurazione."
MIDIERR_INVALIDSETUP, 		"La configurazione MIDI attuale è danneggiata. Copiare l'originale del file MIDIMAP.CFG nella directory SYSTEM di Windows e riprovare."

/* MCI errors */
MCIERR_INVALID_DEVICE_ID, 	"ID del dispositivo MCI non valido. Usare l'ID restituito quando il dispositivo MCI è stato inizializzato."
MCIERR_UNRECOGNIZED_KEYWORD, 	"Il driver non riconosce il parametro specificato del comando."
MCIERR_UNRECOGNIZED_COMMAND,	"Il driver non riconosce il comando specificato."
MCIERR_HARDWARE, 		"C'è un problema con il dispositivo multimediale. Controllare che funzioni correttamente o contattare il produttore."
MCIERR_INVALID_DEVICE_NAME, 	"Il dispositivo specificato non è inizializzato o non è riconosciuto da MCI."
MCIERR_OUT_OF_MEMORY, 		"Memoria insufficente per eseguire questa operazione.\nChiudere una o più applicazioni per aumentare la memoria disponibile e riprovare."
MCIERR_DEVICE_OPEN, 		"Il nome del dispositivo è già in uso come alias da parte di questa applicazione. Usare un alias univoco."
MCIERR_CANNOT_LOAD_DRIVER, 	"Si è verificato un problema non rilevabile nel caricamento del driver specificato."
MCIERR_MISSING_COMMAND_STRING, 	"Non è stato specificato nessun comando."
MCIERR_PARAM_OVERFLOW, 		"La stringa di output è troppo grande per entrare nel buffer di ritorno. Aumentare la dimensione del buffer."
MCIERR_MISSING_STRING_ARGUMENT, "Il comando specificato richiede un parametro che sia una stringa di caratteri. Fornirne uno."
MCIERR_BAD_INTEGER, 		"Il numero intero specificato non è valido per questo comando."
MCIERR_PARSER_INTERNAL, 	"Il driver ha restituito un tipo non valido. Contattare il produttore del dispositivo per ottenere un nuovo driver."
MCIERR_DRIVER_INTERNAL, 	"C'è un problema con il driver. Contattare il produttore del dispositivo per ottenere un nuovo driver."
MCIERR_MISSING_PARAMETER, 	"Il comando specificato richiede un parametro. Fornirne uno."
MCIERR_UNSUPPORTED_FUNCTION, 	"Il dispositivo MCI in uso non supporta il comando specificato."
MCIERR_FILE_NOT_FOUND, 		"Il file specificato non è stato trovato. Controllare che l'indirizzo e il nome del file siano corretti."
MCIERR_DEVICE_NOT_READY, 	"Il driver del dispositivo non è pronto."
MCIERR_INTERNAL, 		"Si è verificato un problema nell'inizializzazione di MCI. Provare a riavviare Windows."
MCIERR_DRIVER, 			"Si è verificato un errore nel driver. Il driver è stato chiuso. Errore non accessibile."
MCIERR_CANNOT_USE_ALL, 		"Non è possibile usare 'all' come nome del dispositivo con il comando specificato."
MCIERR_MULTIPLE, 		"Si sono verificati degli errori in più di un dispositivo. Specificare ogni comando e dispositivo separatamente per determinare quale dispositivo ha causato l'errore"
MCIERR_EXTENSION_NOT_FOUND, 	"Impossibile determinare il tipo di dispositivo dall'estensione data."
MCIERR_OUTOFRANGE, 		"Il parametro specificato è fuori dalla portata del comando specificato."
MCIERR_FLAGS_NOT_COMPATIBLE, 	"I parametri specificati non possono essere usati insieme."
MCIERR_FILE_NOT_SAVED, 		"Impossibile salvare il file specificato. Controllare di avere abbastanza spazio libero o di essere ancora connessi alla rete."
MCIERR_DEVICE_TYPE_REQUIRED, 	"Impossibile trovare il dispositivo specificato. Controllare che sia installato e che il nome sia digitato correttamente."
MCIERR_DEVICE_LOCKED, 		"Il dispositivo specificato verrà chiuso. Attendere alcuni secondi e riprovare."
MCIERR_DUPLICATE_ALIAS, 	"L'alias specificato è già in uso da parte di questa applicazione. Usare un alias univoco."
MCIERR_BAD_CONSTANT, 		"Il parametro specificato non è valido per questo comando."
MCIERR_MUST_USE_SHAREABLE, 	"Il driver è già in uso. Per condividerlo, usare il parametro  'shareable' con ogni comando 'open'."
MCIERR_MISSING_DEVICE_NAME, 	"Il comando specificato richiede un alias, un file, un driver o il nome di un dispositivo. Fornirne uno."
MCIERR_BAD_TIME_FORMAT, 	"Il valore specificato non è valido per il formato dell'orario. Consultare la documentazione dell'MCI per i formati validi."
MCIERR_NO_CLOSING_QUOTE, 	"Manca un doppio apice di chiusura dal valore del parametro. Fornirne uno."
MCIERR_DUPLICATE_FLAGS, 	"Un valore o un parametro è stato specificato due volte. Specificarlo solo una volta."
MCIERR_INVALID_FILE, 		"Il file specificato non può essere aperto con il dispositivo MCI specificato. Il file potrebbe essere daneggiato o in un formato errato."
MCIERR_NULL_PARAMETER_BLOCK, 	"Un null parameter block è stato passato a MCI."
MCIERR_UNNAMED_RESOURCE, 	"Non è possibile salvare un file senza nome. Fornire un nome al file."
MCIERR_NEW_REQUIRES_ALIAS, 	"È necessario specificare un alias quando si usa il parametro 'new'."
MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Impossibile usare il flag 'notify' con dispositivi auto-inizializzati."
MCIERR_NO_ELEMENT_ALLOWED, 	"Impossibile usare un nome file con il dispositivo specificato."
MCIERR_NONAPPLICABLE_FUNCTION, 	"Impossibile eseguire i comandi nell'ordine specificato. Correggere la sequenza e riprovare."
MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Impossibile eseguire il comando specificato con un dispositivo auto-inizializzato. Attendere la chiusura del dispositivo e riprovare."
MCIERR_FILENAME_REQUIRED, 	"Il nome del file non è valido. Controllare che il nome del file non sia più lungo di 8 caratteri, seguito da un punto e un'estensione."
MCIERR_EXTRA_CHARACTERS, 	"Impossibile specificare altri caratteri dopo una stringa compresa tra apici."
MCIERR_DEVICE_NOT_INSTALLED, 	"Il dispositivo specificato non è installato nel sistema. Usare l'opzione Drivers nel Pannello di Controllo per installare il dispositivo."
MCIERR_GET_CD, 			"Impossibile accedere al file o dispositivo MCI specificato. Provare a cambiare la cartella o riavviare il computer."
MCIERR_SET_CD, 			"Impossibile accedere al file o dispositivo MCI specificato perché l'applicazione non può cambiare cartella."
MCIERR_SET_DRIVE, 		"Impossibile accedere al file o dispositivo MCI specificato perché l'applicazione non può cambiare unità."
MCIERR_DEVICE_LENGTH, 		"Specificare un driver o dispositivo con meno di 79 caratteri."
MCIERR_DEVICE_ORD_LENGTH, 	"Specificare un driver o dispositivo con meno di 69 caratteri."
MCIERR_NO_INTEGER, 		"Il comando specificato richiede un numero intero come parametro. Fornirne uno."
MCIERR_WAVE_OUTPUTSINUSE, 	"Tutti i dispositivi wave che possono leggere il file nel formato attuale sono in uso. Attendere che un dispositivo wave sia libero e riprovare."
MCIERR_WAVE_SETOUTPUTINUSE, 	"Impossibile impostare il dispositivo wave attuale per il play back perché in uso. Attendere che il dispositivo sia libero e riprovare."
MCIERR_WAVE_INPUTSINUSE, 	"Tutti i dispositivi wave che possono registrare nel formato attuale sono in uso. Attendere che un dispositivo wave sia disponibile e riprovare."
MCIERR_WAVE_SETINPUTINUSE, 	"Impossibile impostare il dispositivo per registrare perché in uso. Attendere che il dispositivo sia disponibile e riprovare."
MCIERR_WAVE_OUTPUTUNSPECIFIED,	"Può essere usato qualunque dispositivo compatibile waveform per la riproduzione."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"Può essere usato qualunque dispositivo compatibile waveform per la registrazione."
MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"Nessun dispositivo wave installato può riprodurre i file nel formato attuale. Usare l'opzione Drivers per installare un dispositivo wave."
MCIERR_WAVE_SETOUTPUTUNSUITABLE,"Il dispositivo che si sta usando per riprodurre il file non riconosce il formato del file attuale."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"Nessun dispositivo wave installato può registrare dei file nel formato attuale. Usare l'opzione Drivers per installare un dispositivo wave."
MCIERR_WAVE_SETINPUTUNSUITABLE, "Il dispositivo che si sta usando per registrare non riconosce il formato del file attuale."
MCIERR_NO_WINDOW, 		"Non c'è nessuna finestra di visualizzazione."
MCIERR_CREATEWINDOW, 		"Impossibile usare o creare la finestra."
MCIERR_FILE_READ, 		"Impossibile leggere il file specificato. Assicurarsi che il file sia ancora presente o controllare il disco o la connessione di rete."
MCIERR_FILE_WRITE, 		"Impossibile scrivere il file specificato. Controllare di avere spazio libero sufficiente sul disco o di essere ancora connessi alla rete."
MCIERR_SEQ_DIV_INCOMPATIBLE, 	"I formati dell'orario del ""song pointer"" e SMPTE si escludono vicendevolmente. Non si possono usare insieme."
MCIERR_SEQ_NOMIDIPRESENT, 	"Nel sistema non sono installati dispositivi MIDI. Usare l'opzione Drivers dal Pannello di Controllo per installare un driver MIDI."
MCIERR_SEQ_PORT_INUSE, 		"La porta MIDI specificata è già in uso. Attendere che sia libera e riprovare."
MCIERR_SEQ_PORT_MAPNODEVICE, 	"La configurazione del Mapper MIDI si riferisce a un dispositivo MIDI che non è installato nel sistema. Usare l'opzione Mapper MIDI nel Pannello di Controllo per cambiare la configurazione."
MCIERR_SEQ_PORT_MISCERROR, 	"Si è verificato un errore con la porta specificata."
MCIERR_SEQ_PORT_NONEXISTENT, 	"Il dispositivo MIDI specificato non è installato nel sistema. Usare l'opzione Drivers nel Pannello di Controllo per installare un dispositivo MIDI."
MCIERR_SEQ_PORTUNSPECIFIED, 	"Non è stata specificata una porta MIDI nel sistema."
MCIERR_SEQ_TIMER, 		"Tutti i timer multimediali sono in uso da parte di altre applicazioni. Chiudere una di questa applicazioni e riprovare."

END
