/*
 * XCOPY - Wine-compatible xcopy 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_INVPARMS, "Neveljavno število parametrov - za pomoč uporabite xcopy /?\n"
    STRING_INVPARM,  "Neveljaven parameter '%s' -  za pomoč uporabite xcopy /?\n"
    STRING_PAUSE,    "Za začetek kopiranja pritisnite <enter>\n"
    STRING_SIMCOPY,  "Prekopiral bom %d datotek\n"
    STRING_COPY,     "Prekopiral sem %d datotek\n"
    STRING_QISDIR,   "Ali je '%s' ime ciljne datoteke\n" \
                     "ali mape?\n" \
                     "(D - Datoteka, M - Mapa)\n"
    STRING_SRCPROMPT,"%s? (Da|Ne)\n"
    STRING_OVERWRITE,"Ali naj prepišem %s? (Da|Ne|Vse)\n"
    STRING_COPYFAIL, "Kopiranje '%s' v '%s' ni uspelo (koda napake: %d)\n"
    STRING_OPENFAIL, "Napaka pri odpiranju '%s'\n"
    STRING_READFAIL, "Napaka pri branju '%s'\n"
    STRING_YES_CHAR, "D"
    STRING_NO_CHAR,  "N"
    STRING_ALL_CHAR, "V"
    STRING_FILE_CHAR,"D"
    STRING_DIR_CHAR, "M"

    STRING_HELP,
"XCOPY - kopira navedene izvorne datoteke oz. mape v naveden cilj\n\
\n\
Sintaksa:\n\
XCOPY izvor [cilj] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t     [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Where:\n\
\n\
[/I]  Če cilj ne obstaja in gre za kopiranje dveh ali več datotek, predpostavi,\n\
\da je cilj mapa\n\
[/S]  Kopiraj mape in podmape\n\
[/E]  Kopiraj mape in podmape, vključno s praznimi mapami\n\
[/Q]  Ne izpisuj imen med kopiranjem (tiho).\n\
[/F]  Med kopiranjem izpiši polno izvorno in ciljno pot\n\
[/L]  Simuliraj operacijo; prikaži imena datotek, ki bi jih kopiral\n\
[/W]  Vključi poziv pred začetkom kopiranja\n\
[/T]  Ustvari mape, vendar ne kopiraj datotek\n\
[/Y]  Onemogoči poziv ob prepisovanju datotek\n\
[/-Y] Omogoči poziv ob prepisovanju datotek\n\
[/P]  Poziv pred kopiranjem vsake datoteke\n\
[/N]  Pri kopiranju uporabi kratka imena\n\
[/U]  Kopiraj samo datoteke, ki že obstajajo na cilju\n\
[/R]  Prepiši datoteke, ki so označene samo za branje\n\
[/H]  V kopiranje vključu tudi skrite in sistemske datoteke\n\
[/C]  Nadaljuj tudi, če pride do napake med kopiranjem\n\
[/A]  Kopiraj samo datoteke, ki imajo atribut arhiva\n\
[/M]  Kopiraj samo datoteke, ki imajo atribut arhiva ter odstrani atribut\n\
\tarhiva\n\
[/D | /D:m-d-y] Kopiraj datoteke, ustvarjene ali spremenjene po navedenem datumu.\n\
\t\tČe datum ni podan, gre za kopiranje datotek, katerih obstoječi cilj je\n\
\t\tod izvora\n\n"

}

#pragma code_page(default)
