/*
 * 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"

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "&Grote Icons",	FCIDM_SHVIEW_BIGICON
	MENUITEM "&Kleine Icons",	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 Icons",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "&Kleine Icons",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Lijst",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Details",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Sorteren &Icons"
	  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 "Uitlijnen Icons",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Vernieuwen",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Plakken",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Plakken als Link",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Nieuw"
	  BEGIN
	    MENUITEM "Nieuwe &Map",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Nieuwe &Link",	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 "&Selecteer"		FCIDM_SHVIEW_OPEN
	  MENUITEM "&Verkennen",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Open",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "K&nippen",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Kopieren",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Creëer &Link",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "Ver&wijder",		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 Icons", FCIDM_SHVIEW_BIGICON
        MENUITEM "&Kleine Icons", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Lijst", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Details", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Help"
    BEGIN
        MENUITEM "&Over Controle Paneel...", 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	"Controle Paneel"

        /* context menus */
	IDS_VIEW_LARGE		"Grote Icons"
	IDS_VIEW_SMALL		"&Kleine Icons"
	IDS_VIEW_LIST		"&Lijst"
	IDS_VIEW_DETAILS	"&Details"
	IDS_SELECT		"Selecteer"
	IDS_OPEN		"Open"

	IDS_CREATEFOLDER_DENIED "Niet mogelijk om nieuwe map te maken: Permissie afgewezen."
	IDS_CREATEFOLDER_CAPTION "Fout tijdens creatie van een nieuwe map"
	IDS_DELETEITEM_CAPTION "Bevestig bestand verwijdering"
	IDS_DELETEFOLDER_CAPTION "Bevestig map verwijdering"
	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 sturen?"
	IDS_TRASHFOLDER_TEXT "Weet u zeker dat u '%1' en zijn gehele inhoud naar de Vuilnisbak wilt sturen?"
	IDS_TRASHMULTIPLE_TEXT "Weet u zeker dat u deze %1 bestanden naar de Vuilnisbak wilt sturen?"
	IDS_CANTTRASH_TEXT "Bestand '%1' kan niet naar de Vuilnisbak worden gestuurd. Wilt u het dan maar verwijderen?"
	IDS_OVERWRITEFILE_TEXT "Deze map bevat reeds een bestand genaamd '%1'.\n\nWilt u het vervangen?"
	IDS_OVERWRITEFILE_CAPTION "Bevestig het overschrijven van het bestand"
	IDS_OVERWRITEFOLDER_TEXT "Deze map bevat reeds een map genaamd '%1'.\n\n"\
	    "Als de bestanden in de doel map dezelfde naam hebben als de bestanden in de\n"\
	    "geselecteerde map worden ze overschreven. Wilt u nog steeds de map copieren\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 Uitvoeren Bestand venster (interne fout)"
        IDS_RUNDLG_BROWSE_ERROR    "Fout tijdens tonen 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\\Programmas"
	IDS_PERSONAL                "Mijn Documenten"
	IDS_FAVORITES               "Favorieten"
	IDS_STARTUP                 "Start Menu\\Programmas\\StartUp"
	IDS_RECENT                  "Recent"
	IDS_SENDTO                  "Stuur Naar"
	IDS_STARTMENU               "Start Menu"
	IDS_MYMUSIC                 "Mijn Muziek"
	IDS_MYVIDEO                 "Mijn Videos"
	IDS_DESKTOPDIRECTORY        "Bureaublad"
	IDS_NETHOOD                 "Netwerkomgeving"
	IDS_TEMPLATES               "Sjablonen"
	IDS_APPDATA                 "Applicatie Data"
	IDS_PRINTHOOD               "Printeromgeving"
	IDS_LOCAL_APPDATA           "Lokale Instellingen\\Applicatie Data"
	IDS_INTERNET_CACHE          "Lokale Instellingen\\Tijdelijke Internet Bestanden"
	IDS_COOKIES                 "Koekies"
	IDS_HISTORY                 "Lokale Instellingen\\Geschiedenis"
	IDS_PROGRAM_FILES           "Programma Bestanden"
	IDS_MYPICTURES              "Mijn Afbeeldingen"
	IDS_PROGRAM_FILES_COMMON    "Programma Bestanden\\Gemeenschappelijke Bestanden"
	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             "Lokale Instellingen\\Applicatie Data\\Microsoft\\CD Branden"

	IDS_NEWFOLDER		"Nieuwe Map"

	IDS_CPANEL_TITLE            "Wine Controle Paneel"
	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."
}
