/*
 * Copyright 1998 Juergen Schmied
 * Copyright 2003-2004 Puoti
 * Copyright 2006 Antonio Codazzi
 * 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 "shresdef.h"

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

LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "Icone &Grandi",	FCIDM_SHVIEW_BIGICON
	MENUITEM "Icone &Piccole",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Dettagli",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Visualizza"
	  BEGIN
	    MENUITEM "Icone &Grandi",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "Icone &Piccole",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Dettagli",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Disponi &Icone"
	  BEGIN
	    MENUITEM "Per &Nome",	0x30	/* column 0 */
	    MENUITEM "Per &Tipo",	0x32	/* column 2 */
	    MENUITEM "Per Di&mensione",	0x31	/* ... */
	    MENUITEM "Per &Data",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "&Disponi Automaticamente",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Allinea Icone",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Aggiorna",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Incolla",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Crea Collegamento",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Nuovo"
	  BEGIN
	    MENUITEM "Nuova &Cartella",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Nuovo Co&llegamento",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Proprietà",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Select"		FCIDM_SHVIEW_OPEN
	  MENUITEM "E&splora",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Apri",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "&Taglia",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Copia",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Crea Co&llegamento",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "&Cancella",		FCIDM_SHVIEW_DELETE
	  MENUITEM "&Rinomina",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Proprietà",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Esci", IDM_CPANEL_EXIT
    END

    POPUP "&Vista"
    BEGIN
        MENUITEM "Icone &Grandi", FCIDM_SHVIEW_BIGICON
        MENUITEM "Icone &Piccole", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Dettagli", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Aiuto"
    BEGIN
        MENUITEM "&Sul Pannello di Controllo...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Sfoglia cartelle"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Annulla", 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 LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Sfoglia cartelle"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Cartella:", 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 "&Nuova cartella", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Annulla", 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 "Messaggio"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Sì", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Sì a &tutti", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&No", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Annulla", 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 LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Informazioni su %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "&Licenza di Wine...", 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, 40, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 40, 22, 170, 10
 LTEXT "In esecuzione su %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine è disponibile grazie a:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 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 "Digitare il nome del programma, della cartella, del documento o della risorsa internet, e Wine la aprirà.", 12289, 36, 11, 182, 18
 LTEXT "&Apri:", 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 "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Annulla", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "E&splora...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
	/*	columns in the shellview	*/
	IDS_SHV_COLUMN1		"File"
	IDS_SHV_COLUMN2		"Dimensione"
	IDS_SHV_COLUMN3		"Tipo"
	IDS_SHV_COLUMN4		"Modificato"
	IDS_SHV_COLUMN5		"Attributi"
	IDS_SHV_COLUMN6		"Spazio"
	IDS_SHV_COLUMN7		"Spazio disponibile"
	IDS_SHV_COLUMN8		"Nome"
	IDS_SHV_COLUMN9		"Commenti"
	IDS_SHV_COLUMN10	"Proprietario"
	IDS_SHV_COLUMN11	"Gruppo"
	IDS_SHV_COLUMN_DELFROM	"Locazione originale"
	IDS_SHV_COLUMN_DELDATE	"Data di eliminazione"
    IDS_SHV_COL_DOCS    "Documenti"
    IDS_SHV_COL_STATUS  "Status"
    IDS_SHV_COL_LOCATION    "Locazione"
    IDS_SHV_COL_MODEL   "Modello"

	/* special folder */
	IDS_DESKTOP		"Desktop"
	IDS_MYCOMPUTER		"Risorse del Computer"
	IDS_RECYCLEBIN_FOLDER_NAME		"Cestino"
	IDS_CONTROLPANEL	"Pannello di Controllo"

	/*  context menus  */
	IDS_VIEW_LARGE		"Icone &Grandi"
	IDS_VIEW_SMALL		"Icone &Piccole"
	IDS_VIEW_LIST		"&Lista"
	IDS_VIEW_DETAILS	"&Dettagli"
	IDS_SELECT		"Selezione"
	IDS_OPEN		"Apri"

	IDS_CREATEFOLDER_DENIED "Impossibile creare la cartella: Accesso negato."
	IDS_CREATEFOLDER_CAPTION "Errore durante la creazione della cartella"
	IDS_DELETEITEM_CAPTION "Confermare la cancellazione del file"
	IDS_DELETEFOLDER_CAPTION "Confermare la cancellazione della cartella"
	IDS_DELETEITEM_TEXT "Sei sicuro di voler cancellare '%1'?"
	IDS_DELETEMULTIPLE_TEXT "Sei sicuro di voler cancellare questi %1 elementi?"
	IDS_DELETESELECTED_TEXT "Sei sicuro di voler cancellare gli oggetti selezionati?"
	IDS_TRASHITEM_TEXT "Sei sicuro di voler mandare '%1' Nel Cestino?"
	IDS_TRASHFOLDER_TEXT "Sei sicuro di voler mandare '%1' e tutto il suo contenuto nel Cestino?"
	IDS_TRASHMULTIPLE_TEXT "Sei sicuro di voler mandare qeusti %1 oggetti nel Cestino?"
	IDS_CANTTRASH_TEXT "L'oggetto '%1' non può essere mandato al Cestino. Vuoi cancellarlo direttamente?"
	IDS_OVERWRITEFILE_TEXT "Questa cartella contiene già un file chiamato '%1'.\n\nVuoi sostituirlo?"
	IDS_OVERWRITEFILE_CAPTION "Confermare la sovrascrizione del File"
	IDS_OVERWRITEFOLDER_TEXT "Questa cartella contiene già una cartella chiamata '%1'.\n\n"\
	    "Se i file nella cartella di destinazione hanno gli stessi nomi dei file nella\n"\
	    "cartella selezionata, saranno sostituiti. Vuoi spostare o copiare\n"\
	    "la cartella?"

	/* message box strings */
       IDS_RESTART_TITLE       "Riavvia"
       IDS_RESTART_PROMPT      "Vuoi simulare un riavvio di Windows?"
       IDS_SHUTDOWN_TITLE      "Termina sessione"
       IDS_SHUTDOWN_PROMPT     "Vuoi terminare la sessione di Wine?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Impossibile mostrare la finestra Esegui File (errore interno)"
        IDS_RUNDLG_BROWSE_ERROR    "Impossibile mostrare la finestra Sfoglia (errore interno)"
        IDS_RUNDLG_BROWSE_CAPTION  "Sfoglia"
        IDS_RUNDLG_BROWSE_FILTER   "File eseguibili\0*.exe\0Tutti i files\0*.*\0\0"

	/* shell folder path default values */
	IDS_STARTMENU               "Start Menu"
	IDS_PROGRAMS                "Start Menu\\Programmi"
	IDS_STARTUP                 "Start Menu\\Programmi\\StartUp"
	IDS_ADMINTOOLS              "Start Menu\\Programmi\\Strumenti di Amministrazione"
	IDS_INTERNET_CACHE          "Settaggi Locali\\Temporary Internet Files"
	IDS_HISTORY                 "Settaggi Locali\\Cronologia"
	IDS_LOCAL_APPDATA           "Settaggi Locali\\Applicazioni"
	IDS_CDBURN_AREA             "Settaggi Locali\\Applicazioni\\Microsoft\\CD Burning"
	IDS_PROGRAM_FILES           "Programmi"
	IDS_PROGRAM_FILES_COMMON    "Programmi\\File Comuni"
	IDS_COMMON_DOCUMENTS        "Documenti"
	IDS_COMMON_MUSIC            "Documenti\\Musica"
	IDS_COMMON_PICTURES         "Documenti\\Immagini"
	IDS_COMMON_VIDEO            "Documenti\\Video"
	IDS_PERSONAL                "Miei Documenti"
	IDS_MYMUSIC                 "Musica"
	IDS_MYVIDEO                 "Video"
	IDS_MYPICTURES              "Immagini"
	IDS_FAVORITES               "Favoriti"
	IDS_RECENT                  "Recenti"
	IDS_SENDTO                  "SendTo"
	IDS_DESKTOPDIRECTORY        "Desktop"
	IDS_NETHOOD                 "NetHood"
	IDS_TEMPLATES               "Modelli"
	IDS_APPDATA                 "Applicazioni"
	IDS_PRINTHOOD               "PrintHood"
	IDS_COOKIES                 "Cookies"

	IDS_NEWFOLDER		"Nuova cartella"

	IDS_CPANEL_TITLE            "Pannello di Controllo di Wine"
	IDS_CPANEL_NAME             "Nome"
	IDS_CPANEL_DESCRIPTION      "Descrizione"

        IDS_SHLEXEC_NOASSOC         "Non c'è un programma Windows configurato per aprire questo tipo di file."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Licenza di Wine"
IDS_LICENSE,
"Questo programma è software libero; puoi redistribuirlo e/o \
modificarlo sotto i termini della GNU Lesser General Public \
License come pubblicata dalla Free Software Foundation; sia la \
versione 2.1 della LGPL, sia (a tua scelta) una versione più nuova.\n\
Questo programma è distribuito nella speranza che sia utile, \
ma SENZA ALCUNA GARANZIA; pure senza la garanzia implicita di \
COMMERCIABILTÀ o ADEGUATEZZA PER UN PARTICOLARE SCOPO. Leggere la GNU \
Lesser General Public License per più informazioni.\n\
Dovresti aver ricevuto una copia della GNU Lesser General Public \
License insieme a questo programma; altrimenti, scrivi alla Free Software \
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA"
}
