/*
 * 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
 */

#include "xcopy.h"

#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"

}
