/*
 * (German) Regedit resources
 *
 * Copyright 2004 Michael Fritscher
 *
 * 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"

LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL

#pragma code_page(65001)

/*
 * Menu
 */


IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "&Registry"
    BEGIN
        MENUITEM "Registry &importieren...",    ID_REGISTRY_IMPORTREGISTRYFILE

        MENUITEM "Registry &exportieren...",    ID_REGISTRY_EXPORTREGISTRYFILE

        MENUITEM SEPARATOR
        MENUITEM "&Mit Netzwerkregistry verbinden...",
                                                ID_REGISTRY_CONNECTNETWORKREGISTRY
        , GRAYED
        MENUITEM "&Von Netzwerkregistry trennen...",
                                                ID_REGISTRY_DISCONNECTNETWORKREGISTRY
        , GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Drucken\tStrg+P",               ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Beenden",                       ID_REGISTRY_EXIT
    END
    POPUP "&Bearbeiten"
    BEGIN
        MENUITEM "&Ändern",                        ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Neu"
        BEGIN
            MENUITEM "&Schlüssel",                 ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Zeichenfolge",              ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binärwert",                 ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD-Wert",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Mehrteilige Zeichenfolge",  ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Löschen\tEntf",                 ID_EDIT_DELETE
        MENUITEM "&Umbenennen",                    ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "Schlüsselnamen &kopieren",       ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Suchen\tStrg+F",                ID_EDIT_FIND, GRAYED
        MENUITEM "&Weitersuchen\tF3",              ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "&Ansicht"
    BEGIN
        MENUITEM "Status&leiste",                  ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Trennen",                       ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Aktualisieren\tF5",             ID_VIEW_REFRESH
    END
    POPUP "&Favoriten"
    BEGIN
        MENUITEM "Zu den Favoriten &hinzufügen...",   ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "Von den Favoriten &löschen...",     ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "&Hilfe"
    BEGIN
        MENUITEM "&Hilfethemen\tF1",               ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&Über Registry Editor",          ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU DISCARDABLE
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "&Ändern",                        ID_EDIT_MODIFY
	MENUITEM "Binäre Daten ändern",            ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "&Löschen\tEntf",                 ID_EDIT_DELETE
	MENUITEM "&Umbennenen",                    ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "&Neu"
        BEGIN
            MENUITEM "&Schlüssel",                 ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Zeichenfolge",              ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binärwert",                 ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD Wert",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Mehrteilige Zeichenfolge",  ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Löschen\tEntf",                 ID_EDIT_DELETE
        MENUITEM "&Umbenennen",                    ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Exportieren...",                ID_EDIT_EXPORT
        MENUITEM "Schlüsselnamen &kopieren",       ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Suchen\tStrg+F",                ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

IDD_EXPORT_TEMPLATE DIALOG DISCARDABLE  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Registry &exportieren", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Alles", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "Ausgewählter &Zweig:", IDC_EXPORT_SELECTED, 12, 30, 90, 12
    EDITTEXT IDC_EXPORT_PATH, 102, 30, 164, 12
END

IDD_FIND DIALOG DISCARDABLE  22, 17, 210, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Suchen"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Suchen:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,110,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "Suchen nach:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "Schlüsseln", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "Werten", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Daten", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Komplette Zeichenfolge vergleichen", IDC_FIND_WHOLE, 5, 70, 150, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "Suchen",IDOK,160,5,45,11,WS_GROUP
    PUSHBUTTON      "Abbrechen",IDCANCEL,160,22,45,11, WS_GROUP
END

IDD_ADDFAVORITE DIALOG DISCARDABLE  22,17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Zu den Favoriten hinzufügen"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT          "NAME:",IDC_STATIC,5,5,119,8
    EDITTEXT       IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON  "OK",IDOK,110,40,45,11, WS_GROUP
    PUSHBUTTON     "Abbrechen",IDCANCEL,160,40,45,11, WS_GROUP
END

IDD_DELFAVORITE DIALOG DISCARDABLE  22,17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Von den Favoriten entfernen"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT          "Name:",IDC_STATIC,5,5,119,8
    LISTBOX        IDC_NAME_LIST,5,15,200,52, WS_BORDER | WS_TABSTOP | LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL
    DEFPUSHBUTTON  "OK",IDOK,110,73,45,11,WS_GROUP
    PUSHBUTTON     "Abbrechen",IDCANCEL,160,73,45,11,WS_GROUP
END

IDD_EDIT_STRING DIALOG DISCARDABLE  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Zeichenfolge ändern"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Name:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Daten:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,110,60,45,11,WS_GROUP
    PUSHBUTTON      "Abbrechen",IDCANCEL,160,60,45,11,WS_GROUP
END

IDD_EDIT_DWORD DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "DWORD-Wert editieren"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Name:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Daten:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "Basis", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "Hexadezimal", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "Dezimal", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,110,80,45,11,WS_GROUP
    PUSHBUTTON      "Abbrechen",IDCANCEL,160,80,45,11,WS_GROUP
END

IDD_EDIT_BINARY DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Binären Wert editieren"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Name:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Daten:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,4,40,160,40
    DEFPUSHBUTTON   "OK",IDOK,110,85,45,11,WS_GROUP
    PUSHBUTTON      "Abbrechen",IDCANCEL,160,85,45,11,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG DISCARDABLE  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Mehrteilige Zeichenfolge editieren"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Name:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Daten:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,112, WS_BORDER | WS_TABSTOP | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
    DEFPUSHBUTTON   "OK",IDOK,110,160,45,11,WS_GROUP
    PUSHBUTTON      "Abbrechen",IDCANCEL,160,160,45,11,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE DISCARDABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Name"
    IDS_LIST_COLUMN_TYPE    "Typ"
    IDS_LIST_COLUMN_DATA    "Daten"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "Registry-Editor"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "Befehle zum Bearbeiten der ganzen Registry"
    ID_EDIT_MENU            "Befehle zum Ändern von Schlüsseln oder Werten"
    ID_VIEW_MENU            "Befehle zum Anpassen des Fensters"
    ID_FAVORITES_MENU       "Befehle für die Favoriten"
    ID_HELP_MENU            "Befehle zum Anzeigen von Hilfe oder Informationen über das Programm"
    ID_EDIT_NEW_MENU        "Befehle zum Erstellen von neuen Schlüsseln oder Daten"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "Ändert die Daten eines Wertes"
    ID_EDIT_NEW_KEY         "Fügt einen neuen Schlüssel hinzu"
    ID_EDIT_NEW_STRINGVALUE "Fügt eine neue Zeichenfolge hinzu "
    ID_EDIT_NEW_BINARYVALUE "Fügt einen neuen Binärwert hinzu"
    ID_EDIT_NEW_DWORDVALUE  "Fügt einen neuen DWORD-Wert hinzu"
    ID_EDIT_NEW_MULTI_STRINGVALUE "Fügt eine neue mehrteilige Zeichenfolge hinzu"
    ID_REGISTRY_IMPORTREGISTRYFILE "Importiert eine Textdatei in die Registry"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Exportiert Teile oder die ganze Registry in eine Textdatei"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Verbindet zu der Registry eines Fremdcomputers"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Trennt die Verbindung zu der Registry eines Fremdcomputers"
    ID_REGISTRY_PRINT       "Druckt Teile oder die gesamte Registry aus"
/*    ID_HELP_HELPTOPICS      "Öffnet die Hilfe" */
    ID_HELP_ABOUT           "Zeigt Programmname, Version und Copyright an"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "Beendet den Registry-Editor"
    ID_FAVORITES_ADDTOFAVORITES "Fügt Schlüssel zu den Favoriten hinzu"
    ID_FAVORITES_REMOVEFAVORITE "Löscht Schlüssel von den Favoriten"
    ID_VIEW_STATUSBAR       "Zeigt oder versteckt die Statusleiste"
    ID_VIEW_SPLIT           "Ändert die Position das Fensterteilers"
    ID_VIEW_REFRESH         "Aktualisiert das Fenster"
    ID_EDIT_DELETE          "Löscht die Auswahl"
    ID_EDIT_RENAME          "Benennt die Auswahl um"
    ID_EDIT_COPYKEYNAME     "Kopiert den Schlüsselnamen in die Zwischenablage"
    ID_EDIT_FIND            "Findet eine Zeichenfolge in einem Schlüssel, einem Namen oder in Daten"
    ID_EDIT_FINDNEXT        "Findet die nächste Zeichenfolge"
    ID_EDIT_EXPORT          "Exportiert den ausgewählten Zweig der Registry in eine Textdatei"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR               "Fehler"
    IDS_BAD_KEY             "Kann den Schlüssel '%s' nicht lesen"
    IDS_BAD_VALUE           "Kann den Wert '%s' nicht lesen"
    IDS_UNSUPPORTED_TYPE    "Kann Schlüssel von diesem Typ (%u) nicht ändern"
    IDS_TOO_BIG_VALUE       "Der Wert ist zu groß (%u)"
    IDS_DELETE_BOX_TITLE    "Bitte bestätigen"
    IDS_DELETE_BOX_TEXT     "Wollen Sie '%s' wirklich löschen?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Wollen Sie diese Werte wirklich löschen?"
    IDS_NEWKEY              "Neuer Schlüssel #%d"
    IDS_NEWVALUE            "Neuer Wert #%d"
    IDS_NOTFOUND            "Suchfolge '%s' wurde nicht gefunden."
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "Registry-Datei importieren"
    IDS_FILEDIALOG_EXPORT_TITLE   "Registry-Datei exportieren"
    IDS_FILEDIALOG_FILTER         "Registry-Dateien\0*.reg\0Win9x/NT4 Registry-Dateien (REGEDIT4)\0*.reg\0Alle Dateien (*.*)\0*.*\0\0"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "Arbeitsplatz"
    IDS_REGISTRY_DEFAULT_VALUE       "(Standard)"
    IDS_REGISTRY_VALUE_NOT_SET       "(Wert nicht gesetzt)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(kann Wert nicht darstellen)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(unbekannt %d)"
END

/*****************************************************************/

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

/*****************************************************************/
