/*
 * 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
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
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
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 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 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 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 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_PROGRAM_FILESX86        "Programi (x86)"
	IDS_MYPICTURES              "Slike"
	IDS_PROGRAM_FILES_COMMON    "Programi\\Skupne datoteke"
	IDS_PROGRAM_FILES_COMMONX86 "Programi (x86)\\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_CONTACTS                "Kontakti"
	IDS_LINKS                   "Povezave"
	IDS_PHOTO_ALBUMS            "Slike\\Diaprojekcije"
	IDS_PLAYLISTS               "Glasba\\Seznam predvajanja"
	IDS_PUBLIC_DOWNLOADS        "Prenosi"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\Raziskovalec Iger"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Knjižnice"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Zvonenja"
	IDS_SAMPLE_MUSIC            "Glasba\\Primeri glasbe"
	IDS_SAMPLE_PICTURES         "Slike\\Primeri slik"
	IDS_SAMPLE_PLAYLISTS        "Music\\Primeri seznamov predvajanja"
	IDS_SAMPLE_VIDEOS           "Videos\\Primeri video posnetkov"
	IDS_SAVED_GAMES             "Shranjene igre"
	IDS_SAVED_SEARCHES          "Iskanja"
	IDS_USER_PROFILES           "Uporabniki"
	IDS_COMMON_OEM_LINKS        "OEM Povezave"
	IDS_DOCUMENTS               "Dokumenti"
	IDS_DOWNLOADS               "Prenosi"

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