/*
 * WineFile
 * Portuguese Language Support
 *
 * Copyright 2003 Marcelo Duarte
 * Copyright 2004,2007 Américo José Melo
 *
 * 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 "resource.h"

#pragma code_page(65001)

/* Menu */

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&Arquivo"  {
        MENUITEM "A&brir\tEnter",               ID_ACTIVATE
        MENUITEM "&Mover...\tF7",               ID_FILE_MOVE
        MENUITEM "&Copiar...\tF8",              ID_FILE_COPY
        MENUITEM "&In Clipboard...\tF9",        118
        MENUITEM "E&xcluir\tDel",               ID_FILE_DELETE
        MENUITEM "Re&nomear...",                109
        MENUITEM "&Propriedades...\tAlt+Enter", ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "C&omprimir...",               119
        MENUITEM "Descomprimir...",             120
        MENUITEM SEPARATOR
        MENUITEM "Execu&tar...",                ID_EXECUTE
        MENUITEM "&Imprimir...",                102
        MENUITEM "A&ssociar...",                103
        MENUITEM SEPARATOR
        MENUITEM "Cri&ar pasta...",             111
        MENUITEM "P&esquisar...",               104
        MENUITEM "Selecionar arqui&vos...",     116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "Sai&r\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "Sai&r",                       ID_FILE_EXIT
#endif
    }

    POPUP "&Disco"  {
        MENUITEM "&Copiar disco...",            201
        MENUITEM "&Nomear disco...",            202
        MENUITEM SEPARATOR
        MENUITEM "&Formatar disco...",          ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "&Gerar disco de sistema...", -1   /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Conecta&r unidade de rede",   ID_CONNECT_NETWORK_DRIVE
        MENUITEM "&Desconectar unidade de rede",ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "C&ompartilhar como...",       254
        MENUITEM "&Remover compartilhamento...",255
        MENUITEM SEPARATOR
        MENUITEM "Selecionar &unidade...",      251
    }

    POPUP "Á&rvore"  {
        MENUITEM "&Próximo nível\t+",           301
        MENUITEM "Expandi&r pasta\t*",          302
        MENUITEM "Expandir &tudo\tStrg+*",      303
        MENUITEM "Recolher p&asta\t-",          304
        MENUITEM SEPARATOR
        MENUITEM "&Indicar subníveis",          505
    }

    POPUP "&Exibir"  {
        MENUITEM "Á&rvore e pasta",             413
        MENUITEM "S&omente árvore",             411
        MENUITEM "So&mente pasta",              412
        MENUITEM SEPARATOR
        MENUITEM "&Dividir",                    ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Nome",                       ID_VIEW_NAME
        MENUITEM "&Todos os delalhes",          ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "D&etalhes parciais...",       ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "&Classificar por nome",       ID_VIEW_SORT_NAME
        MENUITEM "C&lassificar por tipo",       ID_VIEW_SORT_TYPE
        MENUITEM "Cl&assificar por tamanho",    ID_VIEW_SORT_SIZE
        MENUITEM "Cla&ssificar por &data",      ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Classificar &por...",         ID_VIEW_FILTER
    }

    POPUP "&Opções"  {
        MENUITEM "&Confirmação...",             501
        MENUITEM "&Fonte...",                   ID_SELECT_FONT
        MENUITEM "&Personalizar barra de ferramentas...", 512
        MENUITEM SEPARATOR
        MENUITEM "Barra d&e ferramentas",       ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "&Barra de unidades",          ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "B&arra de &status",           ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "Tela Cheia\tCtrl+Shift+S",    ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Minimizar durante o uso",    504
        MENUITEM "&Salvar configurações ao sair",511
    }


    POPUP "&Segurança"  {
        MENUITEM "&Acesso...",                  605
        MENUITEM "&Logging...",                 606
        MENUITEM "&Owner...",                   607
    }

    POPUP "&Janela"  {
        MENUITEM "&Nova janela",                ID_WINDOW_NEW
        MENUITEM "&Em cascata\tCtrl+F5",        ID_WINDOW_CASCADE
        MENUITEM "Lado a lado &horizontalmente",ID_WINDOW_TILE_HORZ
        MENUITEM "Lado a lado &verticalmente\tCtrl+F4",ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Organizar automaticamente",   ID_WINDOW_AUTOSORT
#endif
        MENUITEM "&Organizar ícones",           ID_WINDOW_ARRANGE
        MENUITEM "&Atualizar\tF5",              ID_REFRESH
    }

    POPUP "Aj&uda"  {
        MENUITEM "&Tópicos da ajuda\tF1",       ID_HELP
        MENUITEM "Pesquisar...",                ID_HELP
        MENUITEM "&Usando a ajuda",             ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&Sobre o Winefile...",        ID_ABOUT
    }
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&Ficheiro"  {
        MENUITEM "A&brir\tEnter",               ID_ACTIVATE
        MENUITEM "&Mover...\tF7",               ID_FILE_MOVE
        MENUITEM "&Copiar...\tF8",              ID_FILE_COPY
        MENUITEM "&Na Area de Transferência...\tF9",        118
        MENUITEM "E&xcluir\tDel",               ID_FILE_DELETE
        MENUITEM "Re&nomear...",                109
        MENUITEM "&Propriedades...\tAlt+Enter", ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "C&omprimir...",               119
        MENUITEM "&Descomprimir...",            120
        MENUITEM SEPARATOR
        MENUITEM "Execu&tar...",                ID_EXECUTE
        MENUITEM "&Imprimir...",                102
        MENUITEM "A&ssociar...",                103
        MENUITEM SEPARATOR
        MENUITEM "Cri&ar pasta...",             111
        MENUITEM "P&esquisar...",               104
        MENUITEM "Seleccionar fichei&ros...",    116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "Sai&r\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "Sai&r",                       ID_FILE_EXIT
#endif
    }

    POPUP "&Disco"  {
        MENUITEM "&Copiar disco...",            201
        MENUITEM "&Nomear disco...",            202
        MENUITEM SEPARATOR
        MENUITEM "&Formatar disco...",          ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "&Gerar disco de sistema...", -1   /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Liga&r unidade de rede",   ID_CONNECT_NETWORK_DRIVE
        MENUITEM "&Desligar unidade de rede",ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "&Partilhar como...",          254
        MENUITEM "&Remover partilha...",        255
        MENUITEM SEPARATOR
        MENUITEM "Seleccionar &unidade...",     251
    }

    POPUP "Á&rvore"  {
        MENUITEM "&Próximo nível\t+",           301
        MENUITEM "Expandi&r pasta\t*",          302
        MENUITEM "Expandir &tudo\tStrg+*",      303
        MENUITEM "Recolher p&asta\t-",          304
        MENUITEM SEPARATOR
        MENUITEM "&Indicar subníveis",          505
    }

    POPUP "&Exibir"  {
        MENUITEM "Á&rvore e pasta",             413
        MENUITEM "A&penas árvore",             411
        MENUITEM "Ap&enas pasta",              412
        MENUITEM SEPARATOR
        MENUITEM "&Dividir",                    ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Nome",                       ID_VIEW_NAME
        MENUITEM "&Todos os delalhes",          ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "D&etalhes parciais...",       ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "&Classificar por nome",       ID_VIEW_SORT_NAME
        MENUITEM "C&lassificar por tipo",       ID_VIEW_SORT_TYPE
        MENUITEM "Cl&assificar por tamanho",    ID_VIEW_SORT_SIZE
        MENUITEM "Cla&ssificar por &data",      ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Classificar &por...",         ID_VIEW_FILTER
    }

    POPUP "&Opções"  {
        MENUITEM "&Confirmação...",             501
        MENUITEM "&Tipo de Letra...",                   ID_SELECT_FONT
        MENUITEM "&Personalizar barra de ferramentas...", 512
        MENUITEM SEPARATOR
        MENUITEM "Barra d&e ferramentas",       ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "&Barra de unidades",          ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "B&arra de e&stado",           ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "Ecrã Completo\tCtrl+Shift+S",    ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Minimizar durante o uso",    504
        MENUITEM "&Gravar configurações ao sair",511
    }


    POPUP "&Segurança"  {
        MENUITEM "&Acesso...",                  605
        MENUITEM "&Autenticação...",                 606
        MENUITEM "&Dono...",                    607
    }

    POPUP "&Janela"  {
        MENUITEM "&Nova janela",                ID_WINDOW_NEW
        MENUITEM "&Em cascata\tCtrl+F5",        ID_WINDOW_CASCADE
        MENUITEM "Lado a lado &horizontalmente",ID_WINDOW_TILE_HORZ
        MENUITEM "Lado a lado &verticalmente\tCtrl+F4",ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Organizar automaticamente",   ID_WINDOW_AUTOSORT
#endif
        MENUITEM "&Organizar ícones",           ID_WINDOW_ARRANGE
        MENUITEM "&Actualizar\tF5",             ID_REFRESH
    }

    POPUP "Aj&uda"  {
        MENUITEM "&Tópicos da ajuda\tF1",       ID_HELP
        MENUITEM "Pesquisar...",                ID_HELP
        MENUITEM "&Usar a ajuda",             ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&Sobre o Winefile...",        ID_ABOUT
    }
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Executar"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Comando:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    CONTROL         "&Minimizado", 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Cancelar", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Ajuda", 254, 158, 43, 47, 14
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Selecionar destino"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Caminho:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Cancelar", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Procurar", 254, 158, 43, 47, 14
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Seleccionar destino"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Localização:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Cancelar", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Procurar", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Por tipo de ficheiro"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Nome:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Tipo de ficheiro",-1,7,23,87,56
    CONTROL         "&Directórios",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programas",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "Docu&mentos",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Outros ficheiros",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "&Mostrar ficheiros ocultos/sistema",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Cancelar",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Propriedades de %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Cancelar",IDCANCEL,191,29,50,14
    LTEXT           "&Nome do ficheiro:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Localização Completa:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Última alteração:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Versão:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Direitos de autor:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Tamanho:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Atributos",-1,7,79,158,46
    CONTROL         "&Apenas de leitura",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "&Ocultos",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Arquivos",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&Sistema",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Comprimidos",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Informação de versão",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Aplicando configurações de fonte"
    IDS_FONT_SEL_ERROR      "Erro enquanto seleciona nova fonte."
}

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "A aplicar configurações do tipo de letra"
    IDS_FONT_SEL_ERROR      "Erro ao seleccionar novo tipo de letra."
}


LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

STRINGTABLE
{
 IDS_WINEFILE               "Winefile"
 IDS_ERROR                  "Erro"
 IDS_ROOT_FS                "root fs"
 IDS_UNIXFS                 "unixfs"
 IDS_DESKTOP                "Área de trabalho"
 IDS_SHELL                  "Linha de comandos"
 IDS_TITLEFMT               "%s - %s"
 IDS_NO_IMPL                "Ainda não implementado"
 IDS_WINE_FILE              "Ficheiro Wine"
}

STRINGTABLE
{
 IDS_COL_NAME               "Nome"
 IDS_COL_SIZE               "Tamanho"
 IDS_COL_CDATE              "CData"
 IDS_COL_ADATE              "AData"
 IDS_COL_MDATE              "MData"
 IDS_COL_IDX                "Índice/Inode"
 IDS_COL_LINKS              "Ligações"
 IDS_COL_ATTR               "Atributos"
 IDS_COL_SEC                "Segurança"

 IDS_FREE_SPACE_FMT         "%s de %s livre"
}
