/*
 * Copyright 2002, 2003, 2008 Rok Mandeljc
 *
 * 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_SLOVENIAN, SUBLANG_DEFAULT
BEGIN

/* MMSYS errors */
MMSYSERR_NOERROR, 		"Navedeni ukaz je bil uspešno izveden."
MMSYSERR_ERROR, 		"Neznana zunanja napaka."
MMSYSERR_BADDEVICEID, 		"Uporabljena oznaka naprave je zunaj dopustnega obsega za vaš sistem."
MMSYSERR_NOTENABLED, 		"Gonilnik ni bil omogočen."
MMSYSERR_ALLOCATED, 		"Navedena naprava je že v uporabi. Počakajte, da bo sproščena, in poskusite znova."
MMSYSERR_INVALHANDLE, 		"Navedena koda za dostop do naprave je neveljavna."
MMSYSERR_NODRIVER, 		"Nameščen ni noben gonilnik!"
MMSYSERR_NOMEM, 		"Za opravilo ni na voljo dovolj pomnilnika. Zaprite enega ali več programov in poskusite znova."
MMSYSERR_NOTSUPPORTED, 		"Ta funkcija ni podprta. Če želite ugotoviti, katere funkcije gonilnik podpira, uporabite možnost 'Zmožnosti'."
MMSYSERR_BADERRNUM, 		"Navedena je bila številka napake, ki v sistemu ni definirana."
MMSYSERR_INVALFLAG, 		"Sistemski funkciji je bila posredovana neveljavna zastavica."
MMSYSERR_INVALPARAM, 		"Sistemski funkciji je bil posredovan neveljaven parameter."

/* WAVE errors */
WAVERR_BADFORMAT, 		"Navedena oblika zapisa ni podprta ali pa je ni mogoće prevesti. Če želite ugotoviti, katere oblike so podprte, uporabite možnost 'Zmožnosti'."
WAVERR_STILLPLAYING, 		"Predvajanje je še v teku. Ponastavite napravo ali pa počakajte do konca predvajanja."
WAVERR_UNPREPARED, 		"Glava podatkov vrste wave ni bila pripravljena. Pripravite glavo tako, da uporabite funkcijo 'Pripravi' (Prepare), in poskusite znova."
WAVERR_SYNC, 			"Naprave ni mogoče odpreti brez zastavice WAVE_ALLOWSYNC. Uporabite zastavico in poskusite znova."

/* MIDI errors */
MIDIERR_UNPREPARED, 		"MIDI glava ni bila pripravljena. Pripravite glavo tako, da uporabite funkcijo 'Pripravi' (Prepare), in poskusite znova."
MIDIERR_STILLPLAYING, 		"Predvajanje je še v teku. Ponastavite napravo ali pa počakajte do konca predvajanja."
MIDIERR_NOMAP, 			"Razporeditve MIDI ni mogoče najti. To je lahko posledica težav z gonilnikom, ali pa manjkajoče oziroma poškodovane datoteke MIDIMAP.CFG."
MIDIERR_NOTREADY, 		"Prek vrat trenutno poteka prenos podatkov. Počakajte na konec prenosa in poskusite znova."
MIDIERR_NODEVICE, 		"Trenutna nastavitev MIDI se sklicuje na MIDI napravo, ki ni prisotna. Uporabite MIDI Mapper in spremenite nastavitve."
MIDIERR_INVALIDSETUP, 		"Trenutna nastavitev MIDI je pošodovana. Namestite originalno datoteko MIDIMAP.CFG v sistemsko mapo Oken in poskusite znova."

/* MCI errors */
MCIERR_INVALID_DEVICE_ID,      "Neveljaven ID MCI naprave. Uporabite ID, ki ga vrne odpiranje MCI naprave."
MCIERR_UNRECOGNIZED_KEYWORD, 	"Naveden parameter ukaza ni definiran v naboru MCI ukazov."
MCIERR_UNRECOGNIZED_COMMAND,	"Naveden ukaz je neveljaven MCI ukaz."
MCIERR_HARDWARE, 		"Z večpredstavnostno napravo so težave. Preverite, ali naprava deluje pravilno ali pa se posvetujte z izdelovalcem."
MCIERR_INVALID_DEVICE_NAME, 	"Navedena naprava ni registrirana MCI naprava."
MCIERR_OUT_OF_MEMORY, 		"Za to opravilo ni na voljo dovolj pomnilnika.\nZaprite enega ali več programov in poskusite znova."
MCIERR_DEVICE_OPEN, 		"Program že uporablja ta vzdevek. Namesto imena naprave uporabite še neuporabljen  vzdevek."
MCIERR_CANNOT_LOAD_DRIVER, 	"Naprave ni bilo mogoče naložiti. Preverite, ali je gonilnik pravilno nameščen."
MCIERR_MISSING_COMMAND_STRING, 	"Ukazni niz je prazen."
MCIERR_PARAM_OVERFLOW, 		"Izhodni niz je bil prevelik, da bi ga bilo mogoèe shraniti v povratni medpomnilnik. Povečajte medpomnilnik."
MCIERR_MISSING_STRING_ARGUMENT, "Navedeni ukaz zahteva parameter (niz znakov). Vnesite ga."
MCIERR_BAD_INTEGER, 		"Vneseno celo število za ta ukaz je neveljavno. Vnesite veljavno število."
MCIERR_PARSER_INTERNAL, 	"Gonilnik za napravo je vrnil neveljavno vrsto vrednosti. Od izdelovalca naprave poskusite dobiti nov gonilnik."
MCIERR_DRIVER_INTERNAL, 	"Z gonilnikom za napravo so težave. Od izdelovalca naprave poskusite dobiti nov gonilnik."
MCIERR_MISSING_PARAMETER, 	"V navedenem ukazu manjka parameter. Vnesite ga."
MCIERR_UNSUPPORTED_FUNCTION, 	"MCI naprava, ki jo uporabljate, ne podpira navedenega ukaza."
MCIERR_FILE_NOT_FOUND, 		"Navedene datoteke ni mogoče najti. Preverite, ali ste pravilno vnesli ime in pot do datoteke."
MCIERR_DEVICE_NOT_READY, 	"Gonilnik za napravo ni pripravljen. Malo počakajte in nato poskusite znova."
MCIERR_INTERNAL, 		"Pri inicializaciji MCI naprave je prišlo do težav. Znova zaženite Okna."
MCIERR_DRIVER, 			"Zaradi napake, značilne za gonilnik, je bil le-ta zaprt. Ponovite ukaz."
MCIERR_CANNOT_USE_ALL, 		"V tem ukazu uporabite ime točno določene naprave."
MCIERR_MULTIPLE, 		"V več napravah je prišlo do napak. Ločeno vnesite vsak ukaz in vsako napravo. Tako boste lahko ugotovili, katere naprave povzročajo napake."
MCIERR_EXTENSION_NOT_FOUND, 	"Iz pripone datoteke ni mogoče ugotoviti vrste zahtevane naprave."
MCIERR_OUTOFRANGE, 		"Parameter je zunaj dovoljenega obsega."
MCIERR_FLAGS_NOT_COMPATIBLE, 	"Navedenih parametrov ne smete uporabiti hkrati."
MCIERR_FILE_NOT_SAVED, 		"Navedene datoteke ni mogoče shraniti. Preverite, ali je na disku dovolj prostora oz. ali je vaš računalnik še povezan z omrežjem."
MCIERR_DEVICE_TYPE_REQUIRED, 	"Navedene naprave ni mogoče najti. Preverite, ali je naprava nameščena oz. ali je bilo njeno ime pravilno navedeno."
MCIERR_DEVICE_LOCKED, 		"Poteka zapiranje navedene naprave. Malo počakajte in poskusite znova."
MCIERR_DUPLICATE_ALIAS, 	"Program že uporablja navedeni vzdevek. Uporabite še neuporabljen vzdevek."
MCIERR_BAD_CONSTANT, 		"Uporabljena konstanta v tem ukazu je neveljavna."
MCIERR_MUST_USE_SHAREABLE, 	"Gonilnik naprave je že v uporabi. Če ga želite dati v skupno rabo, z vsakim ukazom 'open' uporabite parameter 'shareable'."
MCIERR_MISSING_DEVICE_NAME, 	"Navedeni ukaz zahteva vzdevek, datoteko, gonilnik ali ime naprave. Vnesite ustrezno ime."
MCIERR_BAD_TIME_FORMAT, 	"Navedena vrednost za obliko zapisa časa je neveljavna. Veljavne oblike poiščite v dokumentaciji MCI naprave."
MCIERR_NO_CLOSING_QUOTE, 	"V vrednosti za parameter manjka zaključni dvojni narekovaj. Vnesite ga."
MCIERR_DUPLICATE_FLAGS, 	"Parameter ali vrednost ste navedli dvakrat. Navedite ga samo enkrat."
MCIERR_INVALID_FILE, 		"Te datoteke ne morete predvajati z navedeno MCI napravo. Datoteka je morda poškodovana ali pa ima napaćno obliko zapisa."
MCIERR_NULL_PARAMETER_BLOCK, 	"MCI napravi je bil podan 'null parameter block'."
MCIERR_UNNAMED_RESOURCE, 	"Datoteke brez imena ni mogoče shraniti. Vnesite ime."
MCIERR_NEW_REQUIRES_ALIAS, 	"Ko uporabljate parameter 'new', morate navesti vzdevek."
MCIERR_NOTIFY_ON_AUTO_OPEN, 	"Zastavice 'notify' ni mogoče uporabiti s samodejno oprtimi napravami."
MCIERR_NO_ELEMENT_ALLOWED, 	"V povezavi z navedeno napravo ne morete uporabiti imena datoteke."
MCIERR_NONAPPLICABLE_FUNCTION, 	"Ukazov ni mogoče izvesti v navedenem zaporedju. Spremenite zaporedje in poskusite znova."
MCIERR_ILLEGAL_FOR_AUTO_OPEN, 	"Ukaza ni mogoče izvesti v povezavi s samodejno odprto napravo. Počakajte, da se naprava zapre, in poskusite znova."
MCIERR_FILENAME_REQUIRED, 	"Neveljavno ime datoteke. Preverite, da vsebuje največ 8 znakov, ki jim sledita pika in pripona."
MCIERR_EXTRA_CHARACTERS, 	"Za nizom znakov, ki je obdan z narekovaji, ni mogoče zapisati dodatnih znakov."
MCIERR_DEVICE_NOT_INSTALLED, 	"Naprava ni nameščena. Če želite namestiti nov gonilnik, na Nadzorni Plošči dvokliknite ikono 'Dodajanje strojne opreme'."
MCIERR_GET_CD, 			"Dostop do navedene datoteke ali MCI naprave ni mogoč. Zamenjajte imenik ali pa znova zaženite računalnik."
MCIERR_SET_CD, 			"Dostop do navedene datoteke ali MCI naprave ni mogoč, ker program ne more zamenjati imenika."
MCIERR_SET_DRIVE, 		"Dostop do navedene datoteke ali MCI naprave ni mogoč, ker program ne more zamenjati pogona."
MCIERR_DEVICE_LENGTH, 		"Navedite ime za napravo ali gonilnik, ki je krajše od 79 znakov."
MCIERR_DEVICE_ORD_LENGTH, 	"Navedite ime za napravo ali gonilnik, ki je krajše od 69 znakov."
MCIERR_NO_INTEGER, 		"Navedeni ukaz zahteva celoštevilčen parameter (npr. 'play to 10'). Vnesite ga."
MCIERR_WAVE_OUTPUTSINUSE, 	"Vse naprave, ki lahko predvajajo datoteke v obliki wave, so v uporabi. Poskusite znova, ko bo katera od njih na voljo."
MCIERR_WAVE_SETOUTPUTINUSE, 	"Trenutna wave naprava je v uporabi. Počakajte, da bo sproščena, in poskusite znova."
MCIERR_WAVE_INPUTSINUSE, 	"Vse naprave, ki lahko snemajo datoteke v obliki wave, so v uporabi. Poskusite znova, ko bo katera od njih na voljo."
MCIERR_WAVE_SETINPUTINUSE, 	"Trenutna wave naprava je v uporabi. Počakajte, da bo sproščena, in poskusite znova."
MCIERR_WAVE_OUTPUTUNSPECIFIED,	"Predvajalna naprava je v uporabi. Poskusite znova po koncu predvajanja."
MCIERR_WAVE_INPUTUNSPECIFIED, 	"Snemalna naprava je v uporabi. Poskusite znova po koncu snemanja."
MCIERR_WAVE_OUTPUTSUNSUITABLE, 	"Nameščena ni nobena naprava za wave, ki bi lahko predvajala datoteke v trenutni obliki."
MCIERR_WAVE_SETOUTPUTUNSUITABLE,"Naprava ne prepozna trenutne oblike zapisa datoteke. Izberite drugo napravo in poskusite znova."
MCIERR_WAVE_INPUTSUNSUITABLE, 	"Nameščena ni nobena naprava za wave, ki bi lahko snemala datoteke v trenutni obliki."
MCIERR_WAVE_SETINPUTUNSUITABLE, "Naprava ne prepozna trenutne oblike zapisa datoteke. Izberite drugo napravo in poskusite znova."
MCIERR_NO_WINDOW, 		"Ni okna za prikaz."
MCIERR_CREATEWINDOW, 		"Okna ni bilo mogoče ustvariti ali uporabiti."
MCIERR_FILE_READ, 		"Iz navedene datoteke ni mogoče brati. Preverite, ali datoteka še vedno obstaja oz. preverite svoj disk in omrežne povezave."
MCIERR_FILE_WRITE, 		"V navedeno datoteko ni mogoče pisati. Preverite, ali je na disku še dovolj prostora oz. ali je vaš računalnik še povezan z omrežjem."
MCIERR_SEQ_DIV_INCOMPATIBLE, 	"Sočasna uporaba oblik zapisa časa 'song-pointer' in SMPTE ni mogoča."
MCIERR_SEQ_NOMIDIPRESENT, 	"Nameščna ni nobena MIDI naprava. Za namestitev MIDI gonilnika uporabite možnost 'Drivers' na Nadzorni plošći."
MCIERR_SEQ_PORT_INUSE, 		"Navedena MIDI naprava je že v uporabi. Počakajte, da bo prosta, in poskusite znova."
MCIERR_SEQ_PORT_MAPNODEVICE, 	"Trenutna nastavitev MIDI se sklicuje na manjkajočo napravo. Uporabite možnost 'MIDI Mapper' na Nadzorni plošči in spremenite nastavitev."
MCIERR_SEQ_PORT_MISCERROR, 	"Na navedenih vratih je prišlo do napake."
MCIERR_SEQ_PORT_NONEXISTENT, 	"Ta naprava ni nameščena. Če želite namestiti nov gonilnik, na nadzorni plošči dvokliknite ikono 'Dodajanje strojne opreme'."
MCIERR_SEQ_PORTUNSPECIFIED, 	"Zahtevana MIDI vrata niso nameščena."
MCIERR_SEQ_TIMER, 		"Vsi većpredstavnostni števci so zasedeni. Zaprite enega od večpredstavnostih programov in poskusite znova."

END
