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

#include "resource.h"

#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_RUN
        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_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"
}
