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

#pragma code_page(65001)

LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

MENU_001 MENU
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
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
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
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
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 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 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 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 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 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 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_PROGRAM_FILESX86        "Arquivos de programas (x86)"
	IDS_MYPICTURES              "Minhas Imagens"
	IDS_PROGRAM_FILES_COMMON    "Arquivos de programas\\Arquivos comuns"
	IDS_PROGRAM_FILES_COMMONX86 "Arquivos de programas (x86)\\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_CONTACTS                "Contatos"
	IDS_LINKS                   "Links"
	IDS_PHOTO_ALBUMS            "Imagens\\Apresentações"
	IDS_PLAYLISTS               "Músicas\\Listas de reprodução"
	IDS_PUBLIC_DOWNLOADS        "Downloads"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\GameExplorer"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Bibliotecas"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Ringtones"
	IDS_SAMPLE_MUSIC            "Músicas\\Amostra de músicas"
	IDS_SAMPLE_PICTURES         "Imagens\\Amostra de imagens"
	IDS_SAMPLE_PLAYLISTS        "Músicas\\Amostra de listas de reprodução"
	IDS_SAMPLE_VIDEOS           "Videos\\Amostra de vídeos"
	IDS_SAVED_GAMES             "Jogos salvos"
	IDS_SAVED_SEARCHES          "Buscas"
	IDS_USER_PROFILES           "Usuários"
	IDS_COMMON_OEM_LINKS        "OEM Links"
	IDS_DOCUMENTS               "Documentos"
	IDS_DOWNLOADS               "Downloads"
	IDS_LOCAL_APPDATA_LOW       "AppData\\LocalLow"

	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_PROGRAM_FILESX86        "Programas (x86)"
	IDS_MYPICTURES              "As Minhas Imagens"
	IDS_PROGRAM_FILES_COMMON    "Programas\\Ficheiros comuns"
	IDS_PROGRAM_FILES_COMMONX86 "Programas (x86)\\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_CONTACTS                "Contatos"
	IDS_LINKS                   "Links"
	IDS_PHOTO_ALBUMS            "Imagens\\Apresentações"
	IDS_PLAYLISTS               "Músicas\\Listas de reprodução"
	IDS_PUBLIC_DOWNLOADS        "Downloads"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\GameExplorer"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Bibliotecas"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Ringtones"
	IDS_SAMPLE_MUSIC            "Músicas\\Amostra de músicas"
	IDS_SAMPLE_PICTURES         "Imagens\\Amostra de imagens"
	IDS_SAMPLE_PLAYLISTS        "Músicas\\Amostra de listas de reprodução"
	IDS_SAMPLE_VIDEOS           "Videos\\Amostra de vídeos"
	IDS_SAVED_GAMES             "Jogos salvos"
	IDS_SAVED_SEARCHES          "Buscas"
	IDS_USER_PROFILES           "Utilizadores"
	IDS_COMMON_OEM_LINKS        "OEM Links"
	IDS_DOCUMENTS               "Documentos"
	IDS_DOWNLOADS               "Downloads"
	IDS_LOCAL_APPDATA_LOW       "AppData\\LocalLow"

	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."
}
