/*
 * Copyright 1998 Juergen Schmied
 * Copyright 2008 Frans Kool
 *
 * 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_DUTCH, SUBLANG_NEUTRAL

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "&Grote Pictogrammen",	FCIDM_SHVIEW_BIGICON
	MENUITEM "&Kleine Pictogrammen",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Lijst",			FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Details",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Bekijken"
	  BEGIN
	    MENUITEM "&Grote Pictogrammen",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "&Kleine Pictogrammen",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Lijst",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Details",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "P&ictogrammen Sorteren"
	  BEGIN
	    MENUITEM "Op &Naam",	0x30	/* column 0 */
	    MENUITEM "Op &Type",	0x32	/* column 2 */
	    MENUITEM "Op &Grootte",	0x31	/* ... */
	    MENUITEM "Op &Datum",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "&Automatisch",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Pictogrammen Uitlijnen",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Vernieuwen",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Plakken",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Plakken als Snelkoppeling",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Nieuw"
	  BEGIN
	    MENUITEM "Nieuwe &Map",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Nieuwe Sne&lkoppeling",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Eigenschappen",	FCIDM_SHVIEW_PROPERTIES
	END
END


/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Selecteren"		FCIDM_SHVIEW_OPEN
	  MENUITEM "&Verkennen",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Openen",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "K&nippen",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Kopiëren",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Maak Sne&lkoppeling",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "Ver&wijderen",		FCIDM_SHVIEW_DELETE
	  MENUITEM "&Hernoemen",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Eigenschappen",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Bestand"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Afsluiten", IDM_CPANEL_EXIT
    END

    POPUP "B&eeld"
    BEGIN
        MENUITEM "&Grote Pictogrammen", FCIDM_SHVIEW_BIGICON
        MENUITEM "&Kleine Pictogrammen", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Lijst", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Details", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Help"
    BEGIN
        MENUITEM "&Over Configuratiescherm", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Bladeren naar Map"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Annuleren", 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 LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Bladeren naar Map"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Map:", 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 "Nieuwe &map maken", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Annuleren", 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 "Message"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Ja", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Ja op &alles", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Nee", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Ann&uleren", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Info %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "Wine &licentie...", 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, 137, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 137, 10
 LTEXT "Draait op %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine is geschreven door:", IDC_ABOUT_WINE_TEXT, 8, 55, 137, 10
}

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 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 "Geef de naam van een programma, map, document, of Internet-adres op. Wine zal het vervolgens openen.", 12289, 36, 11, 182, 18
 LTEXT "&Openen:", 12305, 7, 39, 28, 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 "Annuleren", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Bladeren...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Bestand"
	IDS_SHV_COLUMN2		"Grootte"
	IDS_SHV_COLUMN3		"Type"
	IDS_SHV_COLUMN4		"Gewijzigd"
	IDS_SHV_COLUMN5		"Attributen"
	IDS_SHV_COLUMN6		"Grootte"
	IDS_SHV_COLUMN7		"Beschikbare ruimte"
	IDS_SHV_COLUMN8		"Naam"
	IDS_SHV_COLUMN9		"Commentaar"
	IDS_SHV_COLUMN10	"Eigenaar"
	IDS_SHV_COLUMN11	"Groep"
	IDS_SHV_COLUMN_DELFROM	"Originele locatie"
	IDS_SHV_COLUMN_DELDATE	"Datum verwijderd"

        /* special folders */
	IDS_DESKTOP		"Bureaublad"
	IDS_MYCOMPUTER		"Mijn Computer"
	IDS_RECYCLEBIN_FOLDER_NAME      "Vuilnisbak"
	IDS_CONTROLPANEL	"Configuratiescherm"

        /* context menus */
	IDS_VIEW_LARGE		"Grote Pictogrammen"
	IDS_VIEW_SMALL		"&Kleine Pictogrammen"
	IDS_VIEW_LIST		"&Lijst"
	IDS_VIEW_DETAILS	"&Details"
	IDS_SELECT		"Selecteren"
	IDS_OPEN		"Openen"

	IDS_CREATEFOLDER_DENIED "Niet mogelijk om nieuwe map te maken: Geen permissies."
	IDS_CREATEFOLDER_CAPTION "Fout tijdens het maken van een nieuwe map"
	IDS_DELETEITEM_CAPTION "Bevestig bestandsverwijdering"
	IDS_DELETEFOLDER_CAPTION "Bevestig mapverwijdering"
	IDS_DELETEITEM_TEXT "Weet u zeker dat u '%1' wilt verwijderen?"
	IDS_DELETEMULTIPLE_TEXT "Weet u zeker dat u deze %1 bestanden wilt verwijderen?"
	IDS_DELETESELECTED_TEXT "Weet u zeker dat u de geselecteerde bestand(en) wilt verwijderen?"
	IDS_TRASHITEM_TEXT "Weet u zeker dat u '%1' naar de Vuilnisbak wilt verplaatsen?"
	IDS_TRASHFOLDER_TEXT "Weet u zeker dat u '%1' en zijn gehele inhoud naar de Vuilnisbak wilt verplaatsen?"
	IDS_TRASHMULTIPLE_TEXT "Weet u zeker dat u deze %1 bestanden naar de Vuilnisbak wilt verplaatsen?"
	IDS_CANTTRASH_TEXT "Bestand '%1' kan niet naar de Vuilnisbak worden verplaatst. Wilt u het bestand permanent verwijderen?"
	IDS_OVERWRITEFILE_TEXT "Deze map bevat reeds een bestand genaamd '%1'.\n\nWilt u het vervangen?"
	IDS_OVERWRITEFILE_CAPTION "Bevestig bestandsoverschrijving"
	IDS_OVERWRITEFOLDER_TEXT "Deze map bevat reeds een map genaamd '%1'.\n\n"\
	    "Als de bestanden in de doelmap dezelfde naam hebben als de bestanden in de\n"\
	    "geselecteerde map zullen ze worden overschreven. Wilt u alsnog de map kopiëren\n"\
	    "of verplaatsen?"

        /* message box strings */
        IDS_RESTART_TITLE       "Herstarten"
        IDS_RESTART_PROMPT      "Wilt u een Windows herstart simuleren?"
        IDS_SHUTDOWN_TITLE      "Afsluiten"
        IDS_SHUTDOWN_PROMPT     "Wilt u uw Wine sessie afsluiten?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Fout tijdens tonen venster 'Uitvoeren Bestand' (interne fout)"
        IDS_RUNDLG_BROWSE_ERROR    "Fout tijdens tonen van Bladeren venster (interne fout)"
        IDS_RUNDLG_BROWSE_CAPTION  "Bladeren"
        IDS_RUNDLG_BROWSE_FILTER   "Uitvoerbare bestanden\0*.exe\0Alle bestanden\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Start Menu\\Programma's"
	IDS_PERSONAL                "Mijn Documenten"
	IDS_FAVORITES               "Favorieten"
	IDS_STARTUP                 "Start Menu\\Programma's\\Opstarten"
	IDS_RECENT                  "Recent"
	IDS_SENDTO                  "SendTo"
	IDS_STARTMENU               "Start Menu"
	IDS_MYMUSIC                 "Mijn Muziek"
	IDS_MYVIDEO                 "Mijn Video's"
	IDS_DESKTOPDIRECTORY        "Bureaublad"
	IDS_NETHOOD                 "Netwerkomgeving"
	IDS_TEMPLATES               "Sjablonen"
	IDS_APPDATA                 "Application Data"
	IDS_PRINTHOOD               "Printeromgeving"
	IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
	IDS_INTERNET_CACHE          "Local Settings\\Tijdelijke Internetbestanden"
	IDS_COOKIES                 "Cookies"
	IDS_HISTORY                 "Local Settings\\Geschiedenis"
	IDS_PROGRAM_FILES           "Program Files"
	IDS_MYPICTURES              "Mijn Afbeeldingen"
	IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
	IDS_COMMON_DOCUMENTS        "Documenten"
	IDS_ADMINTOOLS              "Start Menu\\Programmas\\Administratieve Tools"
	IDS_COMMON_MUSIC            "Documenten\\Mijn Muziek"
	IDS_COMMON_PICTURES         "Documenten\\Mijn Afbeeldingen"
	IDS_COMMON_VIDEO            "Documenten\\Mijn Videos"
	IDS_CDBURN_AREA             "Local Settings\\Applicatie Data\\Microsoft\\CD Branden"

	IDS_NEWFOLDER		"Nieuwe Map"

	IDS_CPANEL_TITLE            "Wine Configuratiescherm"
	IDS_CPANEL_NAME             "Naam"
	IDS_CPANEL_DESCRIPTION      "Beschrijving"

        IDS_SHLEXEC_NOASSOC         "Er is geen Windows-programma geconfigureerd om dit soort bestanden te openen."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Wine Licentie"
/* Only translated the title, since there is no official translation of the LGPL */
IDS_LICENSE,
"Wine 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.\n\n\
Wine 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.\n\n\
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."
}
