/*
 * WineFile
 * Italian Language Support
 *
 * Copyright 2000 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 * Copyright 2004 Ivan Leo Puoti
 * Copyright 2010 Luca Bennati
 *
 * 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"

/*UTF-8*/
#pragma code_page(65001)

LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&File"  {
        MENUITEM "&Apri\tInvio",                ID_ACTIVATE
        MENUITEM "&Sposta...\tF7",              ID_FILE_MOVE
        MENUITEM "&Copia...\tF8",               ID_FILE_COPY
        MENUITEM "&Negli Appunti...\tF9",       118
        MENUITEM "&Cancella\tDel",              ID_FILE_DELETE
        MENUITEM "Ri&nomina...",                109
        MENUITEM "Propri&età...\tAlt+Invio",    ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "C&omprimi...",                119
        MENUITEM "Dec&omprimi...",              120
        MENUITEM SEPARATOR
        MENUITEM "&Esegui...",                  ID_RUN
        MENUITEM "&Stampa...",                  102
        MENUITEM "Associa...",                  103
        MENUITEM SEPARATOR
        MENUITEM "Cr&ea Directory...",          111
        MENUITEM "Cerc&a...",                   104
        MENUITEM "&Seleziona i file...",        116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "E&sci\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "E&sci",                       ID_FILE_EXIT
#endif
    }

    POPUP "&Disco"  {
        MENUITEM "&Copia Disco...",             201
        MENUITEM "&Etichetta Disco...",         202
        MENUITEM SEPARATOR
        MENUITEM "&Formatta Disco...",          ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "&Crea Disco di Sistema...", -1    /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Connetti & Drive di Rete",    ID_CONNECT_NETWORK_DRIVE
        MENUITEM "&Disconnetti Drive di Rete",  ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "Condividi come...",           254
        MENUITEM "&Rimuovi condivisione...",    255
        MENUITEM SEPARATOR
        MENUITEM "&Seleziona Drive...",         251
    }

    POPUP "&Directory"  {
        MENUITEM "&Livello Sucessivo\t+",       301
        MENUITEM "Espandi &Albero\t*",          302
        MENUITEM "Espandi &tutto\tStrg+*",      303
        MENUITEM "Riduci &Albero\t-",           304
        MENUITEM SEPARATOR
        MENUITEM "&Seleziona unità",            505
    }

    POPUP "&Visualizza"  {
        MENUITEM "A&lbero e Directory",         413
        MENUITEM "So&lo Albero",                411
        MENUITEM "&Solo Directory",             412
        MENUITEM SEPARATOR
        MENUITEM "Di&vidi",                     ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Nome",                       ID_VIEW_NAME
        MENUITEM "&Mostra tutti i dettagli sui file",ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "&Mostra dettagli parziali...",ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "&Ordina per Nome",            ID_VIEW_SORT_NAME
        MENUITEM "&Ordina per Tipo",            ID_VIEW_SORT_TYPE
        MENUITEM "&Ordina per Dimensione",      ID_VIEW_SORT_SIZE
        MENUITEM "&Ordina per Data",            ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Ordina per &...",             ID_VIEW_FILTER
    }

    POPUP "&Opzioni"  {
        MENUITEM "&Confermazione...",           501
        MENUITEM "&Font...",                    ID_SELECT_FONT
        MENUITEM "&Personalizza barra degli strumenti...", 512
        MENUITEM SEPARATOR
        MENUITEM "&Barra degli strumenti",      ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "&Barra dei Drive",            ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "&Barra di stato",             ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "A& tutto schermo\tCtrl+Shift+S",ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Esegui minimizzato",         504
        MENUITEM "&Salva impostazioni all'uscita",511
    }


    POPUP "&Sicurezza"  {
        MENUITEM "&Accessi...",                 605
        MENUITEM "&Logging...",                 606
        MENUITEM "&Proprietario...",            607
    }

    POPUP "&Finestra"  {
        MENUITEM "Nuova &Finestra",             ID_WINDOW_NEW
        MENUITEM "Finestre a cascata\tCtrl+F5", ID_WINDOW_CASCADE
        MENUITEM "Ordina &Orizontalmente",      ID_WINDOW_TILE_HORZ
        MENUITEM "Ordina &Verticlmente\tCtrl+F4",ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Disponi automaticamente",     ID_WINDOW_AUTOSORT
#endif
        MENUITEM "Disponi &Simboli",            ID_WINDOW_ARRANGE
        MENUITEM "&Aggiorna\tF5",               ID_REFRESH
    }

    POPUP "&Guida"  {
        MENUITEM "&Sommario della Guida\tF1",   ID_HELP
        MENUITEM "&Cerca nella Guida...\tF1",   ID_HELP
        MENUITEM "&Uso della Guida\tF1",         ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&Informazioni su Winefile...",ID_ABOUT
    }
}

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Seleziona destinazione"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "&Percorso:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Annulla", 2, 158, 23, 47, 14
    PUSHBUTTON      "&Naviga", 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 "Per tipo di file"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Nome:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Tipo di file",-1,7,23,87,56
    CONTROL         "&Cartelle",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programmi",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "Docu&menti",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Altri files",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "&Mostra files nascosti/di sistema",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Annulla",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 "Propprietà di %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Annulla",IDCANCEL,191,29,50,14
    LTEXT           "Nome del &file:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "&Indirizzo completo:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Ultima modifica:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Versione:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Cop&yright:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Dimensione:",-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         "&Sola lettura",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "&Nascosto",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Archivio",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&Di sistema",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Compresso",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX |  WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Informazioni sulla versione",-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   "Applica le impostazioni dei caratteri"
    IDS_FONT_SEL_ERROR      "Si è verificato un errore durante la selezione del nuovo carattere."
}

STRINGTABLE
{
    IDS_WINEFILE            "Wine File Manager"
    IDS_ERROR               "Errore"
    IDS_ROOT_FS             "root fs"
    IDS_UNIXFS              "unixfs"
    IDS_DESKTOP             "Scrivania"
    IDS_SHELL               "Shell"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "Non ancora implementato"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "Nome"
    IDS_COL_SIZE            "Dimensione"
    IDS_COL_CDATE           "CDate"
    IDS_COL_ADATE           "ADate"
    IDS_COL_MDATE           "MDate"
    IDS_COL_IDX             "Index/Inode"
    IDS_COL_LINKS           "Collegamenti"
    IDS_COL_ATTR            "Attributi"
    IDS_COL_SEC             "Sicurezza"

    IDS_FREE_SPACE_FMT      "liberi %s di %s"
}
