/*
 * 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
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
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
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 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 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 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 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"
	IDS_SHV_COL_DOCS	"Documenten"
	IDS_SHV_COL_STATUS	"Status"
	IDS_SHV_COL_LOCATION	"Locatie"
	IDS_SHV_COL_MODEL	"Model"

        /* special folders */
	IDS_DESKTOP		"Bureaublad"
	IDS_MYCOMPUTER		"Mijn Computer"
	IDS_RECYCLEBIN_FOLDER_NAME      "Prullenbak"
	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 Prullenbak wilt verplaatsen?"
	IDS_TRASHFOLDER_TEXT "Weet u zeker dat u '%1' en zijn gehele inhoud naar de Prullenbak 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_PROGRAM_FILESX86        "Program Files (x86)"
	IDS_MYPICTURES              "Mijn Afbeeldingen"
	IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
	IDS_PROGRAM_FILES_COMMONX86 "Program Files (x86)\\Common Files"
	IDS_COMMON_DOCUMENTS        "Documenten"
	IDS_ADMINTOOLS              "Start Menu\\Programma's\\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_CONTACTS                "Contacten"
	IDS_LINKS                   "Links"
	IDS_PHOTO_ALBUMS            "Afbeeldingen\\Diashows"
	IDS_PLAYLISTS               "Muziek\\Afspeellijsten"
	IDS_PUBLIC_DOWNLOADS        "Downloads"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\GameExplorer"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Libraries"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Ringtones"
	IDS_SAMPLE_MUSIC            "Muziek\\Voorbeelden van muziek"
	IDS_SAMPLE_PICTURES         "Afbeeldingen\\Voorbeelden van afbeeldingen"
	IDS_SAMPLE_PLAYLISTS        "Muziek\\Voorbeelden van afspeellijsten"
	IDS_SAMPLE_VIDEOS           "Video's\\Voorbeelden van video's"
	IDS_SAVED_GAMES             "Opgeslagen Spellen"
	IDS_SAVED_SEARCHES          "Zoekopdrachten"
	IDS_USER_PROFILES           "Gebruikers"
	IDS_COMMON_OEM_LINKS        "OEM Links"
	IDS_DOCUMENTS               "Documenten"
	IDS_DOWNLOADS               "Downloads"
	IDS_LOCAL_APPDATA_LOW       "AppData\\LocalLow"

	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."
}
