/*
 * Portuguese Language File
 *
 * Copyright 2008 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 "wordpad.h"

#pragma code_page(65001)

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

IDM_MAINMENU MENU
BEGIN
    POPUP "&Arquivo"
    BEGIN
        MENUITEM "&Novo...\tCtrl+N",       ID_FILE_NEW
        MENUITEM "&Abrir...\tCtrl+O",      ID_FILE_OPEN
        MENUITEM "&Salvar\tCtrl+S",        ID_FILE_SAVE
        MENUITEM "Salvar &como...",        ID_FILE_SAVEAS
        MENUITEM SEPARATOR
        MENUITEM "&Imprimir...\tCtrl+P",   ID_PRINT
        MENUITEM "&Pré visualizar...",     ID_PREVIEW
        MENUITEM "C&onfigurar página...",  ID_PRINTSETUP
        MENUITEM SEPARATOR
        MENUITEM "&Sair",                  ID_FILE_EXIT
    END
    POPUP "&Editar"
    BEGIN
        MENUITEM "&Desfazer\tCtrl+Z",           ID_EDIT_UNDO
        MENUITEM "&Refazer\tCtrl+Y",            ID_EDIT_REDO
        MENUITEM SEPARATOR
        MENUITEM "Cor&tar\tCtrl+X",             ID_EDIT_CUT
        MENUITEM "C&opiar\tCtrl+C",             ID_EDIT_COPY
        MENUITEM "&Colar\tCtrl+V",              ID_EDIT_PASTE
        MENUITEM "&Limpar\tDEL",                ID_EDIT_CLEAR
        MENUITEM "&Selecionar tudo\tCtrl+A",    ID_EDIT_SELECTALL
        MENUITEM SEPARATOR
        MENUITEM "Locali&zar...\tCtrl+F",       ID_FIND
        MENUITEM "&Localizar próxima\tF3",      ID_FIND_NEXT
        MENUITEM "Substitui&r...\tCtrl+H",      ID_REPLACE
        MENUITEM SEPARATOR
        MENUITEM "Some&nte leitura",            ID_EDIT_READONLY
        MENUITEM "&Modificado",                 ID_EDIT_MODIFIED
        MENUITEM SEPARATOR
        POPUP "E&xtras"
        BEGIN
            MENUITEM "&Informação da selecção",           ID_EDIT_SELECTIONINFO
            MENUITEM "&Formato dos caracteres",           ID_EDIT_CHARFORMAT
            MENUITEM "&Definir formato dos caracteres",   ID_EDIT_DEFCHARFORMAT
            MENUITEM "F&ormato dos parágrafos",           ID_EDIT_PARAFORMAT
            MENUITEM "&Buscar texto",                     ID_EDIT_GETTEXT
        END
    END
    POPUP "E&xibir"
    BEGIN
        MENUITEM "&Barra de Ferramentas",    ID_TOGGLE_TOOLBAR
        MENUITEM "Barra de &Formatação",     ID_TOGGLE_FORMATBAR
        MENUITEM "&Régua",                   ID_TOGGLE_RULER
        MENUITEM "Barra de &Estado",         ID_TOGGLE_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Opções...",               ID_VIEWPROPERTIES
    END
    POPUP "&Inserir"
    BEGIN
        MENUITEM "&Data e hora...",  ID_DATETIME
    END
    POPUP "F&ormatar"
    BEGIN
        MENUITEM "&Fonte...",       ID_FONTSETTINGS
        MENUITEM "&Marcadores"      ID_BULLET
        MENUITEM "&Parágrafo..."    ID_PARAFORMAT
        MENUITEM "T&abulação..."    ID_TABSTOPS
        POPUP "&Fundo"
        BEGIN
            MENUITEM "&Sistema\tCtrl+1",            ID_BACK_1
            MENUITEM "&PostThat amarelo\tCtrl+2",   ID_BACK_2
        END
    END
    POPUP "&Ajuda"
    BEGIN
        MENUITEM "&Sobre Wine Wordpad"       ID_ABOUT
    END
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

IDM_MAINMENU MENU
BEGIN
    POPUP "&Ficheiro"
    BEGIN
        MENUITEM "&Novo...\tCtrl+N",       ID_FILE_NEW
        MENUITEM "&Abrir...\tCtrl+O",      ID_FILE_OPEN
        MENUITEM "&Guardar\tCtrl+S",         ID_FILE_SAVE
        MENUITEM "Guardar &como...",           ID_FILE_SAVEAS
        MENUITEM SEPARATOR
        MENUITEM "&Imprimir...\tCtrl+P",     ID_PRINT
        MENUITEM "&Pré visualizar...",     ID_PREVIEW
        MENUITEM "C&onfigurar página...",        ID_PRINTSETUP
        MENUITEM SEPARATOR
        MENUITEM "&Sair",                 ID_FILE_EXIT
    END
    POPUP "&Editar"
    BEGIN
        MENUITEM "&Anular\tCtrl+Z",               ID_EDIT_UNDO
        MENUITEM "&Refazer\tCtrl+Y",               ID_EDIT_REDO
        MENUITEM SEPARATOR
        MENUITEM "&Cortar\tCtrl+X",                ID_EDIT_CUT
        MENUITEM "C&opiar\tCtrl+C",               ID_EDIT_COPY
        MENUITEM "Col&ar\tCtrl+V",              ID_EDIT_PASTE
        MENUITEM "&Limpar\tDEL",                 ID_EDIT_CLEAR
        MENUITEM "&Seleccionar tudo\tCtrl+A",         ID_EDIT_SELECTALL
        MENUITEM SEPARATOR
        MENUITEM "Local&izar...\tCtrl+F",            ID_FIND
        MENUITEM "&Encontrar Seguinte\tF3",              ID_FIND_NEXT
        MENUITEM "&Substituir...\tCtrl+H",         ID_REPLACE
        MENUITEM SEPARATOR
        MENUITEM "Some&nte leitura",                  ID_EDIT_READONLY
        MENUITEM "&Modificado",                   ID_EDIT_MODIFIED
        MENUITEM SEPARATOR
        POPUP "E&xtras"
        BEGIN
            MENUITEM "&Informação da selecção",             ID_EDIT_SELECTIONINFO
            MENUITEM "&Formato dos caracteres",           ID_EDIT_CHARFORMAT
            MENUITEM "&Definir formato dos caracteres",           ID_EDIT_DEFCHARFORMAT
            MENUITEM "F&ormato dos parágrafos",           ID_EDIT_PARAFORMAT
            MENUITEM "&Buscar texto",                   ID_EDIT_GETTEXT
        END
    END
    POPUP "&Ver"
    BEGIN
        MENUITEM "&Barra de Ferramentas",        ID_TOGGLE_TOOLBAR
        MENUITEM "Barra de &Formatação",      ID_TOGGLE_FORMATBAR
        MENUITEM "&Régua",          ID_TOGGLE_RULER
        MENUITEM "Barra de &Estado",      ID_TOGGLE_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Opções...",     ID_VIEWPROPERTIES
    END
    POPUP "&Inserir"
    BEGIN
        MENUITEM "&Data e hora...",  ID_DATETIME
    END
    POPUP "F&ormato"
    BEGIN
        MENUITEM "&Tipo de Letra...",                     ID_FONTSETTINGS
        MENUITEM "&Lista de marcas"                ID_BULLET
        MENUITEM "&Parágrafo..."                 ID_PARAFORMAT
        MENUITEM "T&abulações..."                      ID_TABSTOPS
        POPUP "&Fundo"
        BEGIN
            MENUITEM "&Sistema\tCtrl+1",         ID_BACK_1
            MENUITEM "&PostThat amarelo\tCtrl+2",           ID_BACK_2
        END
    END
    POPUP "&Ajuda"
    BEGIN
        MENUITEM "&Sobre Wine Wordpad"       ID_ABOUT
    END
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

IDM_POPUP MENU
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "&Cortar",         ID_EDIT_CUT
        MENUITEM "C&opiar",         ID_EDIT_COPY
        MENUITEM "Co&lar",          ID_EDIT_PASTE
        MENUITEM SEPARATOR
        MENUITEM "&Marcadores"      ID_BULLET
        MENUITEM "&Parágrafo..."    ID_PARAFORMAT
    END
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

IDM_POPUP MENU
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "&Cortar",                ID_EDIT_CUT
        MENUITEM "C&opiar",               ID_EDIT_COPY
        MENUITEM "Co&lar",              ID_EDIT_PASTE
        MENUITEM SEPARATOR
        MENUITEM "&Lista de marcas"       ID_BULLET
        MENUITEM "&Parágrafo..."        ID_PARAFORMAT
    END
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

IDM_COLOR_POPUP MENU
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "Preto"         ID_COLOR_BLACK
        MENUITEM "Castanho"      ID_COLOR_MAROON
        MENUITEM "Verde"         ID_COLOR_GREEN
        MENUITEM "Verde-oliva"   ID_COLOR_OLIVE
        MENUITEM "Azul-marinho"  ID_COLOR_NAVY
        MENUITEM "Roxo"          ID_COLOR_PURPLE
        MENUITEM "Azul-petróleo" ID_COLOR_TEAL
        MENUITEM "Cinza"         ID_COLOR_GRAY
        MENUITEM "Prateado"      ID_COLOR_SILVER
        MENUITEM "Vermelho"      ID_COLOR_RED
        MENUITEM "Verde-limão"   ID_COLOR_LIME
        MENUITEM "Amarelo"       ID_COLOR_YELLOW
        MENUITEM "Azul"          ID_COLOR_BLUE
        MENUITEM "Fúcsia"        ID_COLOR_FUCHSIA
        MENUITEM "Azul-piscina"  ID_COLOR_AQUA
        MENUITEM "Branco"        ID_COLOR_WHITE
        MENUITEM "Automático"    ID_COLOR_AUTOMATIC
    END
END

IDD_DATETIME DIALOG 30, 20, 130, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Data e hora"
FONT 10, "MS Sans Serif"
BEGIN
    LTEXT        "Formatos Disponíveis",-1,3,2,100,15
    LISTBOX      IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT | LBS_NOTIFY
    PUSHBUTTON   "&OK",IDOK,87,12,40,12
    PUSHBUTTON   "&Cancelar",IDCANCEL,87,26,40,12
END

IDD_NEWFILE DIALOG 30, 20, 140, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Novo"
FONT 10, "MS Sans Serif"
BEGIN
    LTEXT        "Novo tipo de documento",-1,3,2,100,15
    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
    PUSHBUTTON   "&OK",IDOK,97,12,40,12
    PUSHBUTTON   "&Cancelar",IDCANCEL,97,26,40,12
END

IDD_PARAFORMAT DIALOG 30, 20, 220, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
Caption "Parágrafo"
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Identação", -1, 10, 10, 140, 68
    LTEXT "Esquerda", -1, 15, 22, 60, 13
    EDITTEXT IDC_PARA_LEFT, 75, 20, 60, 13
    LTEXT "Direita", -1, 15, 40, 60, 13
    EDITTEXT IDC_PARA_RIGHT, 75, 38, 60, 13
    LTEXT "Primeira Linha", -1, 15, 58, 60, 13
    EDITTEXT IDC_PARA_FIRST, 75, 56, 60, 13
    LTEXT "Alinhamento", -1, 15, 87, 50, 13
    COMBOBOX IDC_PARA_ALIGN, 65, 85, 70, 60, CBS_DROPDOWNLIST
    PUSHBUTTON "&OK", IDOK, 157, 15, 50, 15
    PUSHBUTTON "&Cancelar", IDCANCEL, 157, 33, 50, 15
END

IDD_TABSTOPS DIALOG 30, 20, 200, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
Caption "Tabulações"
FONT 8, "MS SHell DLg"
BEGIN
    GROUPBOX "Marca de tabulação", -1, 10, 10, 120, 90
    COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE
    DEFPUSHBUTTON "&Adicionar", ID_TAB_ADD, 20, 80, 45, 15
    PUSHBUTTON "&Remover", ID_TAB_DEL, 72, 80, 45, 15
    PUSHBUTTON "&OK", IDOK, 135, 15, 55, 15
    PUSHBUTTON "&Cancelar", IDCANCEL, 135, 33, 55, 15
    PUSHBUTTON "Remover &todos", ID_TAB_EMPTY, 135, 51, 55, 15
END

IDD_FORMATOPTS DIALOG 0, 0, 280, 110
STYLE DS_SYSMODAL
Caption ""
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Moldar o texto", -1, 10, 10, 130, 85
    RADIOBUTTON "&Sem moldagem", IDC_PAGEFMT_WN, 18, 25, 117, 15
    RADIOBUTTON "&Moldar à janela", IDC_PAGEFMT_WW, 18, 45, 117, 15
    RADIOBUTTON "Moldar pela &régua", IDC_PAGEFMT_WM, 18, 65, 117, 15
    GROUPBOX "Barras de Ferramentas", -1, 150, 10, 120, 85
    CHECKBOX "&Barra de Ferramentas", IDC_PAGEFMT_TB, 160, 20, 90, 15
    CHECKBOX "Barra de &Formatação", IDC_PAGEFMT_FB, 160, 38, 90, 15
    CHECKBOX "&Régua", IDC_PAGEFMT_RU, 160, 56, 90, 15
    CHECKBOX "Barra de &Estado", IDC_PAGEFMT_SB, 160, 74, 90, 15
    LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE
BEGIN
    STRING_ALL_FILES,              "Todos os documentos (*.*)"
    STRING_TEXT_FILES_TXT,         "Documentos de texto (*.txt)"
    STRING_TEXT_FILES_UNICODE_TXT, "Documentos de texto Unicode (*.txt)"
    STRING_RICHTEXT_FILES_RTF,     "Formato rich text (*.rtf)"
    STRING_NEWFILE_RICHTEXT,       "Documento rich text"
    STRING_NEWFILE_TXT,            "Documento de texto"
    STRING_NEWFILE_TXT_UNICODE,    "Documento de texto Unicode"
    STRING_PRINTER_FILES_PRN,      "Arquivos de impressora (*.PRN)"
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE
BEGIN
    STRING_ALL_FILES,              "Todos os documentos (*.*)"
    STRING_TEXT_FILES_TXT,         "Documentos de texto (*.txt)"
    STRING_TEXT_FILES_UNICODE_TXT, "Documentos de texto Unicode (*.txt)"
    STRING_RICHTEXT_FILES_RTF,     "Formato rich text (*.rtf)"
    STRING_NEWFILE_RICHTEXT,       "Documento rich text"
    STRING_NEWFILE_TXT,            "Documento de texto"
    STRING_NEWFILE_TXT_UNICODE,    "Documento de texto Unicode"
    STRING_PRINTER_FILES_PRN,      "Ficheiros de impressora (*.PRN)"
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

STRINGTABLE
BEGIN
    STRING_ALIGN_LEFT,            "Esquerda"
    STRING_ALIGN_RIGHT,           "Direita"
    STRING_ALIGN_CENTER,          "Centro"
END

STRINGTABLE
BEGIN
    STRING_VIEWPROPS_TITLE,          "Opções"
    STRING_VIEWPROPS_TEXT,           "Texto"
    STRING_VIEWPROPS_RICHTEXT,       "Rich text"
END

STRINGTABLE
BEGIN
    STRING_PREVIEW_PRINT,            "Imprimir"
    STRING_PREVIEW_NEXTPAGE,         "Próxima página"
    STRING_PREVIEW_PREVPAGE,         "Página anterior"
    STRING_PREVIEW_TWOPAGES,         "Duas páginas"
    STRING_PREVIEW_ONEPAGE,          "Uma página"
    STRING_PREVIEW_ZOOMIN,           "Zoom in"
    STRING_PREVIEW_ZOOMOUT,          "Zoom out"
    STRING_PREVIEW_CLOSE,            "Fechar"
    STRING_PREVIEW_PAGE,             "Página"
    STRING_PREVIEW_PAGES,            "Páginas"
    STRING_UNITS_CM,                 "cm"
    STRING_UNITS_IN,                 "in"
    STRING_UNITS_INCH,               "inch"
    STRING_UNITS_PT,                 "pt"
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE
BEGIN
    STRING_DEFAULT_FILENAME,     "Documento"
    STRING_PROMPT_SAVE_CHANGES,  "Salvar as alterações de '%s'?"
    STRING_SEARCH_FINISHED,      "Acabou a pesquisa do documento."
    STRING_LOAD_RICHED_FAILED,   "Falha ao carregar a biblioteca RichEdit."
    STRING_SAVE_LOSEFORMATTING,  "Foi escolhido salvar em formato de texto simples, " \
                                 "o que vai anular todas as formatações. " \
                                 "Tem a certeza que deseja fazer isto?"
    STRING_INVALID_NUMBER,       "Formato de número inválido"
    STRING_OLE_STORAGE_NOT_SUPPORTED, "Documentos OLE não são suportados"
    STRING_WRITE_FAILED,              "Não foi possível salvar o arquivo."
    STRING_WRITE_ACCESS_DENIED,       "Não tem permissões para salvar o arquivo."
    STRING_OPEN_FAILED,               "Não foi possível abrir o arquivo."
    STRING_OPEN_ACCESS_DENIED,        "Não tem permissões para abrir o arquivo."
    STRING_PRINTING_NOT_IMPLEMENTED,  "Impressão não implementada"
    STRING_MAX_TAB_STOPS,             "Não é possível adicionar mais de 32 tabulações."
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE
BEGIN
    STRING_DEFAULT_FILENAME,     "Documento"
    STRING_PROMPT_SAVE_CHANGES,  "Guardar alterações a '%s'?"
    STRING_SEARCH_FINISHED,      "Acabou a pesquisa do documento."
    STRING_LOAD_RICHED_FAILED,   "Falhou o carregamento da biblioteca RichEdit."
    STRING_SAVE_LOSEFORMATTING,  "Escolheu guardar em formato de texto simples, " \
                                 "o que vai anular todas as formatações. " \
                                 "Tem a certeza que quer fazer isto?"
    STRING_INVALID_NUMBER,       "Formato de número inválido"
    STRING_OLE_STORAGE_NOT_SUPPORTED, "Documentos OLE não são suportados"
    STRING_WRITE_FAILED,              "Não foi possível guardar o ficheiro."
    STRING_WRITE_ACCESS_DENIED,       "Não tem permissões para guardar o ficheiro."
    STRING_OPEN_FAILED,               "Não foi possível abrir o ficheiro."
    STRING_OPEN_ACCESS_DENIED,        "Não tem permissões para abrir o ficheiro."
    STRING_PRINTING_NOT_IMPLEMENTED, "Impressão não implementada"
    STRING_MAX_TAB_STOPS,             "Não pode adicionar mais de 32 tabs."
END
