/*
 * Regedit Danish resources
 *
 * Copyright 2008 Jens Albretsen <jens@albretsen.dk>
 *           2010 Thomas Larsen
 *
 * 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_DANISH, SUBLANG_DEFAULT

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU
BEGIN
    POPUP "&Register"
    BEGIN
        MENUITEM "&Importér registeringsfil...",     ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "&Eksportér registeringsfil...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "&Tilslut netværksregisteringsdatabase...", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "&Frakobl netværksregisteringsdatabase...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Udskriv\tCtrl+P",                    ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Afslut",                             ID_REGISTRY_EXIT
    END
    POPUP "R&ediger"
    BEGIN
        MENUITEM "&Ændre",                              ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Ny"
        BEGIN
            MENUITEM "Nø&gle",                          ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Strengværdi",                    ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binærværdi",                     ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD værdi",                    ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Flerstrengsværdi",               ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Slet\tDel",                          ID_EDIT_DELETE
        MENUITEM "&Omdøb\tF2",                          ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Kopier nøglenavn",                   ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Find\tCtrl+F",                       ID_EDIT_FIND, GRAYED
        MENUITEM "Find &næste\tF3",                     ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "&Vis"
    BEGIN
        MENUITEM "&Statuslinie",                        ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Split",                              ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "Opdate&r\tF5",                        ID_VIEW_REFRESH
    END
    POPUP "&Favoritter"
    BEGIN
        MENUITEM "Tilføj til f&avoritter...",              ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "Fje&rn favorit...",                      ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "&Hjælp"
    BEGIN
        MENUITEM "Emner i &hjælp\tF1",                  ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&Om Registeringsdatabase editor",     ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "&Ændre",                             ID_EDIT_MODIFY
	MENUITEM "Ændre binærdata",                    ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "&Slet\tDel",                         ID_EDIT_DELETE
	MENUITEM "&Omdøb",                             ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "&Ny"
        BEGIN
            MENUITEM "Nø&gle",                          ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "&Strengværdi",                    ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binærværdi",                     ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD værdi",                    ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Flerstrengsværdi",               ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Slet\tDel",                          ID_EDIT_DELETE
        MENUITEM "&Omdøb\tF2",                          ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Export...",                          ID_EDIT_EXPORT
        MENUITEM "&Kopier nøglenavn",                   ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Find\tCtrl+F",                       ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

IDD_EXPORT_TEMPLATE DIALOG  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "&Eksporter registeringsdatabase", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Alt", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "&Markeret del:", IDC_EXPORT_SELECTED, 12, 30, 70, 12
    EDITTEXT IDC_EXPORT_PATH, 82, 30, 184, 12
END

IDD_FIND DIALOG  22, 17, 210, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Find"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT           "Find:",IDC_STATIC,5,7,119,8
EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
LTEXT           "Find i:",IDC_STATIC,5, 22, 119, 8
CHECKBOX        "Nøgler", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
CHECKBOX        "Værdinavn", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
CHECKBOX        "Værdiindhold", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
CHECKBOX        "Kun hele strenge", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
DEFPUSHBUTTON   "Find",IDOK,175,5,30,11,WS_GROUP
PUSHBUTTON      "Luk",IDCANCEL,175,22,30,11, WS_GROUP
END

IDD_ADDFAVORITE DIALOG  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Tilføj til favorit"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT           "Navn:",IDC_STATIC,5,5,119,8
EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
DEFPUSHBUTTON   "OK",IDOK,140,40,30,11,WS_GROUP
PUSHBUTTON      "Annuller",IDCANCEL,175,40,30,11, WS_GROUP
END

IDD_DELFAVORITE DIALOG  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Fjern favorit"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT           "Navn:",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,140,73,30,11,WS_GROUP
PUSHBUTTON      "Annuller",IDCANCEL,175,73,30,11, WS_GROUP
END

IDD_EDIT_STRING DIALOG  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Rediger streng"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Værdinavn:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Værdidata:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,140,60,30,11,WS_GROUP
    PUSHBUTTON   "Annuller",IDCANCEL,175,60,30,11,WS_GROUP
END

IDD_EDIT_DWORD DIALOG  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Rediger DWORD"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Værdinavn:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Værdidata:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "Base", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "Hexadecimal", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "Decimal", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,140,80,30,11,WS_GROUP
    PUSHBUTTON   "Annuller",IDCANCEL,175,80,30,11,WS_GROUP
END

IDD_EDIT_BINARY DIALOG  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Rediger binær"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Værdinavn:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Værdidata:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,4,40,160,40
    DEFPUSHBUTTON   "OK",IDOK,140,80,30,11,WS_GROUP
    PUSHBUTTON   "Annuller",IDCANCEL,175,80,30,11,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Rediger flerstreng"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Værdinavn:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Værdidata:",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,140,160,30,11,WS_GROUP
    PUSHBUTTON   "Annuller",IDCANCEL,175,160,30,11,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Navn"
    IDS_LIST_COLUMN_TYPE    "Type"
    IDS_LIST_COLUMN_DATA    "Data"
END

STRINGTABLE
BEGIN
    IDS_APP_TITLE           "Registeringsdatabase editor"
END

STRINGTABLE
BEGIN
    ID_REGISTRY_MENU        "Indeholder kommandoer for at arbejde med hele registeret"
    ID_EDIT_MENU            "Indeholder kommandoer for at redigere værdier og nøgler"
    ID_VIEW_MENU            "Indeholder kommandoer for at tilpasse registervinduet"
    ID_FAVORITES_MENU       "Indeholder kommandoer for at få tilgang til nøgler som bruges ofte"
    ID_HELP_MENU            "Indeholder kommandoer for at vise hjælp og information om Registeringsdatabase editor"
    ID_EDIT_NEW_MENU        "Indeholder kommandoer for at oprette nye nøgler eller værdier"
END

STRINGTABLE
BEGIN
    ID_EDIT_MODIFY          "Ændrer værdiens data"
    ID_EDIT_NEW_KEY         "Tilføj en ny nøgle"
    ID_EDIT_NEW_STRINGVALUE "Tilføj en ny strengværdi"
    ID_EDIT_NEW_BINARYVALUE "Tilføj en ny binærværdi"
    ID_EDIT_NEW_DWORDVALUE  "Tilføj en ny DWORD værdi"
    ID_EDIT_NEW_MULTI_STRINGVALUE "Tilføj en ny flerstrengsværdi"
    ID_REGISTRY_IMPORTREGISTRYFILE "Importerer en tekstfil ind i registeringsdatabase"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Eksporterer hele eller dele af registeringsdatabase til en tekstfil"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Tilslut til registeringsdatabase på en anden maskine"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Frakobl fra registeringsdatabase på en anden maskine"
    ID_REGISTRY_PRINT       "Skriver ut hele eller deler av registeret"
/*    ID_HELP_HELPTOPICS      "Viser hjælp til Registerredigering" */
    ID_HELP_ABOUT           "Viser programinformation, versionnummer og ophavsret"
END

STRINGTABLE
BEGIN
    ID_REGISTRY_EXIT        "Afslutter Registeringsdatabase editor"
    ID_FAVORITES_ADDTOFAVORITES "Tilføjer nøgler til favoritlisten"
    ID_FAVORITES_REMOVEFAVORITE "Fjerner nøgler fra favoritlisten"
    ID_VIEW_STATUSBAR       "Viser eller skjuler statuslinien"
    ID_VIEW_SPLIT           "Ændrer positionen til delingslinien mellem to ruder"
    ID_VIEW_REFRESH         "Opdaterer vinduet"
    ID_EDIT_DELETE          "Sletter utvalget"
    ID_EDIT_RENAME          "Omdøber navn til utvalget"
    ID_EDIT_COPYKEYNAME     "Kopierer navnet til den valgte nøgle til utklippstavlen"
    ID_EDIT_FIND            "Finder en tekststreng i en nøgle, værdi eller data"
    ID_EDIT_FINDNEXT        "Forsætter søgningen"
    ID_EDIT_EXPORT          "Eksporter udvalgte gren af registreringsdatabasen til en tekst fil"
END

STRINGTABLE
BEGIN
    IDS_ERROR		    "Fejl"
    IDS_BAD_KEY		    "Kunne ikke tilgå nøgleen '%s'"
    IDS_BAD_VALUE           "Kunne ikke tilgå værdien '%s'"
    IDS_UNSUPPORTED_TYPE    "Kunne ikke redigere nøgler af typen '%u'"
    IDS_TOO_BIG_VALUE       "Værdien er for stor (%u)"
    IDS_DELETE_BOX_TITLE    "Bekræft sletning af værdi"
    IDS_DELETE_BOX_TEXT     "Er du sikker på at ville slette værdien '%s'?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Er du sikker på du vil slette disse værdier?"
    IDS_NEWKEY              "Ny nøgle #%d"
    IDS_NEWVALUE            "Ny værdi #%d"
    IDS_NOTFOUND            "Fandt ikke søgestrengen '%s'"
END

STRINGTABLE
BEGIN
IDS_FILEDIALOG_IMPORT_TITLE   "Importer registeringsdatabasefil"
IDS_FILEDIALOG_EXPORT_TITLE   "Eksporter registeringsdatabasefil"
IDS_FILEDIALOG_FILTER         "Registeringsdatabasefiler\0*.reg\0Win9x-/NT4-registerfiler (REGEDIT4)\0*.reg\0Alle filer (*.*)\0*.*\0\0"
END

STRINGTABLE
BEGIN
IDS_REGISTRY_ROOT_NAME           "Min computer"
IDS_REGISTRY_DEFAULT_VALUE       "(Standard)"
IDS_REGISTRY_VALUE_NOT_SET       "(værdi ikke sat)"
IDS_REGISTRY_VALUE_CANT_DISPLAY  "(kunne ikke vise værdi)"
IDS_REGISTRY_UNKNOWN_TYPE        "(ukendt %d)"
END

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

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

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