/*
 * Wine command prompt
 * Portuguese Language Support
 *
 * Copyright (C) 2003 Marcelo Duarte
 * Copyright 2004 Américo José Melo
 * Copyright 2010 Gustavo Henrique Milaré
 *
 * 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 "wcmd.h"

#pragma code_page(65001)

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE
{
  WCMD_ATTRIB, "Ajuda do comando ATTRIB\n"
  WCMD_CALL,
"CALL <arquivo_de_lote> é usado dentro de um arquivo de lote para executar\n\
comando de outro arquivo de lote. Quando o arquivo existe, o controle retorna\n\
ao arquivo que o chamou. O comando CALL pode passar parâmetros ao procedimento\n\
chamado.\n\
\n\
Mudanças no diretório padrão, variáveis de ambiente, etc, feitas dentro\n\
do procedimente chamado são herdados pelo chamador.\n"

  WCMD_CD,     "Ajuda do comando CD\n"
  WCMD_CHDIR,  "Ajuda do comando CHDIR\n"

  WCMD_CLS,    "CLS limpa a tela do console\n"

  WCMD_COPY,   "Ajuda do comando COPY\n"
  WCMD_CTTY,   "Ajuda do comando CTTY\n"
  WCMD_DATE,   "Ajuda do comando DATE\n"
  WCMD_DEL,    "Ajuda do comando DEL\n"
  WCMD_DIR,    "Ajuda do comando DIR\n"

  WCMD_ECHO,
"ECHO <string> mostra a <string> no dispositivo terminal atual.\n\
\n\
ECHO ON ativa a exibição de todos os comandos subsequentes em um\n\
arquivo de lote no terminal antes deles serem executados.\n\
\n\
ECHO OFF desativa o efeito de um comando ECHO ON (ECHO é OFF por padrão).\n\
O comando ECHO OFF pode ser impedido de ser mostrado colocando-se um\n\
símbolo @ precedendo o mesmo.\n"

  WCMD_ERASE,  "Ajuda do comando ERASE\n"

  WCMD_FOR,
"O comando FOR é usado para executar um comando a cada vez em\num conjunto de arquivos.\n\
\n\
Sintaxe: FOR %variável IN (conjunto) DO comando\n\
\n\
No cmd, não existe a necessidade de usar dois sinais % no\n\
comando FOR nos arquivos de lote.\n"

  WCMD_GOTO,
"O comando GOTO transfere a execução para outra declaração dentro\n\
do arquivo de lote.\n\
\n\
O rótulo que será o destino do comando GOTO pode ter até 255 caracteres\n\
mas não pode incluir espaços (diferentemente de outros sistemas operacionais).\n\
Se dois ou mais rótulos forem identicos no arquivo de lote, o primeiro deles\n\
será sempre executado. A tentativa de usar o GOTO para um rótulo inexistente\n\
termina a execução do arquivo de lote.\n\
\n\
GOTO não tem efeito quando usando interativamente.\n"

  WCMD_HELP,   "Ajuda do comando HELP\n"

  WCMD_IF,
"IF é usado para executar um comando condicionalmente.\n\
\n\
Sintaxe:	IF [NOT] EXIST arquivo comando\n\
	IF [NOT] texto1==texto2 comando\n\
	IF [NOT] ERRORLEVEL número comando\n\
\n\
Na segunda forma do comando, texto1 e texto2 devem estar usando aspas.\n\
A comparação não diferencia maiúsculas de minusculas.\n"

  WCMD_LABEL,  "LABEL é usado para rotular um volume do disco.\n\
\n\
Sintaxe: LABEL [drive:]\n\
O comando LABEL irá aguardar que vc informe o novo rótulo para o drive\n\
especificado. Você pode mostrar o rótulo do disco com o comando VOL.\n"

  WCMD_MD,     "Ajuda do comando MD\n"
  WCMD_MKDIR,  "Ajuda do comando MKDIR\n"
  WCMD_MOVE,
"MOVE realoca um arquivo ou diretório em um novo ponto no sistema de arquivos.\n\
\n\
Se o item sendo movido é um diretório então todos os arquivos e subdiretórios\n\
abaixo do item são movidos com o mesmo.\n\
\n\
MOVE falhará se o local antigo e o novo local estão em diferentes unidades.\n"

  WCMD_PATH,
"PATH mostra ou permite mudar o caminho de procura de programas do cmd.\n\
\n\
Digitando PATH mostrará a atual configuração do comando PATH (inicialmente este\n\
valor é especificado no arquivo wine.conf). Para mudar as configurações, digite\n\
novos valores no comando PATH.\n\
\n\
Também é possível modificar o comando PATH usando a variável de ambiente PATH,\n\
por exemplo:\n\
		PATH %PATH%;c:\\temp\n"

  WCMD_PAUSE,
"PAUSE mostra a seguinte mensagem na tela 'Pressione Enter para continuar'\n\
e aguarda que o usuário pressione a tecla Enter. Isto é útil principalmente\n\
em arquivos de lote para permitir ao usuário ler a saída de um comando anterior\n\
antes que a tela sofra um rolamento.\n"

  WCMD_PROMPT,
"PROMPT configura o 'prompt' da linha de comando.\n\
\n\
O texto seguindo o comando PROMPT (e os espaços imediatamente depois)\n\
aparecem no começo da linha enquanto o cmd está aguardando por comandos.\n\
\n\
Os seguintes caracteres tem um significado especial, conforme mostrado:\n\
\n\
$$    Cifrão ($)          $_    Avanço de linha     $b    Símbolo pipe (|)\n\
$d    Data atual          $e    Código de escape    $g    Sinal de maior (>)\n\
$l    Sinal de menor (<)  $n    Unidade atual       $p    Caminho atual\n\
$q    Sinal de igual (=)  $t    Hora atual          $v    Versão do cmd\n\
\n\
Note que digitando o comando PROMPT sem parâmetros reconfigura o padrão,\n\
que é a letra da unidade atual seguida pelo diretório e um sinal de maior\n\
(equivalente a um comando PROMPT $p$g).\n\
\n\
O 'prompt' também pode ser mudado alterando a variável PROMPT, assim,\n\
o comando 'SET PROMPT=texto' tem o mesmo efeito que 'PROMPT texto'\n"

  WCMD_REM,
"Uma linha de comando iniciando com REM (seguindo de um espaço) não faz\n\
ação alguma, e os carateres usando são considerados comentários em um\n\
arquivo de lote\n"

  WCMD_REN,    "Ajuda do comando REN\n"
  WCMD_RENAME, "Ajuda do comando RENAME\n"
  WCMD_RD,     "Ajuda do comando RD\n"
  WCMD_RMDIR,  "Ajuda do comando RMDIR\n"

  WCMD_SET,
"SET mostra ou muda as variável de ambiente de cmd.\n\
\n\
SET sem parêmtros mostra todas as variável de ambiente atuais\n\
\n\
Para criar ou modificar variável de ambiente, a sintaxe é:\n\
\n\
      SET <variável>=<valor>\n\
\n\
sendo que <variável> e <valor> são textos. Não devem existir espaços\n\
antes do sinal de igualdade, nem a variável pode conter espaços.\n\
\n\
No Wine, o ambiente do sistema operacional é incluido no ambiente Win32,\n\
onde sempre haverá mais valores que em um sistema Win32 nativo. Note que\n\
não é possível afetar o ambiente do sistema operacional a partir do cmd.\n"

  WCMD_SHIFT,
"SHIFT é usado em arquivos de lote para remover um parâmetro que inicia a\n\
lista, assim então o parâmentro2 sobrepôe o parametro1 e assim por diante.\n\
Isto não tem efeito se chamado a partir da linha de comando.\n"

  WCMD_TIME,   "Ajuda do comando TIME\n"

  WCMD_TITLE,  "Configura o título da janela do cmd, e a sintaxe é TITLE [texto]\n"

  WCMD_TYPE,
"TYPE <arquivo> copia <arquvo> para o dispositivo console (ou outro, se\n\
redirecionado). Nehuma verificação é feita se o arquivo pode ser lido.\n"

  WCMD_VERIFY,
"VERIFY é usado para configurar, limpar e testar o 'flag' de verificação. As\n\
formas válidas são>\n\
\n\
VERIFY ON	Configura o flag\n\
VERIFY OFF	Limpa o flag\n\
VERIFY		Mostra ON ou OFF qdo apropriado.\n\
\n\
O flag de verificação não tem função no Wine.\n"

  WCMD_VER,
"VER mostra a versão em execução do cmd.\n"

  WCMD_VOL,    "Ajuda do comando VOL\n"

  WCMD_PUSHD,  "PUSHD <directoryname> saves the current directory onto a\n\
stack, and then changes the current directory to the supplied one.\n"

  WCMD_POPD,   "POPD changes current directory to the last one saved with\n\
PUSHD.\n"

  WCMD_MORE,   "MORE displays output of files or piped input in pages.\n"

  WCMD_EXIT,
"EXIT termina a sessão de comando atual e retorna ao sistema operacional\n\
ou shell que tenha invocado o cmd.\n"

  WCMD_ALLHELP, "CMD - os comando internos são:\n\
ATTRIB\t\tMostra ou troca atributos de arquivo DOS\n\
CALL\t\tInvoca um arquivo de lote dentro de outro\n\
CD (CHDIR)\tMuda o diretório padrão atual\n\
CLS\t\tLimpa a tela do console\n\
COPY\t\tCopia arquivos\n\
CTTY\t\tMuda o dispositivo de entrada/saída\n\
DATE\t\tMostra ou muda a data do sistema\n\
DEL (ERASE)\tApaga um arquivo ou conjunto de arquivos\n\
DIR\t\tMostra o conteúdo de um diretórios\n\
ECHO\t\tCopia texto diretamente na saída do console\n\
HELP\t\tMostra breves detalhes de um tópico\n\
MD (MKDIR)\tCria um subdiretório\n\
MORE\t\tDisplay output in pages\n\
MOVE\t\tMove um arquivo, conjunto de arquivos ou uma árvore de diretórios\n\
PATH\t\tConfigira o caminho de procura\n\
POPD\t\tRestores the directory to the last one saved with PUSHD\n\
PROMPT\t\tMuda o prompt de comando\n\
PUSHD\t\tChanges to a new directory, saving the current one\n\
REN (RENAME)\tRenomeia um arquivo\n\
RD (RMDIR)\tApaga um subdiretório\n\
SET\t\tConfigura ou mostra variáveis de ambiente\n\
TIME\t\tConfigura ou mostra a hora atual do sistema\n\
TITLE\t\tConfigura o título da janela de comando CMD\n\
TYPE\t\tMostra o conteúdo de um arquivo texto\n\
VER\t\tMostra a versão atual do CMD\n\
VOL\t\tMostra o rótulo do volume de uma unidade de disco\n\
EXIT\t\tFecha o CMD\n\n\
Entre HELP <comando> para maiores informações sobre alguns dos comandos acima\n"

  WCMD_CONFIRM, "Tem certeza"
  WCMD_YES, "S"
  WCMD_NO, "N"
  WCMD_NOASSOC, "Associação de arquivo faltando para a extensão %s\n"
  WCMD_NOFTYPE, "Nenhum comando de abertura associado ao tipo de arquivo '%s'\n"
  WCMD_OVERWRITE, "Sobrescrever %s"
  WCMD_MORESTR, "Mais..."
  WCMD_TRUNCATEDLINE, "Linha no processamento do Batch possivelmente truncada. Usando:\n"
  WCMD_NYI, "Ainda não implementado\n\n"
  WCMD_NOARG, "Faltando argumento\n"
  WCMD_SYNTAXERR, "Erro de sintaxe\n"
  WCMD_FILENOTFOUND, "%s : Arquivo Não Encontrado\n"
  WCMD_NOCMDHELP, "Sem ajuda disponível para %s\n"
  WCMD_NOTARGET, "Alvo para GOTO não encontrado\n"
  WCMD_CURRENTDATE, "A Data Atual é %s\n"
  WCMD_CURRENTTIME, "A Hora Atual é %s\n"
  WCMD_NEWDATE, "Entre nova data: "
  WCMD_NEWTIME, "Entre nova hora: "
  WCMD_MISSINGENV, "Variável de ambiente %s não definida\n"
  WCMD_READFAIL, "Falha ao abrir '%s'\n"
  WCMD_CALLINSCRIPT, "Não pode chamar um rótulo batch fora de um script batch\n"
  WCMD_ALL, "A"
  WCMD_DELPROMPT, "%s, Excluir"
  WCMD_ECHOPROMPT, "Echo é %s\n"
  WCMD_VERIFYPROMPT, "Verify é %s\n"
  WCMD_VERIFYERR, "Verify deve ser ON ou OFF\n"
  WCMD_ARGERR, "Erro de parâmetro\n"
  WCMD_VOLUMEDETAIL, "Volume no drive %c é %s\nO Número de Série do Volume é %04x-%04x\n\n"
  WCMD_VOLUMEPROMPT, "Rótulo do Volume (11 characters, ENTER for none)?"
  WCMD_NOPATH, "PATH não encontrado\n"
  WCMD_ANYKEY,"Pressione a tecla Enter para continuar: "
  WCMD_CONSTITLE,"Prompt de Comando Wine"
  WCMD_VERSION,"CMD Versão %s\n\n"
  WCMD_MOREPROMPT, "Mais? "
  WCMD_LINETOOLONG, "A linha de entrada é muito longa.\n"
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE
{
  WCMD_ATTRIB, "Ajuda do comando ATTRIB\n"
  WCMD_CALL,
"CALL <ficheiro_de_lote> é usado dentro de um ficheiro de lote para executar o\n\
comando de outro ficheiro de lote. Quando o ficheiro existe, o controle retorna\n\
ao ficheiro que o chamou. O comando CALL pode passar parâmetros ao procedimento\n\
chamado.\n\
\n\
Mudanças no directório padrão, variáveis de ambiente, etc, feitas dentro\n\
do procedimente chamado são herdados pelo chamador.\n"

  WCMD_CD,     "Ajuda do comando CD\n"
  WCMD_CHDIR,  "Ajuda do comando CHDIR\n"

  WCMD_CLS,    "CLS limpa a ecrã da consola\n"

  WCMD_COPY,   "Ajuda do comando COPY\n"
  WCMD_CTTY,   "Ajuda do comando CTTY\n"
  WCMD_DATE,   "Ajuda do comando DATE\n"
  WCMD_DEL,    "Ajuda do comando DEL\n"
  WCMD_DIR,    "Ajuda do comando DIR\n"

  WCMD_ECHO,
"ECHO <string> mostra a <string> no dispositivo terminal actual.\n\
\n\
ECHO ON activa a exibição de todos os comandos subsequentes num\n\
ficheiro de lote no terminal antes deles serem executados.\n\
\n\
ECHO OFF desactiva o efeito de um comando ECHO ON (ECHO é OFF por padrão).\n\
O comando ECHO OFF pode ser impedido de ser mostrado colocando-se um\n\
símbolo @ precedendo o mesmo.\n"

  WCMD_ERASE,  "Ajuda do comando ERASE\n"

  WCMD_FOR,
"O comando FOR é usado para executar um comando a cada vez num conjunto de ficheiros.\n\
\n\
Sintaxe: FOR %variável IN (conjunto) DO comando\n\
\n\
No cmd, não existe a necessidade de usar dois sinais % no\n\
comando FOR nos ficheiros de lote.\n"

  WCMD_GOTO,
"O comando GOTO transfere a execução para outra declaração dentro\n\
do ficheiro de lote.\n\
\n\
O rótulo que será o destino do comando GOTO pode ter até 255 caracteres\n\
mas não pode conter espaços (diferentemente de outros sistemas operacionais).\n\
Se dois ou mais rótulos forem identicos no ficheiro de lote, o primeiro deles\n\
será sempre executado. A tentativa de usar o GOTO para um rótulo inexistente\n\
termina a execução do ficheiro de lote.\n\
\n\
GOTO não tem efeito quando usado interactivamente.\n"

  WCMD_HELP,   "Ajuda do comando HELP\n"

  WCMD_IF,
"IF é usado para executar um comando condicionalmente.\n\
\n\
Sintaxe:	IF [NOT] EXIST ficheiro comando\n\
	IF [NOT] texto1==texto2 comando\n\
	IF [NOT] ERRORLEVEL número comando\n\
\n\
Na segunda forma do comando, texto1 e texto2 devem estar a usar aspas.\n\
A comparação não diferencia maiúsculas de minusculas.\n"

  WCMD_LABEL,  "LABEL é usado para rotular um volume do disco.\n\
\n\
Sintaxe: LABEL [drive:]\n\
O comando LABEL irá aguardar que informe o novo rótulo para o drive\n\
especificado. Pode mostrar o rótulo do disco com o comando VOL.\n"

  WCMD_MD,     "Ajuda do comando MD\n"
  WCMD_MKDIR,  "Ajuda do comando MKDIR\n"
  WCMD_MOVE,
"MOVE realoca um ficheiro ou directório num novo ponto no sistema de ficheiros.\n\
\n\
Se o item ao ser movido é um directório então todos os ficheiros e subdirectórios\n\
abaixo do item serão movidos com o mesmo.\n\
\n\
MOVE falhará se o local antigo e o novo local estão em diferentes unidades.\n"

  WCMD_PATH,
"PATH mostra ou permite mudar o caminho de procura de programas do cmd.\n\
\n\
Ao digitar PATH mostrará a actual configuração do comando PATH (inicialmente este\n\
valor é especificado no ficheiro wine.conf). Para mudar as configurações, digite\n\
novos valores no comando PATH.\n\
\n\
Também é possível modificar o comando PATH usando a variável de ambiente PATH,\n\
por exemplo:\n\
		PATH %PATH%;c:\\temp\n"

  WCMD_PAUSE,
"PAUSE mostra a seguinte mensagem no ecrã 'Prima Enter para continuar'\n\
e aguarda que o utilizador prima a tecla Enter. Isto é útil principalmente\n\
em ficheiros de lote para permitir ao utilizador ler a saída de um comando anterior\n\
antes que o ecrã sofra um rolamento.\n"

  WCMD_PROMPT,
"PROMPT configura o 'prompt' da linha de comando.\n\
\n\
O texto a seguir o comando PROMPT (e os espaços imediatamente depois)\n\
aparecem no começo da linha enquanto o cmd está a aguardar por comandos.\n\
\n\
Os seguintes caracteres tem um significado especial, conforme mostrado:\n\
\n\
$$    Cifrão ($)          $_    Avanço de linha     $b    Símbolo pipe (|)\n\
$d    Data actual          $e    Código de escape    $g    Sinal de maior (>)\n\
$l    Sinal de menor (<)  $n    Unidade actual       $p    Caminho actual\n\
$q    Sinal de igual (=)  $t    Hora actual          $v    Versão do cmd\n\
\n\
Note que ao digitar o comando PROMPT sem parâmetros reconfigura o padrão,\n\
que é a letra da unidade actual seguida pelo directório e um sinal de maior\n\
(equivalente a um comando PROMPT $p$g).\n\
\n\
O 'prompt' também pode ser mudado alterando a variável PROMPT, assim,\n\
o comando 'SET PROMPT=texto' tem o mesmo efeito que 'PROMPT texto'\n"

  WCMD_REM,
"Uma linha de comando a iniciar com REM (seguido de um espaço) não faz\n\
nenhuma acção, e os carateres a usar são considerados comentários num\n\
ficheiro de lote\n"

  WCMD_REN,    "Ajuda do comando REN\n"
  WCMD_RENAME, "Ajuda do comando RENAME\n"
  WCMD_RD,     "Ajuda do comando RD\n"
  WCMD_RMDIR,  "Ajuda do comando RMDIR\n"

  WCMD_SET,
"SET mostra ou muda as variável de ambiente de cmd.\n\
\n\
SET sem parêmtros mostra todas as variável de ambiente actuais\n\
\n\
Para criar ou modificar variável de ambiente, a sintaxe é:\n\
\n\
      SET <variável>=<valor>\n\
\n\
sendo que <variável> e <valor> são textos. Não devem existir espaços\n\
antes do sinal de igualdade, nem a variável pode conter espaços.\n\
\n\
No Wine, o ambiente do sistema operacional é incluido no ambiente Win32,\n\
onde sempre haverá mais valores que num sistema Win32 nativo. Note que\n\
não é possível afectar o ambiente do sistema operacional a partir do cmd.\n"

  WCMD_SHIFT,
"SHIFT é usado em ficheiros de lote para remover um parâmetro que inicia a\n\
lista, assim então o parâmentro2 sobrepôe o parametro1 e assim por diante.\n\
Isto não tem efeito se chamado a partir da linha de comando.\n"

  WCMD_TIME,   "Ajuda do comando TIME\n"

  WCMD_TITLE,  "Configura o título da janela do cmd, e a sintaxe é TITLE [texto]\n"

  WCMD_TYPE,
"TYPE <ficheiro> copia <ficheiro> para o dispositivo consola (ou outro, se\n\
redireccionado). Nehuma verificação é feita se o ficheiro pode ser lido.\n"

  WCMD_VERIFY,
"VERIFY é usado para configurar, limpar e testar o 'flag' de verificação. As\n\
formas válidas são>\n\
\n\
VERIFY ON	Configura o flag\n\
VERIFY OFF	Limpa o flag\n\
VERIFY		Mostra ON ou OFF qdo apropriado.\n\
\n\
O flag de verificação não tem função no Wine.\n"

  WCMD_VER,
"VER mostra a versão em execução do cmd.\n"

  WCMD_VOL,    "Ajuda do comando VOL\n"

  WCMD_PUSHD,  "PUSHD <directoryname> saves the current directory onto a\n\
stack, and then changes the current directory to the supplied one.\n"

  WCMD_POPD,   "POPD changes current directory to the last one saved with\n\
PUSHD.\n"

  WCMD_MORE,   "MORE displays output of files or piped input in pages.\n"

  WCMD_EXIT,
"EXIT termina a sessão de comando actual e retorna ao sistema operacional\n\
ou shell que tenha invocado o cmd.\n"

  WCMD_ALLHELP, "CMD - os comando internos são:\n\
ATTRIB\t\tMostra ou troca atributos do ficheiro DOS\n\
CALL\t\tInvoca um ficheiro de lote dentro de outro\n\
CD (CHDIR)\tMuda o directório padrão actual\n\
CLS\t\tLimpa o ecrã da consola\n\
COPY\t\tCopia ficheiros\n\
CTTY\t\tMuda o dispositivo de entrada/saída\n\
DATE\t\tMostra ou muda a data do sistema\n\
DEL (ERASE)\tApaga um ficheiro ou conjunto de ficheiros\n\
DIR\t\tMostra o conteúdo de um directório\n\
ECHO\t\tCopia o texto diretamente na saída da consola\n\
HELP\t\tMostra breves detalhes de um tópico\n\
MD (MKDIR)\tCria um subdirectório\n\
MORE\t\tDisplay output in pages\n\
MOVE\t\tMove um ficheiro, conjunto de ficheiros ou uma árvore de directórios\n\
PATH\t\tConfigura o caminho de procura\n\
POPD\t\tRestores the directory to the last one saved with PUSHD\n\
PROMPT\t\tMuda a 'prompt' de comando\n\
PUSHD\t\tChanges to a new directory, saving the current one\n\
REN (RENAME)\tRenomeia um ficheiro\n\
RD (RMDIR)\tApaga um subdirectório\n\
SET\t\tConfigura ou mostra variáveis de ambiente\n\
TIME\t\tConfigura ou mostra a hora atual do sistema\n\
TITLE\t\tConfigura o título da janela de comando CMD\n\
TYPE\t\tMostra o conteúdo de um ficheiro texto\n\
VER\t\tMostra a versão atual do CMD\n\
VOL\t\tMostra o rótulo do volume de uma unidade de disco\n\
EXIT\t\tFecha o CMD\n\n\
Digite HELP <comando> para mais informações sobre alguns dos comandos acima\n"

  WCMD_CONFIRM, "Are you sure"
  WCMD_YES, "Y"
  WCMD_NO, "N"
  WCMD_NOASSOC, "File association missing for extension %s\n"
  WCMD_NOFTYPE, "No open command associated with file type '%s'\n"
  WCMD_OVERWRITE, "Overwrite %s"
  WCMD_MORESTR, "More..."
  WCMD_TRUNCATEDLINE, "Line in Batch processing possibly truncated. Using:\n"
  WCMD_NYI, "Not Yet Implemented\n\n"
  WCMD_NOARG, "Argument missing\n"
  WCMD_SYNTAXERR, "Syntax error\n"
  WCMD_FILENOTFOUND, "%s : File Not Found\n"
  WCMD_NOCMDHELP, "No help available for %s\n"
  WCMD_NOTARGET, "Target to GOTO not found\n"
  WCMD_CURRENTDATE, "Current Date is %s\n"
  WCMD_CURRENTTIME, "Current Time is %s\n"
  WCMD_NEWDATE, "Enter new date: "
  WCMD_NEWTIME, "Enter new time: "
  WCMD_MISSINGENV, "Environment variable %s not defined\n"
  WCMD_READFAIL, "Failed to open '%s'\n"
  WCMD_CALLINSCRIPT, "Cannot call batch label outside of a batch script\n"
  WCMD_ALL, "A"
  WCMD_DELPROMPT, "%s, Delete"
  WCMD_ECHOPROMPT, "Echo is %s\n"
  WCMD_VERIFYPROMPT, "Verify is %s\n"
  WCMD_VERIFYERR, "Verify must be ON or OFF\n"
  WCMD_ARGERR, "Parameter error\n"
  WCMD_VOLUMEDETAIL, "Volume in drive %c is %s\nVolume Serial Number is %04x-%04x\n\n"
  WCMD_VOLUMEPROMPT, "Volume label (11 characters, ENTER for none)?"
  WCMD_NOPATH, "PATH not found\n"
  WCMD_ANYKEY,"Press Return key to continue: "
  WCMD_CONSTITLE,"Wine Command Prompt"
  WCMD_VERSION,"CMD Version %s\n\n"
  WCMD_MOREPROMPT, "More? "
  WCMD_LINETOOLONG, "The input line is too long.\n"
}
