/*
 * Regedit (Dutch resources)
 *
 * Copyright 2003 Hans Leidekker
 *
 * 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"

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

#pragma code_page(65001)

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU
BEGIN
    POPUP "&Registerbestand"
    BEGIN
        MENUITEM "Registerbestand &importeren...",    ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "Registerbestand &exporteren...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "Verbinding &maken met netwerkregister...", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "Verbinding &verbreken met netwerkregister...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Af&drukken\tCtrl+P",                ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Afsluiten",                        ID_REGISTRY_EXIT
    END
    POPUP "&Bewerken"
    BEGIN
        MENUITEM "&Wijzigen",                         ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Nieuw"
        BEGIN
            MENUITEM "&Sleutel",                      ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Tekenreekswaarde",             ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binaire waarde",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD-waarde",                 ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Multi-Tekenreekswaarde",       ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Verwijderen\tDel",                 ID_EDIT_DELETE
        MENUITEM "N&aam wijzigen\tF2"                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Sleutelnaam kopiëren",             ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Zoeken\tCtrl+F",                   ID_EDIT_FIND, GRAYED
        MENUITEM "Volgende Zoeken\tF3",               ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "Bee&ld"
    BEGIN
        MENUITEM "&Statusbalk",                       ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "S&plitsen",                         ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Vernieuwen\tF5",                   ID_VIEW_REFRESH
    END
    POPUP "&Favorieten"
    BEGIN
        MENUITEM "&Toevoegen aan favorieten...",         ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "&Verwijderen uit favorieten...",       ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "&Help"
    BEGIN
        MENUITEM "&Help-onderwerpen",                 ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&Info",      ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU
BEGIN
  POPUP ""
  BEGIN
        MENUITEM "&Wijzigen",                  ID_EDIT_MODIFY
        MENUITEM "&Binaire data wijzigen",     ID_EDIT_MODIFY_BIN
        MENUITEM SEPARATOR
        MENUITEM "&Verwijderen\tDel",          ID_EDIT_DELETE
        MENUITEM "&Naam wijzigen",             ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "&Nieuw"
        BEGIN
            MENUITEM "&Sleutel",               ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Tekenreekswaarde",      ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binaire waarde",        ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD waarde",          ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Multi-Tekenreekswaarde",ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Verwijderen\tDel",          ID_EDIT_DELETE
        MENUITEM "&Naam wijzigen\tF2",         ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Exporteren...",             ID_EDIT_EXPORT
        MENUITEM "&Sleutelnaam kopiëren",      ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Zoeken\tCtrl+F",            ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

IDD_EXPORT_TEMPLATE DIALOG  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Registerbestand &exporteren", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Alles", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "&Gekozen subsleutel:", IDC_EXPORT_SELECTED, 12, 30, 90, 12
    EDITTEXT IDC_EXPORT_PATH, 102, 30, 164, 12
END

IDD_FIND DIALOG  22, 17, 220, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Zoeken"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Zoek:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "In:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "Sleutels", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "Waarden", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Gegevens", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Hele tekenreeks", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "Zoeken",IDOK,175,5,40,15,WS_GROUP
    PUSHBUTTON      "Sluiten",IDCANCEL,175,24,40,15, WS_GROUP
END

IDD_ADDFAVORITE DIALOG  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Toevoegen aan favorieten"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Naam:",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      "Annuleren",IDCANCEL,165,36,40,15, WS_GROUP
END

IDD_DELFAVORITE DIALOG  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Favorieten verwijderen"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Favorieten:",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      "Annuleren",IDCANCEL,165,72,40,15, WS_GROUP
END

IDD_EDIT_STRING DIALOG  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Tekenreeks bewerken"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Waardenaam:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Waardegegevens:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,120,56,40,15,WS_GROUP
    PUSHBUTTON      "Annuleren",IDCANCEL,165,56,40,15,WS_GROUP
END

IDD_EDIT_DWORD DIALOG  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "DWORD waarde bewerken"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Waardenaam:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Waardegegevens:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "Grondtal", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "Hexadecimaal", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "Decimaal", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,120,78,40,15,WS_GROUP
    PUSHBUTTON      "Annuleren",IDCANCEL,165,78,40,15,WS_GROUP
END

IDD_EDIT_BINARY DIALOG  22, 17, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Binaire waarde bewerken"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Waardenaam:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,160,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Waardegegevens:",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      "Annuleren",IDCANCEL,125,83,40,15,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Multi-tekenreeks bewerken"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Waardenaam:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Waardegegevens:",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      "Annuleren",IDCANCEL,165,156,40,15,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Naam"
    IDS_LIST_COLUMN_TYPE    "Type"
    IDS_LIST_COLUMN_DATA    "Gegevens"
END

STRINGTABLE
BEGIN
    IDS_APP_TITLE           "Register-editor"
END

STRINGTABLE
BEGIN
    ID_REGISTRY_MENU        "Opdrachten voor het werken met het gehele register"
    ID_EDIT_MENU            "Opdrachten voor het bewerken van waarden of sleutels"
    ID_VIEW_MENU            "Opdrachten voor het aanpassen van het registervenster"
    ID_FAVORITES_MENU       "Opdrachten voor toegang tot vaak gebruikte sleutels"
    ID_HELP_MENU            "Opdrachten voor het weergeven van Help en informatie over de Register-editor"
    ID_EDIT_NEW_MENU        "Opdrachten voor het maken van nieuwe sleutels of waarden"
END

STRINGTABLE
BEGIN
    ID_EDIT_MODIFY          "De gegevens van de waarde wijzigen"
    ID_EDIT_NEW_KEY         "Een nieuwe sleutel toevoegen"
    ID_EDIT_NEW_STRINGVALUE "Een nieuwe tekenreekswaarde toevoegen"
    ID_EDIT_NEW_BINARYVALUE "Een nieuwe binaire waarde toevoegen"
    ID_EDIT_NEW_DWORDVALUE  "Een nieuwe DWORD-waarde toevoegen" 
    ID_EDIT_NEW_MULTI_STRINGVALUE "Een nieuwe multi-tekenreekswaarde toevoegen"
    ID_REGISTRY_IMPORTREGISTRYFILE "Een tekstbestand in het register importeren"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Het register of een gedeelte ervan naar een tekstbestand exporteren"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Een verbinding maken met het register van een externe computer"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "De verbinding met het register van een externe computer verbreken"
    ID_REGISTRY_PRINT       "Het register of een gedeelte ervan afdrukken"
/*    ID_HELP_HELPTOPICS      "Help voor de Register-editor openen" */
    ID_HELP_ABOUT           "Programmagegevens, versienummer en copyrightgegevens weergeven"
END

STRINGTABLE
BEGIN
    ID_REGISTRY_EXIT        "De Register-editor afsluiten"
    ID_FAVORITES_ADDTOFAVORITES "Sleutels toevoegen aan de lijst met favorieten"
    ID_FAVORITES_REMOVEFAVORITE "Sleutels verwijderen uit de lijst met favorieten"
    ID_VIEW_STATUSBAR       "De statusbalk weergeven of verbergen"
    ID_VIEW_SPLIT           "De positie van de splitsing tussen twee deelvensters wijzigen"
    ID_VIEW_REFRESH         "Het venster vernieuwen"
    ID_EDIT_DELETE          "De selectie verwijderen"
    ID_EDIT_RENAME          "De naam van de selectie wijzigen"
    ID_EDIT_COPYKEYNAME     "De naam van de geselecteerde sleutel naar het Klembord kopiëren"
    ID_EDIT_FIND            "Een tekenreeks zoeken in een sleutel, een waarde of gegevens"
    ID_EDIT_FINDNEXT        "De opgegeven tekst nogmaals zoeken"
    ID_EDIT_EXPORT          "Exporteert de geselecteerde subsleutel van het register naar een tekst bestand"
END

STRINGTABLE
BEGIN
    IDS_ERROR               "Fout"
    IDS_BAD_KEY             "Kan sleutel '%s' niet opvragen"
    IDS_BAD_VALUE           "Kan waarde '%s' niet opvragen"
    IDS_UNSUPPORTED_TYPE    "Kan dit type sleutel (%u) niet bewerken"
    IDS_TOO_BIG_VALUE       "Waarde te groot (%u)"
    IDS_DELETE_BOX_TITLE    "Waarde verwijderen bevestigen"
    IDS_DELETE_BOX_TEXT     "Weet u zeker dat u de waarde '%s' wilt verwijderen?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Weet u zeker dat u deze waarden wilt verwijderen?"
    IDS_NEWKEY              "Nieuwe sleutel #%d"
    IDS_NEWVALUE            "Nieuwe waarde #%d"
    IDS_NOTFOUND            "Tekenreeks '%s' niet gevonden"
END

STRINGTABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "Registerbestand importeren"
    IDS_FILEDIALOG_EXPORT_TITLE   "Registerbestand exporteren"
    IDS_FILEDIALOG_FILTER         "Register Bestanden\0*.reg\0Win9x/NT4 Register Bestanden (REGEDIT4)\0*.reg\0Alle Bestanden (*.*)\0*.*\0\0"
END

STRINGTABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "Deze Computer"
    IDS_REGISTRY_DEFAULT_VALUE       "(Standaard)"
    IDS_REGISTRY_VALUE_NOT_SET       "(Geen waarde ingesteld)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(kan waarde niet weergeven)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(onbekend %d)"
END

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

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END
