/*
 * 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
 */

#include "resource.h"

#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"
    ID_EDIT_EXPORT          "Izvozi izbrano vejo registra v tekstovno datoteko"
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

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