/*
 * Regedit resources
 *
 * Copyright 2003 Marcelo Duarte
 * Copyright 2004 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 "resource.h"

#pragma code_page(65001)

/*
 * Menu
 */

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "&Registro"
    BEGIN
        MENUITEM "&Importar arquivo do Registro...", ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "&Exportar arquivo do Registro...", ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "&Conectar Registro da rede...",    ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "&Desconectar Registro da rede...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Im&primir\tCtrl+P",                ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Sai&r",                            ID_REGISTRY_EXIT
    END
    POPUP "&Editar"
    BEGIN
        MENUITEM "&Modificar",                       ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Novo"
        BEGIN
            MENUITEM "&Chave",                       ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Valor &Texto",                 ID_EDIT_NEW_STRINGVALUE
            MENUITEM "Valor &Binário",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "Valor &DWORD",                 ID_EDIT_NEW_DWORDVALUE
            MENUITEM "Valor de palavras &múltiplas", ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Excluir\tDel",                    ID_EDIT_DELETE
        MENUITEM "&Renomear\tF2",                    ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Copiar nome da chave",            ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Localizar\tCtrl+F",               ID_EDIT_FIND, GRAYED
        MENUITEM "L&ocalizar próxima\tF3",           ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "E&xibir"
    BEGIN
        MENUITEM "&Barra de status",                 ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Dividir",                         ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Atualizar\tF5",                   ID_VIEW_REFRESH
    END
    POPUP "&Favoritos"
    BEGIN
        MENUITEM "&Adicionar aos Favoritos...",     ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "&Remover Favorito...",            ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "Aj&uda"
    BEGIN
        MENUITEM "&Topics da Ajuda",            ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&Sobre o Editor do Registro", ID_HELP_ABOUT
    END
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "&Registo"
    BEGIN
        MENUITEM "&Importar ficheiro do Registo...", ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "&Exportar ficheiro do Registo...", ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "&Conectar Registo da rede...",    ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "&Desconectar Registo da rede...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Im&primir\tCtrl+P",                ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Sai&r",                            ID_REGISTRY_EXIT
    END
    POPUP "&Editar"
    BEGIN
        MENUITEM "&Modificar",                       ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Novo"
        BEGIN
            MENUITEM "&Chave",                       ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Valor &Texto",                 ID_EDIT_NEW_STRINGVALUE
            MENUITEM "Valor &Binário",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "Valor &DWORD",                 ID_EDIT_NEW_DWORDVALUE
            MENUITEM "Valor de palavras &múltiplas", ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Excluir\tDel",                    ID_EDIT_DELETE
        MENUITEM "&Renomear\tF2",                    ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Copiar nome da chave",            ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Localizar\tCtrl+F",               ID_EDIT_FIND, GRAYED
        MENUITEM "L&ocalizar próxima\tF3",           ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "E&xibir"
    BEGIN
        MENUITEM "&Barra de estado",                 ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Dividir",                         ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Actualizar\tF5",                   ID_VIEW_REFRESH
    END
    POPUP "&Favoritos"
    BEGIN
        MENUITEM "&Adicionar aos Favoritos",     ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "&Remover Favorito",            ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "Aj&uda"
    BEGIN
        MENUITEM "&Topicos da Ajuda",            ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&Acerca do Editor de Registo", ID_HELP_ABOUT
    END
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

IDR_POPUP_MENUS MENU DISCARDABLE
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "&Modificar",                  ID_EDIT_MODIFY
	MENUITEM "Modificar dados binários",    ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "&Excluir\tDel",               ID_EDIT_DELETE
	MENUITEM "&Renomear",                   ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "&Novo"
        BEGIN
            MENUITEM "&Chave",                       ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Valor &Texto",                 ID_EDIT_NEW_STRINGVALUE
            MENUITEM "Valor &Binário",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "Valor &DWORD",                 ID_EDIT_NEW_DWORDVALUE
            MENUITEM "Valor de palavras &múltiplas", ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Excluir\tDel",                    ID_EDIT_DELETE
        MENUITEM "&Renomear\tF2",                    ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "E&xportar..."                      ID_EDIT_EXPORT
        MENUITEM "&Copiar nome da chave",            ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Localizar\tCtrl+F",               ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL

IDD_EXPORT_TEMPLATE DIALOG DISCARDABLE  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Exportar registo", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Todos", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "&Ramo seleccionado:", IDC_EXPORT_SELECTED, 12, 30, 70, 12
    EDITTEXT IDC_EXPORT_PATH, 82, 30, 184, 12
END

IDD_FIND DIALOG DISCARDABLE  22, 17, 220, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Procurar"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Procurar:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "Procurar em:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "Chaves", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "Nomes de valor", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Conteúdos de valor", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Apenas toda a frase", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "Procurar",IDOK,175,5,40,15,WS_GROUP
    PUSHBUTTON      "Fechar",IDCANCEL,175,24,40,15, WS_GROUP
END

IDD_ADDFAVORITE DIALOG DISCARDABLE  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Adicionar Favorito"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,120,36,40,15,WS_GROUP
    PUSHBUTTON      "Cancelar",IDCANCEL,165,36,40,15,WS_GROUP
END

IDD_DELFAVORITE DIALOG DISCARDABLE  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Remover Favorito"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome:",IDC_STATIC,5,5,119,8
    LISTBOX         IDC_NAME_LIST,5,15,200,52, WS_BORDER | WS_TABSTOP | LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL
    DEFPUSHBUTTON   "OK",IDOK,120,72,40,15,WS_GROUP
    PUSHBUTTON      "Cancelar",IDCANCEL,165,72,40,15,WS_GROUP
END

IDD_EDIT_STRING DIALOG DISCARDABLE  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Editar texto"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome do valor:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Dados do valor:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,140,60,30,11,WS_GROUP
    PUSHBUTTON   "Cancelar",IDCANCEL,175,60,30,11,WS_GROUP
END

IDD_EDIT_DWORD DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Editar DWORD"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome do valor:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Dados do valor:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "Base", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "Hexadecimal", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "Decimal", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,140,80,30,11,WS_GROUP
    PUSHBUTTON   "Cancelar",IDCANCEL,175,80,30,11,WS_GROUP
END

IDD_EDIT_BINARY DIALOG DISCARDABLE  22, 17, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Editar Binário"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome do valor:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,160,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Dados do valor:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,5,40,160,40
    DEFPUSHBUTTON   "OK",IDOK,80,83,40,15,WS_GROUP
    PUSHBUTTON   "Cancelar",IDCANCEL,125,83,40,15,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG DISCARDABLE  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Editar Multi-frase"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome do valor:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Dados do valor:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,112, WS_BORDER | WS_TABSTOP | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
    DEFPUSHBUTTON   "OK",IDOK,120,156,40,15,WS_GROUP
    PUSHBUTTON   "Cancelar",IDCANCEL,165,156,40,15,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE DISCARDABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Nome"
    IDS_LIST_COLUMN_TYPE    "Tipo"
    IDS_LIST_COLUMN_DATA    "Dados"
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "Editor do Registro"
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "Editor de Registo"
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "Contém comandos para trabalhar com o Registro inteiro."
    ID_EDIT_MENU            "Contém comandos para edição de valores ou chaves."
    ID_VIEW_MENU            "Contém comandos para personalização da janela do Registro."
    ID_FAVORITES_MENU       "Contém comandos para acessar chaves frequentemente usadas."
    ID_HELP_MENU            "Contém comandos para exibição da ajuda e informações sobre o Editor do Registro."
    ID_EDIT_NEW_MENU        "Contém comandos para criação de novas chaves ou valores"
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "Contém comandos para trabalhar com o Registo inteiro."
    ID_EDIT_MENU            "Contém comandos para edição de valores ou chaves."
    ID_VIEW_MENU            "Contém comandos para personalização da janela do Registo."
    ID_FAVORITES_MENU       "Contém comandos para aceder a chaves frequentemente usadas."
    ID_HELP_MENU            "Contém comandos para exibição da ajuda e informações sobre o Editor do Registo."
    ID_EDIT_NEW_MENU        "Contém comandos para criação de novas chaves ou valores"
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "Modifica os dados do valor."
    ID_EDIT_NEW_KEY         "Adiciona uma nova chave"
    ID_EDIT_NEW_STRINGVALUE "Adiciona um novo valor texto."
    ID_EDIT_NEW_BINARYVALUE "Adiciona um novo valor binário."
    ID_EDIT_NEW_DWORDVALUE  "Adiciona um novo valor DWORD."
    ID_REGISTRY_IMPORTREGISTRYFILE "Importa um arquivo texto para o registro."
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Exporta todo ou parte do registro para um arquivo texto."
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Conecta a um registro em um computador remoto."
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Desconecta de um registro um computador remoto."
    ID_REGISTRY_PRINT       "Imprime todo ou parte do registro."
/*    ID_HELP_HELPTOPICS      "Abre a ajuda do Editor do Registro." */
    ID_HELP_ABOUT           "Exibe informações do programa, número da versão e copyright."
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "Modifica os dados do valor."
    ID_EDIT_NEW_KEY         "Adiciona uma nova chave"
    ID_EDIT_NEW_STRINGVALUE "Adiciona um novo valor texto."
    ID_EDIT_NEW_BINARYVALUE "Adiciona um novo valor binário."
    ID_EDIT_NEW_DWORDVALUE  "Adiciona um novo valor DWORD."
    ID_EDIT_NEW_MULTI_STRINGVALUE "Adiciona um novo valor multi string"
    ID_REGISTRY_IMPORTREGISTRYFILE "Importa um ficheiro de texto para o registo."
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Exporta todo ou parte do registo para um ficheiro de texto."
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Conecta a um registo um computador remoto."
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Desconecta de um registo um computador remoto."
    ID_REGISTRY_PRINT       "Imprime todo ou parte do registo."
/*    ID_HELP_HELPTOPICS      "Abre a ajuda do Editor de Registo." */
    ID_HELP_ABOUT           "Exibe informações do programa, número da versão e direitos de autor."
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "Encerra o Editor do Registro."
    ID_FAVORITES_ADDTOFAVORITES "Adiciona chaves a lista de favoritos."
    ID_FAVORITES_REMOVEFAVORITE "Remove chaves da lista de favoritos."
    ID_VIEW_STATUSBAR       "Mostra ou oculta a barra de status."
    ID_VIEW_SPLIT           "Altera a posição da divisão entre os painéis."
    ID_VIEW_REFRESH         "Atualiza a janela."
    ID_EDIT_DELETE          "Exclui a selecão."
    ID_EDIT_RENAME          "Renomeia a selecão."
    ID_EDIT_COPYKEYNAME     "Copia o nome da chave selecionada para a Área de transferência."
    ID_EDIT_FIND            "Localiza um texto em uma chave, valor ou dado."
    ID_EDIT_FINDNEXT        "Localiza a próxima ocorrência do texto especificado na pesquisa anterior."
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "Encerra o Editor de Registo."
    ID_FAVORITES_ADDTOFAVORITES "Adiciona chaves à lista de favoritos."
    ID_FAVORITES_REMOVEFAVORITE "Remove chaves da lista de favoritos."
    ID_VIEW_STATUSBAR       "Mostra ou oculta a barra de status."
    ID_VIEW_SPLIT           "Altera a posição da divisão entre os painéis."
    ID_VIEW_REFRESH         "Actualiza a janela."
    ID_EDIT_DELETE          "Exclui a selecção."
    ID_EDIT_RENAME          "Renomeia a selecção."
    ID_EDIT_COPYKEYNAME     "Copia o nome da chave seleccionada para a Área de transferência."
    ID_EDIT_FIND            "Localiza um texto numa chave, valor ou dado."
    ID_EDIT_FINDNEXT        "Localiza a próxima ocorrência do texto indicado na pesquisa anterior."
    ID_EDIT_EXPORT          "Exporta o ramo seleccionado do registo para um ficheiro de texto"
END


LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR		    "Erro"
    IDS_BAD_KEY		    "Não pode consultar a chave '%s'"
    IDS_BAD_VALUE           "Não pode consultar o valor '%s'"
    IDS_UNSUPPORTED_TYPE    "Não pode editar chaves deste tipo (%u)"
    IDS_TOO_BIG_VALUE       "Valor é muito grande (%u)"
    IDS_DELETE_BOX_TITLE    "Confirmar exclusão de valor"
    IDS_DELETE_BOX_TEXT     "Tem certeza que deseja excluir o valor '%s'?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Are you sure you want to delete these values?"
    IDS_NEWKEY              "Nova chave #%d"
    IDS_NEWVALUE            "Novo valor #%d"
    IDS_NOTFOUND            "Chave de busca '%s' não encontrada"
END

LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR		    "Erro"
    IDS_BAD_KEY		    "Não pode perguntar a chave '%s'"
    IDS_BAD_VALUE           "Não pode perguntar o valor '%s'"
    IDS_UNSUPPORTED_TYPE    "Não pode editar chaves deste tipo (%u)"
    IDS_TOO_BIG_VALUE       "Valor muito grande (%u)"
    IDS_DELETE_BOX_TITLE    "Confirmar exclusão de valor"
    IDS_DELETE_BOX_TEXT     "Tem certeza que deseja excluir o valor '%s'?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Tem a certeza que deseja excluir estes valores?"
    IDS_NEWKEY              "Nova chave #%d"
    IDS_NEWVALUE            "Novo valor #%d"
    IDS_NOTFOUND            "Chave de pesquisa '%s' não encontrada"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "Importar Ficheiro de Registo"
    IDS_FILEDIALOG_EXPORT_TITLE   "Exportar Ficheiro de Registo"
    IDS_FILEDIALOG_FILTER         "Ficheiros de Registo\0*.reg\0Ficheiros de Registo Win9x/NT4 (REGEDIT4)\0*.reg\0Todos os Ficheiros (*.*)\0*.*\0\0"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "Meu Computador"
    IDS_REGISTRY_DEFAULT_VALUE       "(Omissão)"
    IDS_REGISTRY_VALUE_NOT_SET       "(valor não dado)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(não pode mostrar o valor)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(desconhecido %d)"
END

/*****************************************************************/

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

/*****************************************************************/
