/*
 * 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        "&NESSUNA 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       "Execute Program"
#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 files (*.*)"
#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"
