/*
 * 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
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
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
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Seleziona"		FCIDM_SHVIEW_OPEN
	  MENUITEM "&Esplora",		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 "Ca&ncella",		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 "&Riguardo al pannello di controllo...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG 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 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 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 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  "Stato"
    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 file\0*.*\0\0"

	/* shell folder path default values */
	IDS_STARTMENU               "Menu Start"
	IDS_PROGRAMS                "Menu Start\\Programmi"
	IDS_STARTUP                 "Menu Start\\Programmi\\Esecuzione automatica"
	IDS_ADMINTOOLS              "Start Menu\\Programmi\\Strumenti di amministrazione"
	IDS_INTERNET_CACHE          "Impostazioni locali\\File Internet Temporanei"
	IDS_HISTORY                 "Impostazioni locali\\Cronologia"
	IDS_LOCAL_APPDATA           "Impostazioni locali\\Applicazioni"
	IDS_CDBURN_AREA             "Impostazioni locali\\Applicazioni\\Microsoft\\CD Burning"
	IDS_PROGRAM_FILES           "Programmi"
	IDS_PROGRAM_FILESX86        "Programmi (x86)"
	IDS_PROGRAM_FILES_COMMON    "Programmi\\File Comuni"
	IDS_PROGRAM_FILES_COMMONX86 "Programmi (x86)\\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                  "Invia A"
	IDS_DESKTOPDIRECTORY        "Desktop"
	IDS_NETHOOD                 "Reti condivise"
	IDS_TEMPLATES               "Modelli"
	IDS_APPDATA                 "Applicazioni"
	IDS_PRINTHOOD               "Stampanti condivise"
	IDS_COOKIES                 "Cookie"
	IDS_CONTACTS                "Contatti"
	IDS_LINKS                   "Collegamenti"
	IDS_PHOTO_ALBUMS            "Immagini\\Slide Shows"
	IDS_PLAYLISTS               "Musica\\Playlists"
	IDS_PUBLIC_DOWNLOADS        "Download"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\GameExplorer"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Librerie"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Suonerie"
	IDS_SAMPLE_MUSIC            "Musica\\Sample Music"
	IDS_SAMPLE_PICTURES         "Immagini\\Sample Pictures"
	IDS_SAMPLE_PLAYLISTS        "Musica\\Sample Playlists"
	IDS_SAMPLE_VIDEOS           "Video\\Sample Videos"
	IDS_SAVED_GAMES             "Giochi salvati"
	IDS_SAVED_SEARCHES          "Ricerche"
	IDS_USER_PROFILES           "Utenti"
	IDS_COMMON_OEM_LINKS        "Collegamenti OEM"
	IDS_DOCUMENTS               "Documenti"
	IDS_DOWNLOADS               "Download"
	IDS_LOCAL_APPDATA_LOW       "Applicazioni\\LocalLow"

	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"
}
