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

# 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


