/*
 * WineFile
 * Slovenian Language Support
 *
 * 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
 */

#pragma code_page(65001)

LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&Datoteka"  {
        MENUITEM "&Odpri\tEnter",                ID_ACTIVATE
        MENUITEM "&Premakni ...\tF7",                ID_FILE_MOVE
        MENUITEM "&Kopiraj ...\tF8",                ID_FILE_COPY
        MENUITEM "&Na odložišče ...\tF9",        118
        MENUITEM "&Izbriši\tDel",                ID_FILE_DELETE
        MENUITEM "P&reimenuj ...",                  109
        MENUITEM "&Lastnosti ...\tAlt+Enter",   ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "&Stisni ...",                119
        MENUITEM "Ra&zširi ...",              120
        MENUITEM SEPARATOR
        MENUITEM "Zaž&eni ...",                     ID_EXECUTE
        MENUITEM "&Tiskaj ...",                   102
        MENUITEM "Poveži s programom ...",                103
        MENUITEM SEPARATOR
        MENUITEM "Ustvari &mapo...",        111
        MENUITEM "&Išči ...",                  104
        MENUITEM "Iz&beri datoteke ...",            116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "Iz&hod\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "Iz&hod",                       ID_FILE_EXIT
#endif
    }

    POPUP "Po&goni"  {
        MENUITEM "&Kopiraj disk ...",               201
        MENUITEM "&Označi disk ...",              202
        MENUITEM SEPARATOR
        MENUITEM "&Formatiraj disk ...",             ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "Ustvari &sistemsko disketo ...", -1 /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Poveži se z o&mrežnim pogonom",      ID_CONNECT_NETWORK_DRIVE
        MENUITEM "O&dklopi omrežni pogon",   ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "V skupno rabo kot ...",                 254
        MENUITEM "Odst&rani iz skupne rabe ...",            255
        MENUITEM SEPARATOR
        MENUITEM "Iz&beri pogon ...",            251
    }

    POPUP "&Mape"  {
        MENUITEM "&Naslednji nivo\t+",              301
        MENUITEM "Razširi &drevo\t*",             302
        MENUITEM "Razširi &vse\tStrg+*",         303
        MENUITEM "Skrči d&revo\t-",           304
        MENUITEM SEPARATOR
        MENUITEM "&Označi vsebino",              505
    }

    POPUP "Pog&led"  {
        MENUITEM "&Drevo in mape",         413
        MENUITEM "Samo d&revo",                  411
        MENUITEM "Samo &mape",             412
        MENUITEM SEPARATOR
        MENUITEM "&Ločeno",                      ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Ime",                       ID_VIEW_NAME
        MENUITEM "Vse &podrobnosti datoteke",           ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "&Delne podrobnosti ...",         ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "Razvrsti po &imenu",               ID_VIEW_SORT_NAME
        MENUITEM "Razvrsti po &vrsti",               ID_VIEW_SORT_TYPE
        MENUITEM "Razvrsti po ve&likosti",               ID_VIEW_SORT_SIZE
        MENUITEM "Razvrsti po datu&mu",               ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Filter &...",              ID_VIEW_FILTER
    }

    POPUP "M&ožnosti"  {
        MENUITEM "Potr&ditev ...",            501
        MENUITEM "&Pisava ...",                    ID_SELECT_FONT
        MENUITEM "Uredi &orodno vrstico ...",       512
        MENUITEM SEPARATOR
        MENUITEM "&Orodna vrstica",                    ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "Vrstica po&gonov",                   ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "&Statusna vrstica",                 ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "&Cel zaslon\tCtrl+Shift+S",  ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "Poman&jšaj ob zagonu",            504
        MENUITEM "S&hrani nastavitve ob izhodu",      ID_VIEW_SAVESETTINGS
    }


    POPUP "&Varnost"  {
        MENUITEM "&Dostop ...",                  605
        MENUITEM "&Beleženje ...",                 606
        MENUITEM "&Lastnik ...",                   607
    }

    POPUP "O&kno"  {
        MENUITEM "Novo &okno",                 ID_WINDOW_NEW
        MENUITEM "V kaskado\tCtrl+F5",          ID_WINDOW_CASCADE
        MENUITEM "&Horizontalna razporeditev",          ID_WINDOW_TILE_HORZ
        MENUITEM "&Vertikalna razporeditev\tCtrl+F4",   ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Samodejna razporeditev",       ID_WINDOW_AUTOSORT
#endif
        MENUITEM "Razporedi &simbole",            ID_WINDOW_ARRANGE
        MENUITEM "O&sveži\tF5",                ID_REFRESH
    }

    POPUP "&Pomoč"  {
        MENUITEM "&Teme pomoči\tF1",            ID_HELP
        MENUITEM "&Iskanje po pomoči ...\tF1",         ID_HELP
        MENUITEM "&Uporaba pomoči\tF1",             ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&O Winefile ...",     ID_ABOUT
    }
}


IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Zagon"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Ukaz:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    CONTROL         "Kot &simbol", 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
    DEFPUSHBUTTON   "V redu", 1, 158, 6, 47, 14
    PUSHBUTTON      "Prekliči", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Pomoč", 254, 158, 43, 47, 14
}

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Izbira ciljne poti"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Pot:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "V redu", 1, 158, 6, 47, 14
    PUSHBUTTON      "Prekliči", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Brskaj", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Glede na vrsto datoteke"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Ime:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Vrsta datoteke",-1,7,23,87,56
    CONTROL         "&Mape",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programi",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "&Dokumenti",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Ostalo",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "Pokaži skrite/&sistemske datoteke",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "V redu",IDOK,104,7,50,14
    PUSHBUTTON      "Prekliči",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Lastnosti %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "V redu",IDOK,191,7,50,14
    PUSHBUTTON      "Prekliči",IDCANCEL,191,29,50,14
    LTEXT           "&Ime datoteke:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Polna &pot:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Nazadnje spremenjeno:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Različica:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Avtorske pravice:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Velikost:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Attributi",-1,7,79,158,46
    CONTROL         "Samo za &branje",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "S&krito",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Arhiv",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&Sistemsko",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "S&tisnjeno",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "Informacije o &različici",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Uveljavljam nastavitve pisave"
    IDS_FONT_SEL_ERROR      "Napaka pri izbiranju nove pisave."
}

STRINGTABLE
{
    IDS_WINEFILE            "Winefile"
    IDS_ERROR               "Napaka"
    IDS_ROOT_FS             "root fs"
    IDS_UNIXFS              "unixfs"
    IDS_DESKTOP             "Namizje"
    IDS_SHELL               "Shell"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "Ni (še) na voljo"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "Ime"
    IDS_COL_SIZE            "Velikost"
    IDS_COL_CDATE           "CDate"
    IDS_COL_ADATE           "ADate"
    IDS_COL_MDATE           "MDate"
    IDS_COL_IDX             "Indeks/Inoda"
    IDS_COL_LINKS           "Povezave"
    IDS_COL_ATTR            "Attributi"
    IDS_COL_SEC             "Varnost"

    IDS_FREE_SPACE_FMT      "Prosto: %s od %s"
}

#pragma code_page(default)
