/*
 * Program Manager
 *
 * Copyright 1996 Ulrich Schmid
 *
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#define LANGUAGE_ID                  It
#define LANGUAGE_NUMBER              9
#define LANGUAGE_MENU_ITEM           "&Italiano"

/* Menu */

#define MENU_FILE                    "&File"
#define MENU_FILE_NEW                "&Nuovo..."
#define MENU_FILE_OPEN               "&Apri\tEnter"
#define MENU_FILE_MOVE               "&Sposta...\tF7"
#define MENU_FILE_COPY               "&Copia...\tF8"
#define MENU_FILE_DELETE             "E&limina\tEntf"
#define MENU_FILE_ATTRIBUTES         "Pr&oprieta'...\tAlt+Enter"
#define MENU_FILE_EXECUTE            "&Esegui..."
#define MENU_FILE_EXIT               "Esc&i"

#define MENU_OPTIONS                 "&Opzioni"
#define MENU_OPTIONS_AUTO_ARRANGE    "&Disposizione automatica"
#define MENU_OPTIONS_MIN_ON_RUN      "&Riduci a icona in esecuzione"
#define MENU_OPTIONS_SAVE_SETTINGS   "&Salva impostazioni in uscita"

#define MENU_WINDOWS                 "F&inestra"
#define MENU_WINDOWS_OVERLAP         "&Sovrapponi\tShift+F5"
#define MENU_WINDOWS_SIDE_BY_SIDE    "A&ffianca\tShift+F4"
#define MENU_WINDOWS_ARRANGE         "&Disponi icone"

#define MENU_LANGUAGE                "&Lingua"

#define MENU_HELP                    "&?"
#define MENU_HELP_CONTENTS           "&Sommario"
#define MENU_HELP_SEARCH             "&Ricerca..."
#define MENU_HELP_HELP_ON_HELP       "&Aiuto sulla Guida"
#define MENU_HELP_TUTORIAL           "&Tutorial"

#define MENU_INFO                    "&Informazioni su..."
#define MENU_INFO_LICENSE            "&Licenza"
#define MENU_INFO_NO_WARRANTY        "&Garanzia"
#define MENU_INFO_ABOUT_WINE         "&Informazioni su WINE"

/* Dialogs */

#define DIALOG_OK                    "OK"
#define DIALOG_CANCEL                "Annulla"
#define DIALOG_BROWSE                "S&foglia"
#define DIALOG_HELP                  "&?"

#define DIALOG_NEW_CAPTION           "Nuovo elemento"
#define DIALOG_NEW_NEW               "Nuovo"
#define DIALOG_NEW_GROUP             "&Gruppo di programmi"
#define DIALOG_NEW_PROGRAM           "&Programma"

#define DIALOG_MOVE_CAPTION          "Sposta programma"
#define DIALOG_MOVE_PROGRAM          "Sposta programma:"
#define DIALOG_MOVE_FROM_GROUP       "Dal gruppo:"
#define DIALOG_MOVE_TO_GROUP         "&Al gruppo:"

#define DIALOG_COPY_CAPTION          "Copia programma"
#define DIALOG_COPY_PROGRAM          "Copia programma:"
#define DIALOG_COPY_FROM_GROUP       DIALOG_MOVE_FROM_GROUP
#define DIALOG_COPY_TO_GROUP         DIALOG_MOVE_TO_GROUP

#define DIALOG_GROUP_CAPTION         "Proprieta' del gruppo di programmi"
#define DIALOG_GROUP_DESCRIPTION     "&Descrizione:"
#define DIALOG_GROUP_FILE            "&File di gruppo:"

#define DIALOG_PROGRAM_CAPTION       "Proprieta' del programma"
#define DIALOG_PROGRAM_DESCRIPTION   DIALOG_GROUP_DESCRIPTION
#define DIALOG_PROGRAM_COMMAND_LINE  "&Riga di comando:"
#define DIALOG_PROGRAM_DIRECTORY     "Directory di &lavoro:"
#define DIALOG_PROGRAM_HOT_KEY       "&Tasto di scelta rapida"
#define DIALOG_PROGRAM_SYMBOL        "&Avvia ridotto a icona"
#define DIALOG_PROGRAM_OTHER_SYMBOL  "&Cambia icona..."

#define DIALOG_SYMBOL_CAPTION        "Cambia icona"
#define DIALOG_SYMBOL_FILE           "&Nome del file:"
#define DIALOG_SYMBOL_CURRENT        "I&cona corrente:"

#define DIALOG_EXECUTE_CAPTION       "Esegui programma"
#define DIALOG_EXECUTE_COMMAND_LINE  DIALOG_PROGRAM_COMMAND_LINE
#define DIALOG_EXECUTE_SYMBOL        DIALOG_PROGRAM_SYMBOL

/* Strings */

#define STRING_PROGRAM_MANAGER            "Program Manager"
#define STRING_ERROR                      "ERRORE"
#define STRING_WARNING                    "ATTENZONE"
#define STRING_INFO                       "Informazione"
#define STRING_DELETE                     "Elimina"
#define STRING_DELETE_GROUP_s             "Eliminare il gruppo `%s'?"
#define STRING_DELETE_PROGRAM_s           "Eliminare `%s'?"
#define STRING_NOT_IMPLEMENTED            "Non ancora implementato"
#define STRING_FILE_READ_ERROR_s          "Errore di lettura `%s'"
#define STRING_FILE_WRITE_ERROR_s         "Errore di scrittura `%s'"

#define STRING_GRPFILE_READ_ERROR_s       "\
Il file di gruppo `%s' non puo' essere aperto.\n\
Provare ad aprirlo in futuro?"

#define STRING_OUT_OF_MEMORY              "Memoria esaurita"
#define STRING_WINHELP_ERROR              "Guida non disponibile"
#define STRING_UNKNOWN_FEATURE_s          "Funzione sconosciuta nel file %s"
#define STRING_FILE_NOT_OVERWRITTEN_s     "Il file `%s' esiste. Sovrascriverlo."
#define STRING_SAVE_GROUP_AS_s            "Salvare il gruppo come `%s' per non sovrascrivere i file originali"

#define STRING_NO_HOT_KEY                 "Nessuno"

#define STRING_ALL_FILES                  "Tutti i file (*.*)"
#define STRING_PROGRAMS                   "Programmi"
#define STRING_LIBRARIES_DLL              "Librerie (*.dll)"
#define STRING_SYMBOL_FILES               "File icona"
#define STRING_SYMBOLS_ICO                "Icone (*.ico)"

#include "Xx.rc"
