/*
 * NET.EXE - Wine-compatible net program
 * Slovenian language support
 *
 * Copyright (C) 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
 */

#pragma code_page(65001)

LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "Sintaksa ukaza:\n\nNET [ HELP | START | STOP | USE ]\n"
    STRING_START_USAGE, "Navedite ime storitve, ki naj jo zaženem.\n"
    STRING_STOP_USAGE, "Navedite ime storitve, ki naj jo ustavim.\n"
    STRING_STOP_DEP, "Ustavljam odvisno storitev: %s\n"
    STRING_CANT_STOP, "Ustavljanje storitve %s ni uspelo\n"
    STRING_NO_SCM, "Napaka pri povezovanju z Upraviteljem storitev.\n"
    STRING_NO_SVCHANDLE, "Napaka pri povezovanju s storitvijo.\n"
    STRING_START_SVC, "Zaganjam storitev %s.\n"
    STRING_START_SVC_SUCCESS, "Zagon storitve %s je uspel.\n"
    STRING_START_SVC_FAIL, "Zagon storitve %s ni uspel.\n"
    STRING_STOP_SVC, "Ustavljam storitev %s.\n"
    STRING_STOP_SVC_SUCCESS, "Ustavljanje storitve %s je uspelo.\n"
    STRING_STOP_SVC_FAIL, "Ustavljanje storitve %s ni uspelo.\n"
    STRING_HELP_USAGE, "Sintaksa ukaza je:\n\nNET HELP ukaz\n    -ali-\nNET ukaz /HELP\n\n"\
                       "   Razpoložljivi ukazi:\n   NET HELP    NET START    NET STOP    NET USE\n"
    STRING_NO_ENTRIES, "Na seznamu ni vnosov.\n"
    STRING_USE_HEADER, "\nStanje  Lokalno   Oddaljeno\n---------------------------------------------------------------\n"
    STRING_USE_ENTRY,  "%s      %S      %S      Porabljena sredstva: %lu\n"
}

#pragma code_page(default)
