#-------------------------------------------------------------------------------
# Copyright (c) 2005, 2006 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. Riesaminare 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 MethodPlugin 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 Processpackage
xmlLibrary_new_id=All''elemento {0} viene assegnato un nuovo id {1} poich\u00e9 non ne dispone di uno valido
xmlLibrary_id_not_unique=L''Id elemento ''{0}'' viene usato da pi\u00f9 di un elemento 


