/*
 * Copyright 1998 Juergen Schmied
 * Copyright 2004 Henning Gerhardt
 *
 * 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_GERMAN, SUBLANG_NEUTRAL

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "&Große Symbole",	FCIDM_SHVIEW_BIGICON
	MENUITEM "&Kleine Symbole",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Liste",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Details",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Ansicht"
	  BEGIN
            MENUITEM "&Große Symbole",  FCIDM_SHVIEW_BIGICON
	    MENUITEM "&Kleine Symbole",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Liste",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Details",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Symbole anordnen"
	  BEGIN
	    MENUITEM "Nach &Name",	0x30	/* column 0 */
	    MENUITEM "Nach &Typ",	0x32	/* column 2 */
            MENUITEM "Nach &Größe",     0x31    /* ... */
	    MENUITEM "Nach &Datum",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "&Automatisch anordnen",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Icons anordnen",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Aktualisieren",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
          MENUITEM "Einfügen",                  FCIDM_SHVIEW_INSERT
          MENUITEM "Einfügen als Verknüpfung",  FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Neu"
	  BEGIN
	    MENUITEM "Neues Ver&zeichnis",	FCIDM_SHVIEW_NEWFOLDER
            MENUITEM "Neue Ver&knüpfung",       FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "&Eigenschaften",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
          MENUITEM "Aus&wählen"         FCIDM_SHVIEW_OPEN
	  MENUITEM "E&rkunden",		FCIDM_SHVIEW_EXPLORE
          MENUITEM "&Öffnen"            FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "&Ausschneiden",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Kopieren",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
          MENUITEM "&Verknüpfung erzeugen",     FCIDM_SHVIEW_CREATELINK
          MENUITEM "&Löschen",                  FCIDM_SHVIEW_DELETE
	  MENUITEM "&Umbenennen",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Eigenschaften",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Datei"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Beenden", IDM_CPANEL_EXIT
    END

    POPUP "&Ansicht"
    BEGIN
        MENUITEM "&Große Symbole", FCIDM_SHVIEW_BIGICON
        MENUITEM "&Kleine Symbole", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Liste", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Details", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Hilfe"
    BEGIN
        MENUITEM "&Über Systemsteuerung...", 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 "Verzeichnis auswählen"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Abbrechen", 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 "Verzeichnis auswählen"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Verzeichnis:", 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 "&Neues Verzeichnis erstellen", IDD_MAKENEWFOLDER, 12, 174, 95, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 112, 174, 45, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Abbrechen", IDCANCEL, 161, 174, 45, 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 "Meldung"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Ja", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Ja zu &allen", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Nein", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Abbrechen", 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, 210, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Informationen über %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 50, 12, WS_TABSTOP
 PUSHBUTTON "&Lizenz...", IDC_ABOUT_LICENSE, 153, 113, 50, 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 "Wine Version %s", IDC_ABOUT_STATIC_TEXT3, 40, 34, 170, 10
 LTEXT "Wine wurde für Sie gekeltert von:", 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 "Geben sie den Namen eines Programmes, eines Ordners, eines Dokumentes oder einer Internet-Ressource ein, die geöffnet werden soll", 12289, 36, 11, 182, 18
 LTEXT "Ö&ffnen:", 12305, 7, 39, 24, 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 "Abbrechen", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Durchsuchen...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Datei"
	IDS_SHV_COLUMN2		"Größe"
	IDS_SHV_COLUMN3		"Typ"
	IDS_SHV_COLUMN4		"Geändert"
	IDS_SHV_COLUMN5		"Attribute"
	IDS_SHV_COLUMN6		"Gesamtgröße"
	IDS_SHV_COLUMN7		"Freier Speicher"
	IDS_SHV_COLUMN8		"Name"
	IDS_SHV_COLUMN9		"Kommentar"
	IDS_SHV_COLUMN10	"Besitzer"
	IDS_SHV_COLUMN11	"Gruppe"
	IDS_SHV_COLUMN_DELFROM	"Ursprung"
	IDS_SHV_COLUMN_DELDATE	"Gelöscht am"
	IDS_SHV_COL_DOCS	"Dokumente"
	IDS_SHV_COL_STATUS	"Status"
	IDS_SHV_COL_LOCATION	"Ort"
	IDS_SHV_COL_MODEL	"Modell"

        /* special folders */
	IDS_DESKTOP		"Desktop"
	IDS_MYCOMPUTER		"Arbeitsplatz"
	IDS_RECYCLEBIN_FOLDER_NAME      "Papierkorb"
	IDS_CONTROLPANEL	"Systemsteuerung"

        /* context menus */
	IDS_VIEW_LARGE		"&Große Symbole"
	IDS_VIEW_SMALL		"&Kleine Symbole"
	IDS_VIEW_LIST		"&Liste"
	IDS_VIEW_DETAILS	"&Details"
	IDS_SELECT		"Auswählen"
	IDS_OPEN		"Öffnen"

	IDS_CREATEFOLDER_DENIED "Es konnte kein neues Verzeichnis erstellt werden: Zugriff verweigert."
	IDS_CREATEFOLDER_CAPTION "Es trat ein Fehler beim Erstellen eines neuen Verzeichnisses auf"
	IDS_DELETEITEM_CAPTION "Bestätigung: Objekt löschen"
	IDS_DELETEFOLDER_CAPTION "Bestätigung: Verzeichnis löschen"
	IDS_DELETEITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' löschen möchten?"
	IDS_DELETEMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Objekte löschen möchten?"
	IDS_DELETESELECTED_TEXT "Sind Sie sich sicher, dass Sie die ausgewählten Objekte löschen möchten?"
	IDS_TRASHITEM_TEXT "Sind Sie sich sicher, dass Sie '%1' in den Papierkorb verschieben möchten?"
	IDS_TRASHFOLDER_TEXT "Sind Sie sich sicher, dass Sie '%1' und seinen Inhalt in den Papierkorb verschieben möchten?"
	IDS_TRASHMULTIPLE_TEXT "Sind Sie sich sicher, dass Sie diese %1 Dateien in den Papierkorb verschieben möchten?"
	IDS_CANTTRASH_TEXT "Das Objekt '%1' kann nicht in den Papierkorb verschoben werden.\n\n Möchten Sie es stattdessen löschen?"
	IDS_OVERWRITEFILE_TEXT "Der Ordner enthält bereits eine Datei namens '%1'.\n\n Wollen Sie die Datei ersetzen?"
	IDS_OVERWRITEFILE_CAPTION "Bestätigung: Datei überschreiben"
	IDS_OVERWRITEFOLDER_TEXT "Im Verzeichnis befindet sich bereits ein Ordner namens '%1'.\n\n"\
	"Wenn die Dateien im Zielordner die gleichen Namen haben, wie die im ausgewählten Ordner, werden sie ersetzt.\n\n\
	Möchten sie trotzdem fortfahren?"

        /* message box strings */
        IDS_RESTART_TITLE       "Neustarten"
        IDS_RESTART_PROMPT      "Möchten Sie, dass ein simulierter Windows Neustart durchgeführt wird?"
        IDS_SHUTDOWN_TITLE      "Beenden"
        IDS_SHUTDOWN_PROMPT     "Möchten Sie die aktuelle Wine Sitzung beenden?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Konnte Ausführen-Dialog nicht anzeigen (interner Fehler)"
        IDS_RUNDLG_BROWSE_ERROR    "Konnte Durchsuchen-Dialog nicht anzeigen (interner Fehler)"
        IDS_RUNDLG_BROWSE_CAPTION  "Durchsuchen"
        IDS_RUNDLG_BROWSE_FILTER   "Programme\0*.exe\0Alle Dateien\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS		"Startmenü\\Programme"
	IDS_PERSONAL		"Eigene Dateien"
	IDS_FAVORITES		"Favoriten"
	IDS_STARTUP		"Startmenü\\Programme\\Autostart"
	IDS_RECENT		"Recent"
	IDS_SENDTO		"SendTo"
	IDS_STARTMENU		"Startmenü"
	IDS_MYMUSIC		"Eigene Musik"
	IDS_MYVIDEO		"Eigene Videos"
	IDS_DESKTOPDIRECTORY	"Desktop"
	IDS_NETHOOD		"Netzwerkumgebung"
	IDS_TEMPLATES		"Vorlagen"
	IDS_APPDATA		"Anwendungsdaten"
	IDS_PRINTHOOD		"Druckumgebung"
	IDS_LOCAL_APPDATA	"Lokale Einstellungen\\Anwendungsdaten"
	IDS_INTERNET_CACHE	"Lokale Einstellungen\\Temporary Internet Files"
	IDS_COOKIES		"Cookies"
	IDS_HISTORY		"Lokale Einstellungen\\Verlauf"
	IDS_PROGRAM_FILES	"Programme"
	IDS_MYPICTURES		"Eigene Bilder"
	IDS_PROGRAM_FILES_COMMON "Programme\\Gemeinsame Dateien"
	IDS_COMMON_DOCUMENTS	"Dokumente"
	IDS_ADMINTOOLS		"Startmenü\\Programme\\Verwaltung"
	IDS_COMMON_MUSIC	"Musik"
	IDS_COMMON_PICTURES	"Bilder"
	IDS_COMMON_VIDEO	"Videos"
	IDS_CDBURN_AREA		"Lokale Einstellungen\\Anwendungsdaten\\Microsoft\\CD Burning"

	IDS_NEWFOLDER		"Neuer Ordner"

	IDS_CPANEL_TITLE	"Wine Systemsteuerung"
	IDS_CPANEL_NAME		"Name"
	IDS_CPANEL_DESCRIPTION	"Beschreibung"
	IDS_SHLEXEC_NOASSOC	"Es ist kein Programm mit diesem Dateityp verknüpft."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Wine Lizenz"
IDS_LICENSE,
"Wine ist freie Software; Sie dürfen sie unter den Bedingungen \
der GNU Lesser General Public License, welche von der \
Free Software Foundation veröffentlicht wurde; weiter verteilen \
und/oder modifizieren gemäß Version 2.1 der Lizenz, oder \
(nach ihren Ermessen) jeder späteren Version.\n\n\
Wine wird mit der Hoffnung verteilt das es sich als nützlich erweist. \
Wine kommt aber OHNE JEGLICHE GARANTIE daher; sogar ohne einer \
angedeuteten Garantie der MARKTGÄNGIGKEIT oder der EIGNUNG FÜR EINEN \
BESTIMMTEN NUTZEN. Sehen Sie sich die GNU Lesser General Public License \
an für mehr Details.\n\n\
Sie sollten mit dieser Bibliothek auch eine Kopie der \
GNU Lesser General Public License erhalten haben; wenn nicht schreiben \
Sie der Free Software Foundation, \
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."
}
