# 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:
#

# Export XML Wizard
exportXMLWizard_title=Esporta XML

# Select Export Type Wizard Page
selectExportTypePage_desc=Selezionare il tipo di contenuto della libreria del metodo da esportare.
exportLibraryRadioButton_text=Esporta l'intera libreria del metodo
exportPluginsRadioButton_text=Esporta uno o pi\u00f9 plug-in del metodo
exportConfigsRadioButton_text=Esporta una configurazione metodo

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Specifica il file di esportazione
selectXMLFilePage_desc=Specificare un file di destinazione XML per memorizzare il contenuto della libreria del metodo esportato.
fileLabel_text=File XML:
browseButton_text=Sfoglia...

# Overwrite Confirmation Dialog
overwriteText_msg=''{0}'' esiste gi\u00e0.\nSovrascriverlo?
overwriteText_msg1=''{0}'' esiste gi\u00e0.\nSovrascriverlo insieme alla cartella contenente ''{1}''?

# Progress Messages
exportingXML_text=Esportazione del contenuto della libreria dei metodi su un file XML in corso...

# Error Messages
invalidXMLFile_error=Il file XML specificato non \u00e8 valido.
exportXMLWizard_error=IUPM0000E: Esportazione non riuscita: {0}
exportXMLWizard_reviewLog=Esportazione completata. Rivedere i file di log nella directory di esportazione.
exportXMLService_error=Errore durante l''esportazione della libreria: {0}
exportXMLService_feature_error=Errore durante l''impostazione del valore funzione:: Elemento={0}, funzione={1}
xmlLibrary_error_load_xml=Impossibile caricare l''origine XML ''{0}''
xmlLibrary_no_plugin=Nessun plug-in di metodo per l''ID {0}
xmlLibrary_no_feature=Impossibile ottenere la funzione XML per {0}_{1}
xmlLibrary_no_class=Impossibile ottenere EClass per {0}
xmlLibrary_error_create_element=Errore durante la creazione dell''elemento. Impossibile impostare il valore della funzione {0}
xmlLibrary_error_set_value=Errore durante la creazione dell''elemento. Impossibile impostare il valore {0} sul contenitore {1}
xmlLibrary_invalid_feature_value=Valore funzione attributo non valido per la funzione {0}, con valore {1}
xmlLibrary_error_set_value_2=Errore durante l''impostazione dell''attributo. Impossibile impostare il valore per funzione={0}, oggetto={1}, valore={2}
xmlLibrary_error_set_value_3=Impossibile impostare il valore per funzione={0}, oggetto={1}, valore={2}
xmlLibrary_error_set_reference=Errore durante l''impostazione del riferimento. Impossibile impostare il valore per funzione={0}, oggetto={1}, valore={2}
xmlLibrary_error_process_wrong_container=Il processo ''{0}'' non dispone di un contenitore valido. Il contenitore \u00e8 di tipo ''{1}'', che non \u00e8 un pacchetto di processo.
xmlLibrary_new_id=All''elemento {0} viene assegnato un nuovo ID {1} poich\u00e9 non dispone di un ID valido
xmlLibrary_id_not_unique=L''ID elemento ''{0}'' viene usato da pi\u00f9 di un elemento

export_config_to_temp_location=Esporta configurazione in un percorso temporaneo
open_lib_from_temp_exported_location=Apri libreria dal percorso esportato temporaneo


