#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2007 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 implementation.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR
#
# Message ID Range: IUPE0200E - IUPE0299E
#

# Import Library Configuration Wizard
importConfigWizard_title=Importa configurazione di libreria
selectConfigDirWizardPage_title=Specifica directory di importazione
selectConfigDirWizardPage_text=Specificare la directory che contiene la configurazione di libreria da importare.
reviewChangesWizardPage_title=Esamina modifiche libreria
reviewChangesWizardPage_text=Esaminare le modifiche che verranno apportate alla libreria dei metodi corrente.
selectConfigSpecsWizardPage_title=Seleziona specifiche di configurazione
selectConfigSpecsWizardPage_text=Selezionare una o pi\u00f9 specifiche di configurazione da importare.

# Import Method Plug-ins Wizard
importPluginsWizard_title=Importa plug-in di metodo
selectPluginsDirWizardPage_title=Specifica directory di importazione
selectPluginsDirWizardPage_text=Specificare la directory che contiene i plug-in di metodo da importare.
selectPluginsWizardPage_title=Seleziona plug-in di metodo
selectPluginsWizardPage_text=Selezionare uno o pi\u00f9 plug-in di metodo da importare. Se un plug-in selezionato esiste gi\u00e0 nella libreria dei metodi corrente, verificare le differenze tra le versioni.
importPluginsWizard_ERR_Import_plugin=Importazione del plug-in non riuscita

ConfigurationImportService_MSG0=Convalida della configurazione di libreria selezionata in corso...
ConfigurationImportService_MSG1=La directory specificata non contiene una configurazione valida.
ConfigurationImportService_MSG3=Importazione della configurazione di metodo in corso...
ConfigurationImportService_MSG2=Impossibile importare la libreria attualmente aperta all'interno di se stessa.
ImportConfigurationWizard_MSG1=Importazione della configurazione di metodo in corso...
ImportConfigurationWizard_ERR_Import_configuration=Importazione della configurazione non riuscita

FileModifyChecker_Checkout_failed_title=Controllo fallito
FileModifyChecker_Checkout_failed_msg=Alcuni file non sono stati controllati, ripetere l'operazione?

ImportConfigReportPage_title=Importazione del prospetto di configurazione
ImportPluginWizard_readonly=IUPE0201E: La libreria \u00e8 di sola lettura.
ImportPluginWizard_MSG1=Importazione del plug-in di metodo in corso...
ImportPluginWizard_error=Errore
ImportPluginWizard_warn_existing_plugins=IUPE0200E: I seguenti plug-in selezionati esistono gi\u00e0 e se si reimportano gli stessi plug-in, quelli esistenti verranno sovrascritti:\n\n {0} \n\nContinuare?
ImportPluginWizard_confirm_continue=\n\nContinuare?
ImportPluginWizard_warn_circular_plugins=Rilevati riferimenti circolari tra i seguenti plug-in

SelectConfigsToImport_label1=I seguenti elementi verranno importati:
ImportConfigurationWizard_error=Errore
SelectImportConfigurationSource_MSG1=Analisi
SelectConfigSpecsToImportPage_title2=Seleziona specifiche della configurazione da importare
SelectImportPluginSource_not_used=not_used
SelectImportPluginSource_no_path=La directory specificata non esiste.
SelectImportPluginSource_no_dir=Nessuna directory specificata
SelectPluginsToImport_label_plugins=Plug-in disponibili nella directory di importazione:
SelectPluginsToImport_label_author=Autore:
SelectPluginsToImport_label_version=Versione:
SelectPluginsToImport_label_desc=Breve descrizione:
ImportConfigurationWizard_readonly=IUPE0201E: La libreria \u00e8 di sola lettura.
PluginImportingService_MSG0=Convalida dei plug-in selezionati in corso...
PluginImportingService_MSG1=Il percorso specificato non contiene un plug-in di metodo valido.
PluginImportingService_MSG3=Importazione del plug-in di metodo in corso...
PluginImportingService_MSG5=Il plug-in selezionato non pu\u00f2 essere importato. Impossibile trovare il relativo plug-in dipendente ''{0}'' nella libreria dei metodi corrente.
PluginImportingService_MSG6=Il plug-in selezionato non pu\u00f2 essere importato. Impossibile trovare un plug-in dipendente nella libreria dei metodi corrente.
DiffReportViewer_content=Contenuto
DiffReportViewer_in_import=In importazione
SelectPluginsToImport_MSG1=Analisi dei file in corso...
DiffReportLabelProvider_yes=S\u00ec
SelectPluginsToImport_error=Errore
DiffReportViewer_in_lib=Nella libreria
DiffReportViewer_status=Stato
SelectPluginsToImport_libraryPluginExists=Plug-in selezionato trovato nella libreria corrente
SelectPluginsToImport_libraryPluginNotExists=Plug-in selezionato non trovato nella libreria corrente
SelectConfigSpecsToImportPage_libraryConfigSpecExists=Configurazione trovata nella libreria corrente
SelectConfigSpecsToImportPage_configSpecNoSelection=Nessuna specifica della configurazione selezionata.
SelectConfigSpecsToImportPage_configSpecDataLabel=Configurazione selezionata nella directory di importazione
SelectConfigSpecsToImportPage_label_configs=Specifiche della configurazione disponibili nella directory di importazione:
SelectImportConfigurationSource_not_used=not_used
SelectConfigSpecsToImportPage_label_desc=Breve descrizione:
SelectImportConfigurationSource_no_path=Il percorso specificato non esiste.
SelectPluginsToImport_pluginNoSelection=Nessun plug-in selezionato.
SelectImportConfigurationSource_no_dir=Nessuna directory specificata
SelectImportConfigurationSource_plugin_readonly=Il plug-in {0} \u00e8 di sola lettura\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: Il plug-in {0} \u00e8 bloccato\n
SelectImportConfigurationSource_error_not_updatable=Alcuni plug-in della libreria sono bloccati o di sola lettura.\n Sbloccare i plug-in e verificare che i file siano aggiornabili.
SelectPluginsToImport_pluginDataLabel=Plug-in selezionato nella directory di importazione
DiffReportViewer_type=Tipo di contenuto
SelectConfigSpecsToImportPage_libraryConfigSpecNotExists=Configurazione selezionata non trovata nella libreria corrente.
versionMismatch_oldData=IUPE0204E: i file specificati sono stati esportati da una precedente versione ({0}) di {1}. E'' necessario esportare i file utilizzando la versione corrente di {1}.
versionMismatch_oldData_unknown=IUPE0205E: i file specificati sono stati esportati da una precedente versione di {0}. E'' necessario esportare i file utilizzando la versione corrente di {0}.
versionMismatch_oldTool=IUPE0206E: i file specificati sono stati esportati da una versione pi\u00f9 aggiornata ({0}) di {1}. \u00c8 necessario aggiornare {1} per importare i file.  
versionMismatch_oldTool_unknown=IUPE0207E: impossibile aprire il file specificato. \u00c8 necessario aggiornare {0} per importare i file.
optionGroup_text=Importa opzione
checkBaseRadioButton_text=Verifica plug-in di base
ignoreRemoveRadioButton_text=Ignora ed elimina riferimenti non risolti
