/*
 * Winefile
 * German Language Support
 *
 * Copyright 2000, 2005 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 *
 * 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 "resource.h"

#pragma code_page(65001)

LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&Datei"  {
        MENUITEM "Ö&ffnen\tEingabetaste",       ID_ACTIVATE
        MENUITEM "&Verschieben...\tF7",         ID_FILE_MOVE
        MENUITEM "&Kopieren...\tF8",            ID_FILE_COPY
        MENUITEM "&In Zwischenablage...\tF9",   118
        MENUITEM "&Löschen\tEntf",              ID_FILE_DELETE
        MENUITEM "&Umbenennen...",              109
        MENUITEM "&Eigenschaften...\tAlt+Eingabetaste", ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "K&omprimieren...",            119
        MENUITEM "Deko&mprimieren...",          120
        MENUITEM SEPARATOR
        MENUITEM "&Ausführen...",               ID_RUN
        MENUITEM "&Drucken...",                 102
        MENUITEM "Zuord&nen...",                103
        MENUITEM SEPARATOR
        MENUITEM "Ver&zeichnis erstellen...",   111
        MENUITEM "&Suchen...",                  104
        MENUITEM "Dateien aus&wählen...",       116
        MENUITEM SEPARATOR
        MENUITEM "&Beenden\tAlt+X",             ID_FILE_EXIT
    }

    POPUP "Da&tenträger"  {
        MENUITEM "Datenträger &kopieren...",    201
        MENUITEM "Datenträger &benennen...",    202
        MENUITEM SEPARATOR
        MENUITEM "Datenträger &formatieren...", ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "...",         -1  /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Netzwerklaufwerk &verbinden...",ID_CONNECT_NETWORK_DRIVE
        MENUITEM "Netzwerklaufwerk &trennen...",ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "F&reigeben als...",           254
        MENUITEM "Freigabe been&den...",        255
        MENUITEM SEPARATOR
        MENUITEM "Laufwerk aus&wählen...",      251
    }


    POPUP "&Verzeichnisse"  {
        MENUITEM "&Nächste Ebene einblenden\t+",301
        MENUITEM "&Zweig einblenden\t*",        302
        MENUITEM "Alle &Ebenen einblenden\tStrg+*",303
        MENUITEM "Zweig &ausblenden\t-",        304
        MENUITEM SEPARATOR
        MENUITEM "&Verzweigungen kennzeichnen", 505
    }

    POPUP "&Ansicht"  {
        MENUITEM "Struktur &und Verzeichnis",   413
        MENUITEM "Nur St&ruktur",               411
        MENUITEM "Nur &Verzeichnis",            412
        MENUITEM SEPARATOR
        MENUITEM "&Teilen",                     ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Name",                       ID_VIEW_NAME
        MENUITEM "A&lle Dateiangaben",          ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "&Bestimmte Dateiangaben...",  ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "Nach N&ame",                  ID_VIEW_SORT_NAME
        MENUITEM "Nach T&yp",                   ID_VIEW_SORT_TYPE
        MENUITEM "Nach &Größe",                 ID_VIEW_SORT_SIZE
        MENUITEM "Nach &Datum",                 ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Angaben ausw&ählen...",       ID_VIEW_FILTER
    }

    POPUP "&Optionen"  {
        MENUITEM "&Bestätigen...",              501
        MENUITEM "Schrift&art...",              ID_SELECT_FONT
        MENUITEM "Symbolleiste &definieren...", 512
        MENUITEM SEPARATOR
        MENUITEM "Sy&mbolleiste",               ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "Lauf&werkleiste",             ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "&Statusleiste",               ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "Vollb&ild\tStrg+Umschalt+S",  ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Symbol nach Programmstart",  504
        MENUITEM "&Einstellungen beim Beenden speichern", 511
    }

    POPUP "&Sicherheit"  {
        MENUITEM "&Berechtigungen...",          605
        MENUITEM "Über&wachen...",              606
        MENUITEM "Besi&tzer...",                607
    }

    POPUP "&Fenster"  {
        MENUITEM "Neues &Fenster",              ID_WINDOW_NEW
        MENUITEM "Über&lappend\tUmschalt+F5",   ID_WINDOW_CASCADE
        MENUITEM "&Untereinander",              ID_WINDOW_TILE_HORZ
        MENUITEM "&Nebeneinander\tUmschalt+F4", ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "au&tomatisch anordnen",       ID_WINDOW_AUTOSORT
#endif
        MENUITEM "&Symbole anordnen",           ID_WINDOW_ARRANGE
        MENUITEM "&Aktualisieren\tF5",          ID_REFRESH
    }

    POPUP "&Hilfe"  {
        MENUITEM "&Hilfethemen\tF1",            ID_HELP
        MENUITEM "&Suchen...\tF1",              ID_HELP
        MENUITEM "Hilfe &verwenden\tF1",        ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&Info über Winefile...",      ID_ABOUT
    }
}

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ziel auswählen"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Verzeichnis:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Abbrechen", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Durchsuchen", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Angaben auswählen"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Name:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Dateityp",-1,7,23,87,56
    CONTROL         "&Verzeichnisse",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programme",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "&Dokumente",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Andere Dateien",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "Vers&teckte/Systemdateien anzeigen",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Abbrechen",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Eigenschaften für %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Abbrechen",IDCANCEL,191,29,50,14
    LTEXT           "&Dateiname:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Pfad:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Letzte &Änderung:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Version:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Copyright:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Größe:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Attribute",-1,7,79,158,46
    CONTROL         "&Schreibgeschützt",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "&Versteckt",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Archiv",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "Sys&tem",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Komprimiert",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Versionsinformationen",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Anwenden der Schriftarteinstellung"
    IDS_FONT_SEL_ERROR      "Fehler während der Schriftart-Auswahl."
}

STRINGTABLE
{
    IDS_WINEFILE            "Winefile"
    IDS_ERROR               "Fehler"
    IDS_ROOT_FS             "root fs"
    IDS_UNIXFS              "unixfs"
    IDS_DESKTOP             "Desktop"
    IDS_SHELL               "Shell"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "Noch nicht implementiert"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "Name"
    IDS_COL_SIZE            "Größe"
    IDS_COL_CDATE           "CDatum"
    IDS_COL_ADATE           "ZDatum"
    IDS_COL_MDATE           "ÄDatum"
    IDS_COL_IDX             "Index/Inode"
    IDS_COL_LINKS           "Links"
    IDS_COL_ATTR            "Attribute"
    IDS_COL_SEC             "Sicherheit"

    IDS_FREE_SPACE_FMT      "%s von %s frei"
}
