/*
 * Copyright 1998 Juergen Schmied
 * Copyright 2004 Henning Gerhardt
 * Copyright 2010 André Hentschel
 *
 * 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
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
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
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 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 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 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 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_PROGRAM_FILESX86	"Programme (x86)"
	IDS_MYPICTURES		"Eigene Bilder"
	IDS_PROGRAM_FILES_COMMON "Programme\\Gemeinsame Dateien"
	IDS_PROGRAM_FILES_COMMONX86 "Programme (x86)\\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_CONTACTS                "Kontakte"
	IDS_LINKS                   "Links"
	IDS_PHOTO_ALBUMS            "Bilder\\Diashows"
	IDS_PLAYLISTS               "Musik\\Wiedergabelisten"
	IDS_PUBLIC_DOWNLOADS        "Downloads"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\GameExplorer"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Bibliotheken"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Ringtones"
	IDS_SAMPLE_MUSIC            "Musik\\Beispielmusik"
	IDS_SAMPLE_PICTURES         "Bilder\\Beispielbilder"
	IDS_SAMPLE_PLAYLISTS        "Musik\\Beispielwiedergabelisten"
	IDS_SAMPLE_VIDEOS           "Videos\\Beispielvideos"
	IDS_SAVED_GAMES             "Gespeicherte Spiele"
	IDS_SAVED_SEARCHES          "Suchvorgänge"
	IDS_USER_PROFILES           "Benutzer"
	IDS_COMMON_OEM_LINKS        "OEM Links"
	IDS_DOCUMENTS               "Dokumente"
	IDS_DOWNLOADS               "Downloads"
	IDS_LOCAL_APPDATA_LOW       "Anwendungsdaten\\LocalLow"

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