/*
 * Copyright 2002, 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_001 MENU DISCARDABLE
BEGIN
	MENUITEM "Ve&like ikone",	FCIDM_SHVIEW_BIGICON
	MENUITEM "&Male ikone",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Seznam",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "Po&drobnosti",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Pogled"
	  BEGIN
	    MENUITEM "Ve&like ikone",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "&Male ikone",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Seznam",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "Po&drobnosti",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Razvrsti &ikone"
	  BEGIN
	    MENUITEM "Po &imenu",	0x30	/* column 0 */
	    MENUITEM "Po &vrsti",	0x32	/* column 2 */
	    MENUITEM "Po &velikosti",	0x31	/* ... */
	    MENUITEM "Po &datumu",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "&Samodejno",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Poravnaj ikone",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Osveži",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Prilepi",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Prilepi kot povezavo",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Nova"
	  BEGIN
	    MENUITEM "Nova &mapa",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Nova &povezava",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Lastnosti",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Izberi"		FCIDM_SHVIEW_OPEN
	  MENUITEM "R&azišči",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Odpri",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "I&zreži",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Kopiraj",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Ustvari po&vezavo",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "Iz&briši",		FCIDM_SHVIEW_DELETE
	  MENUITEM "P&reimenuj",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Lastnosti",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "E&xit", IDM_CPANEL_EXIT
    END

    POPUP "&View"
    BEGIN
        MENUITEM "Ve&like ikone", FCIDM_SHVIEW_BIGICON
        MENUITEM "&Male ikone", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Seznam", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "Po&drobnosti", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Help"
    BEGIN
        MENUITEM "&O Nadzorni plošči ...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Brskanje po mapah"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "V redu", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Prekliči", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
 LTEXT "", IDD_TITLE, 4, 4, 180, 12
 LTEXT "", IDD_STATUS, 4, 25, 180, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	4, 40, 180, 120
}

SHNEWBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Brskanje po mapah"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Mapa:", IDD_FOLDER, 10, 156, 40, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	12, 38, 194, 105
 EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Ustvari &novo mapo", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "V redu", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Prekliči", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
}

SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sporočilo"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Da", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Da za &vse", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Ne", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Prekliči", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "O %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "V redu", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "&Licenčna pog.", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 42, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 42, 22, 170, 10
 LTEXT "Različica Wine: %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine smo ustvarili:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Vnesite ime programa, mape, dokumenta ali spletne strani, in Wine ga (jo) bo odprl.", 12289, 36, 11, 182, 18
 LTEXT "&Odpri:", 12305, 7, 39, 24, 10
 CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "V redu", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Prekliči", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Brskaj ...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Datoteka"
	IDS_SHV_COLUMN2		"Velikost"
	IDS_SHV_COLUMN3		"Vrsta"
	IDS_SHV_COLUMN4		"Spremenjena"
	IDS_SHV_COLUMN5		"Atributi"
	IDS_SHV_COLUMN6		"Velikost"
	IDS_SHV_COLUMN7		"Prostor na voljo"
	IDS_SHV_COLUMN8		"Ime"
	IDS_SHV_COLUMN9		"Komentarji"
	IDS_SHV_COLUMN10	"Lastnik"
	IDS_SHV_COLUMN11	"Skupina"
	IDS_SHV_COLUMN_DELFROM	"Prvotna lokacija"
	IDS_SHV_COLUMN_DELDATE	"Datum izbrisa"

        /* special folders */
	IDS_DESKTOP		"Namizje"
	IDS_MYCOMPUTER		"Moj računalnik"
	IDS_RECYCLEBIN_FOLDER_NAME      "Smeti"
	IDS_CONTROLPANEL	"Control Panel"

        /* context menus */
	IDS_VIEW_LARGE		"Ve&like ikone"
	IDS_VIEW_SMALL		"&Male ikone"
	IDS_VIEW_LIST		"&Seznam"
	IDS_VIEW_DETAILS	"Po&drobnosti"
	IDS_SELECT		"Izberi"
	IDS_OPEN		"Odpri"

	IDS_CREATEFOLDER_DENIED "Nove mape ni mogoče ustvariti: Nimate ustreznih dovoljenj."
	IDS_CREATEFOLDER_CAPTION "Napaka pri ustvarjanju nove mape"
	IDS_DELETEITEM_CAPTION "Potrdite brisanje datoteke"
	IDS_DELETEFOLDER_CAPTION "Potrdite brisanje mape"
	IDS_DELETEITEM_TEXT "Ali ste prepričani, da želite izbrisati predmet '%1'?"
	IDS_DELETEMULTIPLE_TEXT "Ali ste prepričani, da želite izbrisati predmete (%1)?"
	IDS_DELETESELECTED_TEXT "Ali ste prepričani, da želite izbrisati izbrane predmente?"
	IDS_TRASHITEM_TEXT "Ali ste prepričani, da želite premakniti predmet '%1' v Smeti?"
	IDS_TRASHFOLDER_TEXT "Ali ste prepričani, da želite premakniti mapo '%1' in njeno vsebino v Smeti?"
	IDS_TRASHMULTIPLE_TEXT "Ali ste prepričani, da želite premakniti predmente (%1) v Smeti?"
	IDS_CANTTRASH_TEXT "Predmeta '%1' ni mogoče premakniti v Smeti. Ali ga želite izbrisati?"
	IDS_OVERWRITEFILE_TEXT "Mapa že vsebuje datoteko z imenom '%1'.\n\nAli jo želite zamenjati?"
	IDS_OVERWRITEFILE_CAPTION "Potrdite prepis datoteke"
	IDS_OVERWRITEFOLDER_TEXT "Mapa že vsebuje mapo z imenom '%1'.\n\n"\
	    "Datoteke v ciljni mapi, ki imajo enaka imena kot datoteke v izvorni mapi\n"\
	    "bodo prepisane. Ali še vedno želite premakniti oziroma kopirati mapo?"

    /* message box strings */
    IDS_RESTART_TITLE       "Ponoven zagon"
    IDS_RESTART_PROMPT      "Ali želite simulirati ponoven zagon Oken?"
    IDS_SHUTDOWN_TITLE      "Izklop"
    IDS_SHUTDOWN_PROMPT     "Ali želite zaključiti vašo Wine sejo?"

    /* Run File dialog */
    IDS_RUNDLG_ERROR           "Dialoga 'Zagon programa' ni mogoče prikazati (notranja napaka)"
    IDS_RUNDLG_BROWSE_ERROR    "Dialoga 'Brskanje' ni mogoče prikazati (notranja napaka)"
    IDS_RUNDLG_BROWSE_CAPTION  "Brskanje"
    IDS_RUNDLG_BROWSE_FILTER   "Izvršljive datoteke\0*.exe\0All Files\0*.*\0\0"

    /* shell folder path default values */
	IDS_PROGRAMS                "Meni Start\\Programi"
	IDS_PERSONAL                "Moji dokumenti"
	IDS_FAVORITES               "Priljubljene"
	IDS_STARTUP                 "Meni Start\\Programi\\Zagon"
	IDS_RECENT                  "Nedavni dokumenti"
	IDS_SENDTO                  "Pošlji"
	IDS_STARTMENU               "Meni Start"
	IDS_MYMUSIC                 "Glasba"
	IDS_MYVIDEO                 "Video"
	IDS_DESKTOPDIRECTORY        "Namizje"
	IDS_NETHOOD                 "Omrežje"
	IDS_TEMPLATES               "Predloge"
	IDS_APPDATA                 "Podatki programov"
	IDS_PRINTHOOD               "Tiskalniki"
	IDS_LOCAL_APPDATA           "Lokalne nastavitve\\Podatki programov"
	IDS_INTERNET_CACHE          "Lokalne nastavitve\\Začasne internetne datoteke"
	IDS_COOKIES                 "Piškotki"
	IDS_HISTORY                 "Lokalne nastavitve\\Zgodovina"
	IDS_PROGRAM_FILES           "Programi"
	IDS_MYPICTURES              "Slike"
	IDS_PROGRAM_FILES_COMMON    "Programi\\Skupne datoteke"
	IDS_COMMON_DOCUMENTS        "Dokumenti"
	IDS_ADMINTOOLS              "Meni start\\Programi\\Administrativna orodja"
	IDS_COMMON_MUSIC            "Dokumenti\\Glasba"
	IDS_COMMON_PICTURES         "Dokumenti\\Slike"
	IDS_COMMON_VIDEO            "Dokumenti\\Video"
	IDS_CDBURN_AREA             "Lokalne nastavitve\\Podatki programov\\Microsoft\\Zapisovanje CD-jev"

	IDS_NEWFOLDER		"Nova mapa"

	IDS_CPANEL_TITLE            "Wine Control Panel"
	IDS_CPANEL_NAME             "Name"
	IDS_CPANEL_DESCRIPTION      "Description"
}

STRINGTABLE
{
        IDS_LICENSE_CAPTION,            "Licenčna pogodba za Wine"
IDS_LICENSE,
"Wine 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.\n\n\
Wine 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.\n\n\
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(default)
