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