/*
 * Slovenian Regedit resources
 *
 * Copyright 2003, 2008 Rok Mandeljc
 *
 * 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
 */

#pragma code_page(65001)

LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "&Register"
    BEGIN
        MENUITEM "&Uvozi registrsko datoteko ...",    ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "&Izvozi registrsko datoteko ...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "P&oveži se z omrežnim registrom ...", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "P&rekini povezavo z omrežnim registrom ...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Na&tisni\tCtrl+P",              ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "Iz&hod",                       ID_REGISTRY_EXIT
    END
    POPUP "&Urejanje"
    BEGIN
        MENUITEM "&Spremeni",                     ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Nov(a)"
        BEGIN
            MENUITEM "&Ključ",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Znakovni &niz",               ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binarna vrednost",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD vrednost",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Več-nizna vrednost",         ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "Izbri&ši\tDel",                ID_EDIT_DELETE
        MENUITEM "Prei&menuj\tF2",                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Kopiraj ime ključa",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Najdi\tCtrl+F",               ID_EDIT_FIND, GRAYED
        MENUITEM "Najdi nas&lednje\tF3",              ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "P&ogled"
    BEGIN
        MENUITEM "&Vrstica stanja",                 ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "&Delilna črta",                      ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Osveži\tF5",                ID_VIEW_REFRESH
    END
    POPUP "Pri&ljubljene"
    BEGIN
        MENUITEM "&Dodaj med Priljubljene ...",          ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "&Odstrani iz Priljubljenih ...",           ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "&Pomoč"
    BEGIN
        MENUITEM "&Teme pomoči\tF1",            ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&O Urejevalniku registra",      ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU DISCARDABLE
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "&Spremeni",                     ID_EDIT_MODIFY
	MENUITEM "Spremeni binarno vrednost",          ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "Izbri&ši\tDel",                ID_EDIT_DELETE
	MENUITEM "Prei&menij",                     ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "&Nov(a)"
        BEGIN
            MENUITEM "&Ključ",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Znakovni &niz",               ID_EDIT_NEW_STRINGVALUE
            MENUITEM "&Binarna vrednost",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "&DWORD vrednost",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "&Več-nizna vrednost",         ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "Izbri&ši\tDel",                ID_EDIT_DELETE
        MENUITEM "Prei&menuj\tF2",                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Izvozi ...",               ID_EDIT_EXPORT
        MENUITEM "&Kopiraj ime ključa",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Najdi\tCtrl+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 "Izvozi", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Vse", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "I&zbrano vejo:", IDC_EXPORT_SELECTED, 12, 30, 70, 12
    EDITTEXT IDC_EXPORT_PATH, 82, 30, 184, 12
END

IDD_FIND DIALOG DISCARDABLE  22, 17, 220, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Iskanje"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Najdi:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "Išči v:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "Ključi", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "Imena vrednosti", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Vsebina vrednosti", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "Samo celoten niz", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "Najdi",IDOK,175,5,40,15,WS_GROUP
    PUSHBUTTON      "Zapri",IDCANCEL,175,24,40,15, WS_GROUP
END

IDD_ADDFAVORITE DIALOG DISCARDABLE  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Dodaj med Priljubljene"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Ime:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "V redu",IDOK,120,36,40,15,WS_GROUP
    PUSHBUTTON      "Prekliči",IDCANCEL,165,36,40,15, WS_GROUP
END

IDD_DELFAVORITE DIALOG DISCARDABLE  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Odstrani iz Priljubljenih"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Ime:",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   "V redu",IDOK,120,72,40,15,WS_GROUP
    PUSHBUTTON      "Prekliči",IDCANCEL,165,72,40,15, WS_GROUP
END

IDD_EDIT_STRING DIALOG DISCARDABLE  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Urejanje niza"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Ime:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Vsebina:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "V redu",IDOK,120,56,40,15,WS_GROUP
    PUSHBUTTON   "Prekliči",IDCANCEL,165,56,40,15,WS_GROUP
END

IDD_EDIT_DWORD DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Urejanje DWORD vrednosti"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Ime:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Vsebina:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "Osnova", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "Heksadecimalno", IDC_DWORD_HEX, 130, 40, 65, 10, WS_TABSTOP
    AUTORADIOBUTTON "Decimalno", IDC_DWORD_DEC, 130, 52, 65, 10, WS_TABSTOP
    DEFPUSHBUTTON   "V redu",IDOK,120,78,40,15,WS_GROUP
    PUSHBUTTON   "Prekliči",IDCANCEL,165,78,40,15,WS_GROUP
END

IDD_EDIT_BINARY DIALOG DISCARDABLE  22, 17, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Urejanje binarne vrednosti"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Ime:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,160,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Vsebina:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,5,40,160,40
    DEFPUSHBUTTON   "V redu",IDOK,80,83,40,15,WS_GROUP
    PUSHBUTTON   "Prekliči",IDCANCEL,125,83,40,15,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG DISCARDABLE  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Urejanje več-nizne vrednosti"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Ime:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Vsebina:",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   "V redu",IDOK,120,156,40,15,WS_GROUP
    PUSHBUTTON   "Prekliči",IDCANCEL,165,156,40,15,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE DISCARDABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Ime"
    IDS_LIST_COLUMN_TYPE    "Vrsta"
    IDS_LIST_COLUMN_DATA    "Vsebina"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "Urejevalnik registra"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "Ukazi za delo s celotnim registrom"
    ID_EDIT_MENU            "Ukazi za urejanje vrednosti in ključev"
    ID_VIEW_MENU            "Ukazi za prilagajanje okna Urejevalniak registra"
    ID_FAVORITES_MENU       "Ukazi za dostop do pogosto uporabljanih ključev"
    ID_HELP_MENU            "Ukazi za prikaz pomoči in informacij o Urejevalniku registra"
    ID_EDIT_NEW_MENU        "Ukazi za ustvarjanje novih ključev in vrednosti"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "Spremeni vsebino"
    ID_EDIT_NEW_KEY         "Doda nov ključ"
    ID_EDIT_NEW_STRINGVALUE "Doda nov znakovni niz"
    ID_EDIT_NEW_BINARYVALUE "Doda novo binarno vrednost"
    ID_EDIT_NEW_DWORDVALUE  "Doda novo DWORD vrednost"
    ID_EDIT_NEW_MULTI_STRINGVALUE "Doda novo več-nizno vrednost"
    ID_REGISTRY_IMPORTREGISTRYFILE "Uvozi besedilno datoteko v register"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Izvozi ves register oz. del registra v besedilno datoteko"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Vzpostavi povezavo z registrom oddaljenega računalnika"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Prekine povezavo z registrom oddaljenega računalnika"
    ID_REGISTRY_PRINT       "Natisne ves register oz. del registra"
/*    ID_HELP_HELPTOPICS      "Odpre pomoč Urejevalnika registra" */
    ID_HELP_ABOUT           "Prikaže informacije o programu, njegovo različico ter avtorske pravice"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "Konča program"
    ID_FAVORITES_ADDTOFAVORITES "Doda ključe na seznam priljubljenih"
    ID_FAVORITES_REMOVEFAVORITE "Odstrani ključe s seznama priljubljenih"
    ID_VIEW_STATUSBAR       "Prikaže oz. skrije vrstico stanja"
    ID_VIEW_SPLIT           "Spremeni položaj delilne črte med podokni"
    ID_VIEW_REFRESH         "Osveži okno"
    ID_EDIT_DELETE          "Izbriše izbor"
    ID_EDIT_RENAME          "Preimenuje izbor"
    ID_EDIT_COPYKEYNAME     "Kopira ime izbranega ključa na odložišče"
    ID_EDIT_FIND            "Poišče znakovni niz v ključu, vrednosti ali vsebini vrednosti"
    ID_EDIT_FINDNEXT        "Poišče naslednjo ponovitev iskanega besedila"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR		    "Napaka"
    IDS_BAD_KEY		    "Ne morem pridobiti podatkov o ključu '%s'"
    IDS_BAD_VALUE           "Ne morem pridobiti podatkov o vrednosti '%s'"
    IDS_UNSUPPORTED_TYPE    "Ključev te vrste (%u) ni mogoče spreminjati"
    IDS_TOO_BIG_VALUE       "Vrednost (%u) je prevelika"
    IDS_DELETE_BOX_TITLE    "Potrditev brisanja vrednosti"
    IDS_DELETE_BOX_TEXT     "Ali ste prepričani, da želite izbrisati vrednost '%s'?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Are ste prepričani, da želite izbrisati izbrane vrednosti?"
    IDS_NEWKEY              "Nov ključ #%d"
    IDS_NEWVALUE            "Nova vrednost #%d"
    IDS_NOTFOUND            "Iskanega niza '%s' ni mogoče najti"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "Uvozi registrsko datoteko"
    IDS_FILEDIALOG_EXPORT_TITLE   "Izvozi registrsko datoteko"
    IDS_FILEDIALOG_FILTER         "Registrske datoteke\0*.reg\0Win9x/NT4 registrske datoteke (REGEDIT4)\0*.reg\0Vse datoteke (*.*)\0*.*\0\0"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "Moj računalnik"
    IDS_REGISTRY_DEFAULT_VALUE       "(privzeto)"
    IDS_REGISTRY_VALUE_NOT_SET       "(vsebina ni nastavljena)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(vsebine ni mogoče prikazati)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(neznana vrsta %d)"
END

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

/*
 * TEXTINCLUDE
 */

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

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

#pragma code_page(default)
