/*
 * Wine command prompt
 * Slovenian Language Support
 *
 * Copyright (C) 2003 Rok Mandeljc <rok.mandeljc@gimb.org>
 *
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT

STRINGTABLE
{
  WCMD_ATTRIB, "Help about ATTRIB\n"
  WCMD_CALL,
"CALL <batchfilename> is used within a batch file to execute commands\n\
from another batch file. When the batch file exits, control returns to\n\
the file which called it. The CALL command may supply parameters to the\n\
called procedure.\n\
\n\
Changes to default directory, environment variables etc made within a\n\
called procedure are inherited by the caller.\n"

  WCMD_CD,     "Help about CD\n"
  WCMD_CHDIR,  "Help about CHDIR\n"

  WCMD_CLS,    "CLS clears the console screen\n"

  WCMD_COPY,   "Help about COPY\n"
  WCMD_CTTY,   "Help about CTTY\n"
  WCMD_DATE,   "Help about DATE\n"
  WCMD_DEL,    "Help about DEL\n"
  WCMD_DIR,    "Help about DIR\n"

  WCMD_ECHO,
"ECHO <string> displays <string> on the current terminal device.\n\
\n\
ECHO ON causes all subsequent commands in a batch file to be displayed\n\
on the terminal device before they are executed.\n\
\n\
ECHO OFF reverses the effect of a previous ECHO ON (ECHO is OFF by\n\
default). The ECHO OFF command can be prevented from displaying by\n\
preceding it with an @ sign.\n"

  WCMD_ERASE,  "Help about ERASE\n"

  WCMD_FOR,
"The FOR command is used to execute a command for each of a set of files.\n\
\n\
Syntax: FOR %variable IN (set) DO command\n\
\n\
The requirement to double the % sign when using FOR in a batch file does\n\
not exist in wcmd.\n"

  WCMD_GOTO,
"The GOTO command transfers execution to another statement within a\n\
batch file.\n\
\n\
The label which is the target of a GOTO may be up to 255 characters\n\
long but may not include spaces (this is different from other operating\n\
systems). If two or more identical labels exist in a batch file the\n\
first one will always be executed. Attempting to GOTO a nonexistent\n\
label terminates the batch file execution.\n\
\n\
GOTO has no effect when used interactively.\n"

  WCMD_HELP,   "Help about HELP\n"

  WCMD_IF,
"IF is used to conditionally execute a command.\n\
\n\
Syntax:	IF [NOT] EXIST filename command\n\
	IF [NOT] string1==string2 command\n\
	IF [NOT] ERRORLEVEL number command\n\
\n\
In the second form of the command, string1 and string2 must be in double\n\
quotes. The comparison is not case-sensitive.\n"

  WCMD_LABEL,  "LABEL is used to set a disk volume label.  \n\
\n\
Syntax: LABEL [drive:]\n\
The command will prompt you for the new volume label for the given drive.\n\
You can display the disk volume label with the VOL command.\n"

  WCMD_MD,     "Help about MD\n"
  WCMD_MKDIR,  "Help about MKDIR\n"
  WCMD_MOVE,
"MOVE relocates a file or directory to a new point within the file system.\n\
\n\
If the item being moved is a directory then all the files and subdirectories\n\
below the item are moved as well.\n\
\n\
MOVE fails if the old and new locations are on different DOS drive letters.\n"

  WCMD_PATH,
"PATH displays or changes the wcmd search path.\n\
\n\
Entering PATH will display the current PATH setting (initially this is\n\
the value given in your wine.conf file). To change the setting follow the\n\
PATH command with the new value.\n\
\n\
It is also possible to modify the PATH by using the PATH environment\n\
variable, for example:\n\
		PATH %PATH%;c:\\temp \n"

  WCMD_PAUSE,
"PAUSE displays a message on the screen 'Press Return key to continue'\n\
and waits for the user to press the Return key. It is mainly useful in\n\
batch files to allow the user to read the output of a previous command\n\
before it scrolls off the screen.\n"

  WCMD_PROMPT,
"PROMPT sets the command-line prompt.\n\
\n\
The string following the PROMPT command (and the space immediately after)\n\
appears at the beginning of the line when wcmd is waiting for input.\n\
\n\
The following character strings have the special meaning shown:\n\
\n\
$$    Dollar sign         $_    Linefeed            $b    Pipe sign (|)\n\
$d    Current date        $e    Escape              $g    > sign\n\
$l    < sign              $n    Current drive       $p    Current path\n\
$q    Equal sign          $t    Current time        $v    wcmd version\n\
\n\
Note that entering the PROMPT command without a prompt-string resets the\n\
prompt to the default, which is the current drive letter followed by its\n\
current directory and a greater-than (>) sign.\n\
(like a command PROMPT $p$g).\n\
\n\
The prompt can also be changed by altering the PROMPT environment variable,\n\
so the command 'SET PROMPT=text' has the same effect as 'PROMPT text'\n"

  WCMD_REM,
"A command line beginning REM (followed by a space) performs no\n\
action, and can therefore be used as a comment in a batch file.\n"

  WCMD_REN,    "Help about REN\n"
  WCMD_RENAME, "Help about RENAME\n"
  WCMD_RD,     "Help about RD\n"
  WCMD_RMDIR,  "Help about RMDIR\n"

  WCMD_SET,
"SET displays or changes the wcmd environment variables.\n\
\n\
SET without parameters shows all of the current environment.\n\
\n\
To create or modify an environment variable the syntax is:\n\
\n\
      SET <variable>=<value>\n\
\n\
where <variable> and <value> are character strings. There must be no\n\
spaces before the equals sign, nor can the variable name\n\
have embedded spaces.\n\
\n\
Under Wine, the environment of the underlying operating system is\n\
included into the Win32 environment, there will generally therefore be\n\
many more values than in a native Win32 implementation. Note that it is\n\
not possible to affect the operating system environment from within wcmd.\n"

  WCMD_SHIFT,
"SHIFT is used in a batch file to remove one parameter from the head of\n\
the list, so parameter 2 becomes parameter 1 and so on. It has no effect\n\
if called from the command line.\n"

  WCMD_TIME,   "Help about TIME\n"

  WCMD_TITLE,  "Sets the window title for the wcmd window, syntax TITLE [string]\n"

  WCMD_TYPE,
"TYPE <filename> copies <filename> to the console device (or elsewhere\n\
if redirected). No check is made that the file is readable text.\n"

  WCMD_VERIFY,
"VERIFY is used to set, clear or test the verify flag. Valid forms are:\n\
\n\
VERIFY ON	Set the flag\n\
VERIFY OFF	Clear the flag\n\
VERIFY		Displays ON or OFF as appropriate.\n\
\n\
The verify flag has no function in Wine.\n"

  WCMD_VER,
"VER displays the version of wcmd you are running\n"

  WCMD_VOL,    "Help about VOL\n"

  WCMD_EXIT,
"EXIT terminates the current command session and returns\n\
to the operating system or shell from which you invoked wcmd.\n"

  1000, "WCMD built-in commands are:\n\
ATTRIB\t\tShow or change DOS file attributes\n\
CALL\t\tInvoke a batch file from inside another\n\
CD (CHDIR)\tChange current default directory\n\
CLS\t\tClear the console screen\n\
COPY\t\tCopy file\n\
CTTY\t\tChange input/output device\n\
DATE\t\tShow or change the system date\n\
DEL (ERASE)\tDelete a file or set of files\n\
DIR\t\tList the contents of a directory\n\
ECHO\t\tCopy text directly to the console output\n\
HELP\t\tShow brief help details on a topic\n\
MD (MKDIR)\tCreate a subdirectory\n\
MOVE\t\tMove a file, set of files or directory tree\n\
PATH\t\tSet or show the search path\n\
PROMPT\t\tChange the command prompt\n\
REN (RENAME)\tRename a file\n\
RD (RMDIR)\tDelete a subdirectory\n\
SET\t\tSet or show environment variables\n\
TIME\t\tSet or show the current system time\n\
TITLE\t\tSet the window title for the WCMD session\n\
TYPE\t\tType the contents of a text file\n\
VER\t\tShow the current version of WCMD\n\
VOL\t\tShow the volume label of a disk device\n\
EXIT\t\tClose down WCMD\n\n\
Enter HELP <command> for further information on any of the above commands\n"
}
