/*
 * 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       "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 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"
