# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# 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
ImportNoSynLib_ConvertMsg=Si desidera convertire la libreria importata in una libreria sincronizzata automaticamente?
ImportSynLibToNoSynLib_Error=L'importazione dei dati della libreria da una libreria sincronizzata automaticamente an una libreria con richiesta di sincronizzazione non \u00e8 supportata.
ImportNoSynLibToSynLib_Error=L'importazione dei dati della libreria da una libreria richiesta sincronizzata a una libreria sincronizzata automaticamente non \u00e8 supportata.
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}. \u00c8 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}. \u00c8 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.
ConfigurationImportService_handleToolVersion_error=IUPE0208E: Impossibile aggiornare i plug-in.
optionGroup_text=Importa opzione
checkBaseRadioButton_text=Verifica plug-in di base
ignoreRemoveRadioButton_text=Ignora ed elimina riferimenti non risolti
