/*
 * Copyright 1998 Juergen Schmied
 * Copyright 2003 Marcelo Duarte
 * Copyright 2006-2007 Américo José Melo
 * Copyright 2009 Ricardo Filipe
 *
 * 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 "shresdef.h"

#pragma code_page(65001)

LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "Ícones &grandes",	FCIDM_SHVIEW_BIGICON
	MENUITEM "Ícones &pequenos",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Detalhes",		FCIDM_SHVIEW_REPORTVIEW
END


/*
 shellview background menu
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Exibir"
	  BEGIN
	    MENUITEM "Ícones &grandes",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "Ícones &pequenos",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Detalhes",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "O&rganizar ícones"
	  BEGIN
	    MENUITEM "Por &nome",	0x30	/* column 0 */
	    MENUITEM "Por &tipo",	0x32	/* column 2 */
	    MENUITEM "Por ta&manho",	0x31	/* ... */
	    MENUITEM "Por &data",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "Auto organi&zar",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Alin&har ícones",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "&Atualizar",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Co&lar",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Colar a&talho",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Novo"
	  BEGIN
	    MENUITEM "&Pasta",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "&Atalho",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Propriedades",	FCIDM_SHVIEW_PROPERTIES
	END
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Mostrar"
	  BEGIN
	    MENUITEM "Ícones &grandes",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "Ícones &pequenos",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Detalhes",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "O&rganizar ícones"
	  BEGIN
	    MENUITEM "Por &nome",	0x30	/* column 0 */
	    MENUITEM "Por &tipo",	0x32	/* column 2 */
	    MENUITEM "Por ta&manho",	0x31	/* ... */
	    MENUITEM "Por &data",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "Auto organi&zar",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Alin&har ícones",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "&Actualizar",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Co&lar",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Colar a&talho",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Novo"
	  BEGIN
	    MENUITEM "&Pasta",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "&Atalho",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Propriedades",	FCIDM_SHVIEW_PROPERTIES
	END
END


/*
 shellview item menu
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Selecionar"	FCIDM_SHVIEW_OPEN
	  MENUITEM "&Explorar",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "A&brir",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "C&ortar",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Copiar",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Criar a&talho",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "E&xcluir",		FCIDM_SHVIEW_DELETE
	  MENUITEM "&Renomear",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Propriedades",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Seleccionar"	FCIDM_SHVIEW_OPEN
	  MENUITEM "&Explorar",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "A&brir",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "C&ortar",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Copiar",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Criar a&talho",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "Re&mover",		FCIDM_SHVIEW_DELETE
	  MENUITEM "&Renomear",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Propriedades",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Ficheiro"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Sair", IDM_CPANEL_EXIT
    END

    POPUP "&Ver"
    BEGIN
        MENUITEM "Ícones &grandes", FCIDM_SHVIEW_BIGICON
        MENUITEM "Ícones &pequenos", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Detalhes", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Ajuda"
    BEGIN
        MENUITEM "&Sobre o painel de controlo...", IDM_CPANEL_ABOUT
    END
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

MENU_CPANEL MENU
BEGIN
    POPUP "&Arquivo"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "E&xit", IDM_CPANEL_EXIT
    END

    POPUP "&Visualizar"
    BEGIN
        MENUITEM "Ícones &grandes", FCIDM_SHVIEW_BIGICON
        MENUITEM "Ícones &pequenos", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Detalhes", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "A&juda"
    BEGIN
        MENUITEM "&Sobre o Painel de Controle...", IDM_CPANEL_ABOUT
    END
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Procurar pasta"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancelar", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
 LTEXT "", IDD_TITLE, 4, 4, 180, 12
 LTEXT "", IDD_STATUS, 4, 25, 180, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
 	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	4, 40, 180, 120
}

SHNEWBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Procurar Pasta"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Pasta:", IDD_FOLDER, 10, 156, 40, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	12, 38, 194, 105
 EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Criar nova pasta", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Cancelar", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
}

SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Mensagem"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Sim", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Sim a &todos", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Não", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Cancelar", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sobre %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "&Licença do Wine", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10
 LTEXT "Executando em %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine foi disponibilizado por:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Acerca do %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "&Licença do Wine", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 40, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10
 LTEXT "Executando em %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine disponibilizado por:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Digite o nome do programa, pasta, documento, ou endereço Internet que o Wine irá abri-lo.", 12289, 36, 11, 182, 18
 LTEXT "&Abrir:", 12305, 7, 39, 24, 10
 CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Cancelar", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Procurar...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Digite o nome do programa, pasta, documento, ou endereço Internet, que o Wine irá abrí-lo.", 12289, 36, 11, 182, 18
 LTEXT "&Abrir:", 12305, 7, 39, 24, 10
 CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Cancelar", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Procurar...", 12288, 170, 63, 50, 14, WS_TABSTOP
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Arquivo"
	IDS_SHV_COLUMN2		"Tamanho"
	IDS_SHV_COLUMN3		"Tipo"
	IDS_SHV_COLUMN4		"Modificado"
	IDS_SHV_COLUMN5		"Atributos"
	IDS_SHV_COLUMN6		"Tamanho"
	IDS_SHV_COLUMN7		"Disponível"
	IDS_SHV_COLUMN8		"Nome"
	IDS_SHV_COLUMN9		"Comentários"
	IDS_SHV_COLUMN10	"Dono"
	IDS_SHV_COLUMN11	"Grupo"
	IDS_SHV_COLUMN_DELFROM	"Localização original"
	IDS_SHV_COLUMN_DELDATE	"Data de exclusão"
	IDS_SHV_COL_DOCS	"Documentos"
	IDS_SHV_COL_STATUS	"Estado"
	IDS_SHV_COL_LOCATION	"Localização"
	IDS_SHV_COL_MODEL	"Modelo"

        /* special folders */
	IDS_DESKTOP		"Área de Trabalho"
	IDS_MYCOMPUTER		"Meu Computador"
	IDS_RECYCLEBIN_FOLDER_NAME      "Lixeira"
	IDS_CONTROLPANEL	"Painel de Controle"

        /* context menus */
	IDS_VIEW_LARGE		"Ícones &grandes"
	IDS_VIEW_SMALL		"Ícones &pequenos"
	IDS_VIEW_LIST		"&Lista"
	IDS_VIEW_DETAILS	"&Detalhes"
	IDS_SELECT		"Selecionar"
	IDS_OPEN		"Abrir"

	IDS_CREATEFOLDER_DENIED "Não foi possível criar nova pasta: Permissão negada."
	IDS_CREATEFOLDER_CAPTION "Erro durante a criação da nova pasta"
	IDS_DELETEITEM_CAPTION "Confirmar exclusão de arquivo"
	IDS_DELETEFOLDER_CAPTION "Confirmar exclusão de pasta"
	IDS_DELETEITEM_TEXT "Você tem certeza que deseja excluir '%1'?"
	IDS_DELETEMULTIPLE_TEXT "Você tem certeza que deseja excluir estes %1 itens?"
	IDS_OVERWRITEFILE_TEXT "Esta pasta já contém um arquivo chamado '%1'.\n\nDeseja sobrescrevê-lo?"
	IDS_DELETESELECTED_TEXT "Tem certeza que deseja excluir o(s) item(s) selecionado(s)?"
	IDS_TRASHITEM_TEXT "Tem certeza que deseja enviar '%1' para a Lixeira?"
	IDS_TRASHFOLDER_TEXT "Tem certeza que deseja enviar '%1' e todo seu conteúdo para a Lixeira?"
	IDS_TRASHMULTIPLE_TEXT "Tem certeza que deseja enviar estes %1 itens para a Lixeira?"
	IDS_CANTTRASH_TEXT "O item '%1' não pode ser enviado à Lixeira. Deseja exclui-lo em vez disso?"
	IDS_OVERWRITEFILE_CAPTION "Confirmar sobrescrever arquivo"
	IDS_OVERWRITEFOLDER_TEXT "Esta pasta já contém uma pasta chamada '%1'.\n\n"\
	    "Se os arquivos da pasta de destino tiverem os mesmos nomes que os arquivos\n"\
	    "na pasta selecionada, eles serão sobrescritos. Deseja mover ou copiar a pasta\n"\
	    "mesmo assim?"

        /* message box strings */
	IDS_RESTART_TITLE       "Reiniciar"
	IDS_RESTART_PROMPT      "Deseja simular a reinicialização do Windows?"
	IDS_SHUTDOWN_TITLE      "Desligar"
	IDS_SHUTDOWN_PROMPT     "Deseja finalizar a sessão do Wine?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Não é possível mostrar a caixa de diálogo Executar Arquivo (erro interno)"
        IDS_RUNDLG_BROWSE_ERROR    "Não é possível mostrar a caixa de diálogo de Procura (erro interno)"
        IDS_RUNDLG_BROWSE_CAPTION  "Procurar"
        IDS_RUNDLG_BROWSE_FILTER   "Arquivos executáveis\0*.exe\0Todos os arquivos\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Menu Iniciar\\Programas"
	IDS_PERSONAL                "Meus Documentos"
	IDS_FAVORITES               "Favoritos"
	IDS_STARTUP                 "Menu Iniciar\\Programas\\Iniciar"
	IDS_RECENT                  "Recentes"
	IDS_SENDTO                  "Enviar Para"
	IDS_STARTMENU               "Menu Iniciar"
	IDS_MYMUSIC                 "Minhas Músicas"
	IDS_MYVIDEO                 "Meus Vídeos"
	IDS_DESKTOPDIRECTORY        "Área de Trabalho"
	IDS_NETHOOD                 "Rede"
	IDS_TEMPLATES               "Modelo"
	IDS_APPDATA                 "Dados de aplicativos"
	IDS_PRINTHOOD               "Impressoras"
	IDS_LOCAL_APPDATA           "Configurações locais\\Dados de aplicativos"
	IDS_INTERNET_CACHE          "Configurações locais\\Arquivos temporários da Internet"
	IDS_COOKIES                 "Cookies"
	IDS_HISTORY                 "Configurações locais\\Histórico"
	IDS_PROGRAM_FILES           "Arquivos de programas"
	IDS_MYPICTURES              "Minhas Imagens"
	IDS_PROGRAM_FILES_COMMON    "Arquivos de programas\\Arquivos comuns"
	IDS_COMMON_DOCUMENTS        "Documentos"
	IDS_ADMINTOOLS              "Menu Iniciar\\Programas\\Ferramentas Administrativas"
	IDS_COMMON_MUSIC            "Documentos\\Minhas Músicas"
	IDS_COMMON_PICTURES         "Documentos\\Minhas Imagens"
	IDS_COMMON_VIDEO            "Documentos\\Meus Vídeos"
	IDS_CDBURN_AREA             "Configurações locais\\Dados de aplicativos\\Microsoft\\CD Burning"

	IDS_NEWFOLDER               "Nova Pasta"

	IDS_CPANEL_TITLE            "Painel de Controle do Wine"
	IDS_CPANEL_NAME             "Nome"
	IDS_CPANEL_DESCRIPTION      "Descrição"
        IDS_SHLEXEC_NOASSOC         "Não existe um programa Windows configurado para abrir este tipo de arquivo."
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Ficheiro"
	IDS_SHV_COLUMN2		"Tamanho"
	IDS_SHV_COLUMN3		"Tipo"
	IDS_SHV_COLUMN4		"Modificado"
	IDS_SHV_COLUMN5		"Atributos"
	IDS_SHV_COLUMN6		"Tamanho"
	IDS_SHV_COLUMN7		"Disponível"
	IDS_SHV_COLUMN8		"Nome"
	IDS_SHV_COLUMN9		"Comentários"
	IDS_SHV_COLUMN10	"Dono"
	IDS_SHV_COLUMN11	"Grupo"
	IDS_SHV_COLUMN_DELFROM	"Localização original"
	IDS_SHV_COLUMN_DELDATE	"Data de exclusão"
	IDS_SHV_COL_DOCS	"Documentos"
	IDS_SHV_COL_STATUS	"Estado"
	IDS_SHV_COL_LOCATION	"Localização"
	IDS_SHV_COL_MODEL	"Modelo"

        /* special folders */
	IDS_DESKTOP		"Ambiente de trabalho"
	IDS_MYCOMPUTER		"O Meu Computador"
	IDS_RECYCLEBIN_FOLDER_NAME      "Reciclagem"
	IDS_CONTROLPANEL	"Painel de controlo"

        /* context menus */
	IDS_VIEW_LARGE		"Ícones &grandes"
	IDS_VIEW_SMALL		"Ícones &pequenos"
	IDS_VIEW_LIST		"&Lista"
	IDS_VIEW_DETAILS	"&Detalhes"
	IDS_SELECT		"Seleccionar"
	IDS_OPEN		"Abrir"

	IDS_CREATEFOLDER_DENIED "Não é possível criar nova pasta: Permissão negada."
	IDS_CREATEFOLDER_CAPTION "Erro durante a criação da nova pasta"
	IDS_DELETEITEM_CAPTION "Confirmar exclusão do ficheiro"
	IDS_DELETEFOLDER_CAPTION "Confirmar exclusão da pasta"
	IDS_DELETEITEM_TEXT "Tem certeza que deseja excluir '%1'?"
	IDS_DELETEMULTIPLE_TEXT "Tem certeza que deseja excluir estes %1 itens?"
	IDS_DELETESELECTED_TEXT "Tem a certeza que deseja excluir os itens seleccionados?"
	IDS_TRASHITEM_TEXT "Tem a certeza que quer enviar '%1' para a Reciclagem?"
	IDS_TRASHFOLDER_TEXT "Tem a certeza que quer enviar '%1' e todo o seu conteúdo para a Reciclagem?"
	IDS_TRASHMULTIPLE_TEXT "Tem a certeza que quer enviar estes %1 itens para a Reciclagem?"
	IDS_CANTTRASH_TEXT "O item '%1' não pode ser enviado para a Reciclagem. Deseja apagá-lo em vez disso?"
	IDS_OVERWRITEFILE_TEXT "Substituir ficheiro %1?"
	IDS_OVERWRITEFILE_CAPTION "Confirmar substituição de ficheiro"
	IDS_OVERWRITEFOLDER_TEXT "Esta pasta já contém uma pasta chamada '%1'.\n\n"\
	    "Se os ficheiros na pasta de destino tiverem os mesmos nomes de ficheiros na\n"\
	    "pasta seleccionada eles serão substituídos. Ainda deseja mover ou copiar a pasta?"

        /* message box strings */
	IDS_RESTART_TITLE       "Reiniciar"
	IDS_RESTART_PROMPT      "Deseja simular a reinicialização do Windows?"
	IDS_SHUTDOWN_TITLE      "Desligar"
	IDS_SHUTDOWN_PROMPT     "Deseja finalizar esta sessão do Wine?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Não é possível mostrar a caixa de diálogo Executar Ficheiro (erro interno)"
        IDS_RUNDLG_BROWSE_ERROR    "Não é possível mostrar a caixa de diálogo de Procura (erro interno)"
        IDS_RUNDLG_BROWSE_CAPTION  "Procurar"
        IDS_RUNDLG_BROWSE_FILTER   "Ficheiros executáveis\0*.exe\0Todos os ficheiros\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Menu Iniciar\\Programas"
	IDS_PERSONAL                "Os Meus Documentos"
	IDS_FAVORITES               "Favoritos"
	IDS_STARTUP                 "Menu Iniciar\\Programas\\Iniciar"
	IDS_RECENT                  "Recentes"
	IDS_SENDTO                  "Enviar Para"
	IDS_STARTMENU               "Menu Iniciar"
	IDS_MYMUSIC                 "As Minhas Músicas"
	IDS_MYVIDEO                 "Os Meus Vídeos"
	IDS_DESKTOPDIRECTORY        "Ambiente de Trabalho"
	IDS_NETHOOD                 "Rede"
	IDS_TEMPLATES               "Modelos"
	IDS_APPDATA                 "Dados de aplicação"
	IDS_PRINTHOOD               "Impressoras"
	IDS_LOCAL_APPDATA           "Definições locais\\Dados de aplicação"
	IDS_INTERNET_CACHE          "Definições locais\\Ficheiros temporários de Internet"
	IDS_COOKIES                 "Cookies"
	IDS_HISTORY                 "Definições locais\\Histórico"
	IDS_PROGRAM_FILES           "Programas"
	IDS_MYPICTURES              "As Minhas Imagens"
	IDS_PROGRAM_FILES_COMMON    "Programas\\Ficheiros comuns"
	IDS_COMMON_DOCUMENTS        "Os Meus Documentos"
	IDS_ADMINTOOLS              "Menu Iniciar\\Programas\\Ferramentas Administrativas"
	IDS_COMMON_MUSIC            "Os Meus Documentos\\As Minhas Músicas"
	IDS_COMMON_PICTURES         "Os Meus Documentos\\As Minhas Imagens"
	IDS_COMMON_VIDEO            "Os Meus Documentos\\Os Meus Vídeos"
	IDS_CDBURN_AREA             "Definições locais\\Dados de aplicação\\Microsoft\\CD Burning"

	IDS_NEWFOLDER               "Nova Pasta"

	IDS_CPANEL_TITLE            "Painel de controlo do Wine"
	IDS_CPANEL_NAME             "Nome"
	IDS_CPANEL_DESCRIPTION      "Descrição"
        IDS_SHLEXEC_NOASSOC         "Não existe um programa Windows configurado para abrir este tipo de ficheiro."
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Licença do Wine"
IDS_LICENSE,
"O Wine é software livre; você pode redistribui-lo e/ou \
modificá-lo sob os termos da GNU Lesser General Public \
License tal como publicado pela Free Software Foundation; seja a \
versão 2.1 da Licença, ou (por sua escolha) outra versão mais recente.\n\n\
O Wine é distribuído na esperança de que seja útil, \
mas SEM QUALQUER GARANTIA; nem sequer a garantia implícita de \
MERCANTIBILIDADE ou FEITO PARA UM PROPÓSITO ESPECÍFICO. Veja a GNU \
Lesser General Public License para mais detalhes.\n\n\
Você deve ter recebido uma cópia da GNU Lesser General Public \
License com o Wine; senão, escreva à Free Software \
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Licença do Wine"
IDS_LICENSE,
"O Wine é software livre; você pode redistribuí-lo e/ou \
modificá-lo sob os termos da GNU Lesser General Public \
License tal como publicado pela Free Software Foundation; seja a \
versão 2.1 da Licença, ou (por sua escolha) outra versão mais recente.\n\n\
O Wine é distribuído na esperança que seja útil, \
mas SEM QUALQUER GARANTIA; nem sequer a garantia implícita de \
MERCANTIBILIDADE ou FEITO PARA UM PROPÓSITO ESPECÍFICO.  veja a GNU \
Lesser General Public License para mais detalhes.\n\n\
Deverá ter recebido uma cópia da GNU Lesser General Public \
License com o Wine; se não, escreva à Free Software \
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."
}
