/*
 * 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"
	IDS_SHV_COL_DOCS	"Dokumenti"
	IDS_SHV_COL_STATUS	"Status"
	IDS_SHV_COL_LOCATION	"Lokacija"
	IDS_SHV_COL_MODEL	"Model"

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