/*
 * Slovenian resources for MSI
 *
 * Copyright 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"

#pragma code_page(65001)

LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT

STRINGTABLE DISCARDABLE
{
	4 "Navedenega namestitvenega paketa ni mogoče odpreti. Preverite ime datoteke in poskusite znova."
	5 "pot %s ne obstaja"
	9 "vnesite disk %s"
	10 "neveljavni parametri"
	11 "vnesite ime mape, ki vsebuje %s"
	12 "manjkajoč namestitveni vir za namestitev funkcije"
	13 "manjkajoč omrežni pogon za namestitev funkcijo"
	14 "funkcija z:"
	15 "izberite mapo, ki vsebuje %s"
}
