###############################################################################
# Copyright (c) 2001, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################

title=Preferiti

# Navigator
FAVORITES_MAIN_NODE=Preferiti principali
FAVORITES_WSIL_FOLDER_NODE=WSIL preferiti
FAVORITES_WSDL_SERVICE_FOLDER_NODE=Servizi WSDL preferiti
FAVORITES_UDDI_SERVICE_FOLDER_NODE=Servizi UDDI preferiti
FAVORITES_UDDI_BUSINESSES_FOLDER_NODE=Business UDDI preferiti
FAVORITES_UDDI_SERVICE_INTERFACES_FOLDER_NODE=Interfacce di servizio UDDI preferite
FAVORITES_UDDI_REGISTRIES_FOLDER_NODE=Registri UDDI preferiti

# Form
FORM_LABEL_FAVORITE_WSIL=WSIL preferiti
FORM_LABEL_FAVORITE_WSDL=WSDL preferiti
FORM_LABEL_FAVORITE_UDDI_REGISTRY=Registri UDDI preferiti
FORM_LABEL_FAVORITE_UDDI_SERVICE=Servizi UDDI preferiti
FORM_LABEL_FAVORITE_UDDI_BUSINESS=Entit\u00e0 business UDDI preferite
FORM_LABEL_FAVORITE_UDDI_SERVICE_INTERFACE=Interfacce di servizio UDDI preferite
FORM_LABEL_REMOVE=Rimuovi
FORM_LABEL_IMPORT_TO_WSIL_PERSPECTIVE=Aggiungi alla pagina WSIL
FORM_LABEL_IMPORT_TO_UDDI_PERSPECTIVE=Aggiungi alla pagina UDDI
FORM_LABEL_IMPORT_TO_WSDL_PERSPECTIVE=Aggiungi alla pagina WSDL
FORM_LABEL_URL=URL
FORM_LABEL_ITEM_NUMBER=Elemento n.
FORM_LABEL_NAME=Nome
FORM_LABEL_INQUIRY_URL=URL di richiesta
FORM_LABEL_PUBLISH_URL=URL di pubblicazione
FORM_LABEL_REGISTRY_NAME=Nome registro
FORM_LABEL_BUSINESS_NAME=Nome business
FORM_LABEL_BUSINESS_KEY=Chiave business
FORM_LABEL_SERVICE_NAME=Nome servizio
FORM_LABEL_SERVICE_KEY=Chiave servizio
FORM_LABEL_SERVICE_INTERFACE_NAME=Nome interfaccia di servizio
FORM_LABEL_SERVICE_INTERFACE_KEY=Chiave interfaccia di servizio
FORM_LABEL_REGISTRY_URL=<a href="%1" target="_blank">Fare clic qui</a> per visualizzare un ID utente e una password per questo registro.
FORM_LABEL_USER_DEFINED_CATEGORY_DATA_FILES=File di dati per le categorie definite dall'utente
MSG_ERROR_NOTHING_SELECTED=IWAB0315E Selezionare almeno un elemento.

# ListFavoriteWSILAction
ALT_LIST_FAVORITE_WSIL=Visualizza WSIL preferiti
FORM_LABEL_LIST_FAVORITE_WSIL_DESC=Selezionare un insieme di collegamenti WSIL preferiti e premere <strong>Aggiungi alla pagina WSIL</strong> per aprire i collegamenti nel pannello di selezione WSIL. Premere <strong>Rimuovi</strong> per rimuovere le selezioni.

# ListFavoriteWSDLServiceAction
ALT_LIST_FAVORITE_WSDL_SERVICE=Visualizza servizi WSDL preferiti
FORM_LABEL_LIST_FAVORITE_WSDL_SERVICE_DESC=Selezionare un insieme di servizi WSDL preferiti e premere <strong>Rimuovi</strong> per rimuovere i servizi.

# ListFavoriteUDDIServiceAction
ALT_LIST_FAVORITE_UDDI_SERVICE=Visualizza servizi UDDI preferiti
FORM_LABEL_LIST_FAVORITE_UDDI_SERVICE_DESC=Selezionare un insieme di servizi UDDI preferiti e premere <strong>Aggiungi alla pagina UDDI</strong> per aprire i servizi nel pannello di selezione UDDI. Premere <strong>Rimuovi</strong> per rimuovere le selezioni.

# ListFavoriteUDDIBusinessAction
ALT_LIST_FAVORITE_UDDI_BUSINESS=Visualizza business UDDI preferiti
FORM_LABEL_LIST_FAVORITE_UDDI_BUSINESS_DESC=Selezionare un insieme di business UDDI preferiti e premere <strong>Aggiungi alla pagina UDDI</strong> per aprire i business nel pannello di selezione UDDI. Premere <strong>Rimuovi</strong> per rimuovere le selezioni.

# ListFavoriteUDDIRegistryAction
ALT_LIST_FAVORITE_UDDI_REGISTRY=Visualizza registri UDDI preferiti
FORM_LABEL_LIST_FAVORITE_UDDI_REGISTRY_DESC=Selezionare un insieme di registri UDDI preferiti e premere <strong>Aggiungi alla pagina UDDI</strong> per aprire i registri nel pannello di selezione UDDI. Premere <strong>Rimuovi</strong> per rimuovere le selezioni.

# ListFavoriteUDDIServiceInterfaceAction
ALT_LIST_FAVORITE_UDDI_SERVICE_INTERFACE=Visualizza interfacce di servizio UDDI preferite
FORM_LABEL_LIST_FAVORITE_UDDI_SERVICE_INTERFACE_DESC=Selezionare un insieme di interfacce di servizio UDDI preferite e premere <strong>Aggiungi alla pagina UDDI</strong> per aprire le interfacce nel pannello di selezione UDDI. Premere <strong>Rimuovi</strong> per rimuovere le selezioni.

# FavoritesWSILDetailsAction
ALT_FAVORITES_WSIL_DETAILS=Dettagli WSIL preferiti

# FavoritesWSDLDetailsAction
ALT_FAVORITES_WSDL_DETAILS=Dettagli WSDL preferiti

# FavoritesUDDIRegistryDetailsAction
ALT_FAVORITES_UDDI_REGISTRY_DETAILS=Dettagli registri UDDI preferiti

# FavoritesUDDIBusinessDetailsAction
ALT_FAVORITES_UDDI_BUSINESS_DETAILS=Dettagli business UDDI preferiti

# FavoritesUDDIServiceDetailsAction
ALT_FAVORITES_UDDI_SERVICE_DETAILS=Dettagli servizi UDDI preferiti

# FavoritesUDDIServiceInterfaceDetailsAction
ALT_FAVORITES_UDDI_SERVICE_INTERFACE_DETAILS=Dettagli interfacce di servizio UDDI preferite

# AddWSILToWSILPerspectiveAction
ALT_ADD_WSIL_TO_WSIL_PERSPECTIVE=Aggiungi alla pagina WSIL
MSG_ERROR_WSIL_ALREADY_OPENED=IWAB0316E %1 \u00e8 gi\u00e0 aperto nella pagina WSIL.
MSG_INFO_ADD_WSIL_TO_WSIL_PERSPECTIVE_SUCCESSFUL=IWAB0317I %1 viene aggiunto alla pagina WSIL.
MSG_ERROR_ADD_WSIL_TO_WSIL_PERSPECTIVE=IWAB0318E \u00c8 possibile che WSIL %1 non sia stato caricato.

# AddToUDDIPerspectiveAction
ALT_ADD_TO_UDDI_PERSPECTIVE=Aggiungi alla pagina UDDI
MSG_ERROR_ADD_TO_UDDI_PERSPECTIVE=IWAB0320E \u00c8 possibile che %1 non sia stato trovato nel registro.
MSG_INFO_ADD_TO_UDDI_PERSPECTIVE_SUCCESSFUL=IWAB0321I %1 viene aggiunto alla pagina UDDI.

# FavoritesAddToWSDLPerspectiveAction
ALT_ADD_WSDL_TO_WSDL_PERSPECTIVE=Aggiungi alla pagina WSDL
MSG_INFO_ADD_WSDL_TO_WSDL_PERSPECTIVE_SUCCESSFUL=IWAB0369I %1 viene aggiunto alla pagina WSDL.
MSG_ERROR_ADD_WSDL_TO_WSDL_PERSPECTIVE=IWAB0370E \u00c8 possibile che WSDL %1 non sia stato caricato.

# RemoveFavoriteAction
ALT_REMOVE_FAVORITE=Rimuovi preferiti
MSG_CONFIRM_REMOVE_NODE=%1 non \u00e8 pi\u00f9 risolvibile.  Cancellarlo?

# FavoritesRestoreDefaultFavoritesAction
ALT_RESTORE_DEFAULT_FAVORITES=Ripristina preferiti predefiniti
MSG_CONFIRM_RESTORE_DEFAULT_FAVORITES=Questa operazione sovrascriver\u00e0 i preferiti correnti.  Continuare?
MSG_ERROR_OPEN_FAVORITES_BACKUP=IWAB0134E Impossibile caricare i preferiti predefiniti.
MSG_INFO_FAVORITES_RESTORED_TO_DEFAULT=IWAB0322I I preferiti predefiniti vengono ripristinati.
MSG_ERROR_SAVE_FAVORITES_WSIL=IWAB0186E Impossibile salvare i preferiti su %1.

# Frame titles
FRAME_TITLE_NAVIGATOR_CONTAINER=Contenitore Selezione
FRAME_TITLE_NAVIGATOR_TOOLBAR=Barra degli strumenti Selezione
FRAME_TITLE_NAVIGATOR_CONTENT=Contenuto Selezione
FRAME_TITLE_ACTIONS_CONTAINER=Contenitore azioni
FRAME_TITLE_PROPERTIES_CONTAINER=Contenitore propriet\u00e0
FRAME_TITLE_PROPERTIES_CONTENT=Contenuto propriet\u00e0
FRAME_TITLE_PROPERTIES_TOOLBAR=Barra degli strumenti propriet\u00e0
FRAME_TITLE_STATUS_CONTAINER=Contenitore stato
FRAME_TITLE_STATUS_CONTENT=Contenuto stato
FRAME_TITLE_STATUS_TOOLBAR=Barra degli strumenti stato

# Form titles
FORM_TITLE_UDDI_BUSINESS_DETAILS=Modulo dettagli business UDDI
FORM_TITLE_UDDI_REGISTRY_DETAILS=Modulo dettagli registro UDDI
FORM_TITLE_UDDI_SERVICE_DETAILS=Modulo dettagli servizio UDDI
FORM_TITLE_UDDI_SERVICE_INTERFACE_DETAILS=Modulo dettagli interfaccia di servizio UDDI
FORM_TITLE_WSDL_DETAILS=Modulo dettagli WSDL
FORM_TITLE_WSIL_DETAILS=Modulo dettagli WSIL

# View titles
VIEW_TITLE_UDDI_BUSINESS_LIST=Vista Elenco business UDDI
VIEW_TITLE_UDDI_REGISTRY_LIST=Vista Elenco registri UDDI
VIEW_TITLE_UDDI_SERVICE_INTERFACE_LIST=Vista Elenco interfacce di servizio UDDI
VIEW_TITLE_UDDI_SERVICE_LIST=Vista Elenco servizi UDDI
VIEW_TITLE_WSDL_SERVICE_LIST=Vista Elenco servizi WSDL
VIEW_TITLE_WSIL_LIST=Vista Elenco collegamenti WSIL
