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

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