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

#include "shresdef.h"

#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 Nadzorna Plošča"
	IDS_CPANEL_NAME             "Ime"
	IDS_CPANEL_DESCRIPTION      "Opis"

        IDS_SHLEXEC_NOASSOC         "Noben Okenski program ni nastavljen, da bi odpiral ta tip datotek."
}

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."
}
