/*
 * Regedit resources (Italian Language Support)
 *
 * Copyright 2002 Robert Dickenson
 * Copyright 2003-2004 Ivan Leo 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 "resource.h"

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

LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "&Registro"
    BEGIN
        MENUITEM "&Importa...",    ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "&Esporta...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "&Connetti a Registro in rete", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "&Disconnetti da Registro di rete", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "&Stampa\tCtrl+P",              ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "E&sci",                       ID_REGISTRY_EXIT
    END
    POPUP "&Modifica"
    BEGIN
        MENUITEM "&Modifica",                     ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "&Nuovo"
        BEGIN
            MENUITEM "Chiave",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Valore &stringa",         ID_EDIT_NEW_STRINGVALUE
            MENUITEM "Valore &binario",         ID_EDIT_NEW_BINARYVALUE
            MENUITEM "Valore &DWORD",           ID_EDIT_NEW_DWORDVALUE
            MENUITEM "Valore &multistringa",     ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Elimina\tDel",                ID_EDIT_DELETE
        MENUITEM "&Rinomina\tF2"                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Copia nome chiave",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Trova\tCtrl+F",               ID_EDIT_FIND, GRAYED
        MENUITEM "&Trova Successivo\tF3",              ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "&Visualizza"
    BEGIN
        MENUITEM "Barra di &Stato",                 ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "Di&vidi",                      ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Aggiorna\tF5",                ID_VIEW_REFRESH
    END
    POPUP "&Preferiti"
    BEGIN
        MENUITEM "&Aggiungi ai Preferiti...",          ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "&Rimuovi dai Preferiti...",           ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "&Aiuto"
    BEGIN
        MENUITEM "&Sommario della Guida",                ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "&Informazioni sull'editor del Registro",      ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU DISCARDABLE
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "&Modifica",                     ID_EDIT_MODIFY
	MENUITEM "Modifica dati binari",          ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "&Elimina\tDel",                ID_EDIT_DELETE
	MENUITEM "&Rinomina",                     ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "&Nuovo"
        BEGIN
            MENUITEM "&Chiave",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "Valore &stringa",         ID_EDIT_NEW_STRINGVALUE
            MENUITEM "Valore &binario",         ID_EDIT_NEW_BINARYVALUE
            MENUITEM "Valore &DWORD",           ID_EDIT_NEW_DWORDVALUE
            MENUITEM "Valore &multistringa",     ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "&Elimina\tDel",                ID_EDIT_DELETE
        MENUITEM "&Rinomina\tF2"                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "&Esporta...",                  ID_EDIT_EXPORT
        MENUITEM "&Copia nome chiave",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "&Trova\tCtrl+F",               ID_EDIT_FIND, GRAYED
  END
END

/*
 * Dialog
 */

IDD_EXPORT_TEMPLATE DIALOG DISCARDABLE  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 8, "MS Shell Dlg"
BEGIN
    GROUPBOX "Esporta registro", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "&Tutti", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "Ramo s&elezionato:", IDC_EXPORT_SELECTED, 12, 30, 70, 12
    EDITTEXT IDC_EXPORT_PATH, 82, 30, 184, 12
END

IDD_FIND DIALOG DISCARDABLE  22, 17, 210, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Trova"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT           "Trova:",IDC_STATIC,5,7,119,8
EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
LTEXT           "Trova in:",IDC_STATIC,5, 22, 119, 8
CHECKBOX        "Chiavi", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
CHECKBOX        "Nome (campo)", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
CHECKBOX        "Dati (campo)", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
CHECKBOX        "Solo stringhe intere", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
DEFPUSHBUTTON   "Trova",IDOK,175,5,30,11,WS_GROUP
PUSHBUTTON      "Chiudi",IDCANCEL,175,22,30,11, WS_GROUP
END

IDD_ADDFAVORITE DIALOG DISCARDABLE  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Aggiungi Favorito"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT           "Nome:",IDC_STATIC,5,5,119,8
EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
DEFPUSHBUTTON   "OK",IDOK,140,40,30,11,WS_GROUP
PUSHBUTTON      "Cancella",IDCANCEL,175,40,30,11, WS_GROUP
END

IDD_DELFAVORITE DIALOG DISCARDABLE  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Rimuovi Favorito"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT           "Nome:",IDC_STATIC,5,5,119,8
LISTBOX         IDC_NAME_LIST,5,15,200,52, WS_BORDER | WS_TABSTOP | LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL
DEFPUSHBUTTON   "OK",IDOK,140,73,30,11,WS_GROUP
PUSHBUTTON      "Annulla",IDCANCEL,175,73,30,11, WS_GROUP
END

IDD_EDIT_STRING DIALOG DISCARDABLE  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Edita Stringa"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome del valore:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "Dati del valore:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,140,60,30,11,WS_GROUP
    PUSHBUTTON   "Annulla",IDCANCEL,175,60,30,11,WS_GROUP
END

IDD_EDIT_DWORD DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Edita DWORD"
FONT 8, "MS Shell Dlg"
BEGIN
   LTEXT           "Nome del valore:",IDC_STATIC,5,5,119,8
   EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
   LTEXT           "Dati del valore:",IDC_STATIC,5,30,90,8
   EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
   GROUPBOX        "Base", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
   AUTORADIOBUTTON "Esadecimale", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
   AUTORADIOBUTTON "Decimale", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
   DEFPUSHBUTTON   "OK",IDOK,140,80,30,11,WS_GROUP
   PUSHBUTTON   "Annulla",IDCANCEL,175,80,30,11,WS_GROUP
END

IDD_EDIT_BINARY DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "Modifica Binario"
FONT 8, "MS Shell Dlg"
BEGIN
   LTEXT           "Nome del valore:",IDC_STATIC,5,5,119,8
   EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
   LTEXT           "Dati del valore:",IDC_STATIC,5,30,90,8
   CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,4,40,160,40
   DEFPUSHBUTTON   "OK",IDOK,140,80,30,11,WS_GROUP
   PUSHBUTTON   "Annulla",IDCANCEL,175,80,30,11,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG DISCARDABLE  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "Modifica Multistringa"
FONT 8, "MS Shell Dlg"
BEGIN
    LTEXT           "Nome del valore:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "Dati del valore:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,112, WS_BORDER | WS_TABSTOP | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
    DEFPUSHBUTTON   "OK",IDOK,120,156,40,15,WS_GROUP
    PUSHBUTTON   "Annulla",IDCANCEL,165,156,40,15,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE DISCARDABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "Nome"
    IDS_LIST_COLUMN_TYPE    "Tipo"
    IDS_LIST_COLUMN_DATA    "Dati"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "Editor del Registro"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "Contiene i comandi per lavorare su tutto il Registro"
    ID_EDIT_MENU            "Contiene i comandi per modificare valori o chiavi"
    ID_VIEW_MENU            "Contiene i comandi per personalizzare la finestra del Registro"
    ID_FAVORITES_MENU       "Contiene i comandi per accedere alle chiavi usate frequentemente"
    ID_HELP_MENU            "Contiene i comandi per visualizzare la Guida e informazioni sull'editor del Registro"
    ID_EDIT_NEW_MENU        "Contiene i comandi per creare nuove chiavi o valori"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "Modifica i dati del valore"
    ID_EDIT_NEW_KEY         "Aggiunge una nuova chiave"
    ID_EDIT_NEW_STRINGVALUE "Aggiunge un nuovo valore stringa"
    ID_EDIT_NEW_BINARYVALUE "Aggiunge un nuovo valore binario"
    ID_EDIT_NEW_DWORDVALUE  "Aggiunge un nuovo valore a doppia parola"
	ID_EDIT_NEW_MULTI_STRINGVALUE "Aggiunge un nuovo valore multistringa"
    ID_REGISTRY_IMPORTREGISTRYFILE "Importa un file di testo nel Registro"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "Esporta tutto o parte del Registro in un file di testo"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "Si connette al Registro di un computer remoto"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "Si disconnette dal Registro di un computer remoto"
    ID_REGISTRY_PRINT       "Stampa tutto o parte del Registro"
/*    ID_HELP_HELPTOPICS      "Apre l'aiuto dell'Editor del Registro" */
    ID_HELP_ABOUT           "Visualizza informazioni sul programma, numero di versione e copyright"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "Esce dall'editor del Registro"
    ID_FAVORITES_ADDTOFAVORITES "Aggiunge una chiave alla lista dei Preferiti"
    ID_FAVORITES_REMOVEFAVORITE "Rimuove una o più chiavi dalla lista dei preferiti"
    ID_VIEW_STATUSBAR       "Mostra o nasconde la barra di stato"
    ID_VIEW_SPLIT           "Cambia la posizione del separatore tra due pannelli"
    ID_VIEW_REFRESH         "Aggiorna la finestra"
    ID_EDIT_DELETE          "Elimina la selezione"
    ID_EDIT_RENAME          "Rinomina la selezione"
    ID_EDIT_COPYKEYNAME     "Copia il nome della chiave selezionata negli appunti"
    ID_EDIT_FIND            "Trova una stringa di testo in una chiave, un valore o in dei dati"
    ID_EDIT_FINDNEXT        "Trova la volta successiva il testo specificato nella ricerca precedente"
    ID_EDIT_EXPORT          "Esporta il ramo selezionato del registro in un file di testo"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR		    "Errore"
    IDS_BAD_KEY		    "Impossibile trovare la chiave '%s'"
    IDS_BAD_VALUE           "Impossibile trovare il valore '%s'"
    IDS_UNSUPPORTED_TYPE    "Impossibile modificare valori di questo tipo (%u)"
    IDS_TOO_BIG_VALUE       "Valore troppo grande (%u)"
    IDS_DELETE_BOX_TITLE    "Confermare Eliminazione del Valore"
    IDS_DELETE_BOX_TEXT     "Sei sicuro di volere eliminare il valore '%s'?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "Sei sicuro di volere eliminare questi valori?"
    IDS_NEWKEY              "Nuova Chiave #%d"
    IDS_NEWVALUE            "Nuovo Valore #%d"
    IDS_NOTFOUND            "Stringa di ricerca '%s' non trovata"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "Importa file di registro"
    IDS_FILEDIALOG_EXPORT_TITLE   "Esporta file di registro"
    IDS_FILEDIALOG_FILTER         "File di registro\0*.reg\0File di registro Win9x/NT4 (REGEDIT4)\0*.reg\0Tutti i file (*.*)\0*.*\0\0"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "Il mio computer"
    IDS_REGISTRY_DEFAULT_VALUE       "(Default)"
    IDS_REGISTRY_VALUE_NOT_SET       "(valore non immesso)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(impossibile visualizzare valore)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(%d sconosciuto)"
END

/*****************************************************************/

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

/*****************************************************************/
