# <copyright>
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------
# </copyright>
#
# $Id: plugin_it.properties,v 1.1 2008/08/25 00:52:05 jtham Exp $

# ====================================================================
# To code developer:
#   Do NOT change the properties between this line and the
#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
#   Make a new property name, append to the end of the file and change
#   the code to use the new property.
# ====================================================================

# ====================================================================
# %%% END OF TRANSLATED PROPERTIES %%%
# ====================================================================
# NLS_MESSAGEFORMAT_VAR

pluginName=Supporto modifica digramma EPF
providerName=Eclipse.org

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Crea nuovo {0} nella funzione {1}
_UI_CreateChild_description = Crea un nuovo elemento children di tipo {0} per la funzione {1} del {2} selezionato.
_UI_CreateSibling_description = Crea un nuovo elemento di pari livello di tipo {0} per il {2} selezionato, nella funzione {1} del relativo elemento parent.

_UI_PropertyDescriptor_description = La {0} di {1}

_UI_Diagram_type = Diagramma
_UI_Link_type = Collegamento
_UI_LinkedObject_type = Oggetto collegato
_UI_NamedNode_type = Nodo denominato
_UI_Node_type = Nodo
_UI_ActivityDiagram_type = Diagramma attivit\u00e0
_UI_TypedNode_type = Nodo immesso
_UI_WorkProductDependencyDiagram_type = Diagramma dipendenze prodotto di lavoro
_UI_WorkProductNode_type = Nodo prodotto di lavoro
_UI_ActivityDetailDiagram_type = Diagramma dettagli attivit\u00e0
_UI_NodeContainer_type = Contenitore nodo
_UI_RoleNode_type = Nodo ruolo
_UI_RoleTaskComposite_type = Composto attivit\u00e0 ruolo
_UI_TaskNode_type = Nodo attivit\u00e0
_UI_WorkProductDescriptorNode_type = Nodo descrittore prodotto di lavoro
_UI_WorkBreakdownElementNode_type = Nodo elemento suddivisione lavoro
_UI_WorkProductComposite_type = Composto prodotto di lavoro
_UI_Unknown_type = Oggetto

_UI_Unknown_datatype= Valore

_UI_Link_source_feature = Origine
_UI_Link_target_feature = Destinazione
_UI_Link_bendpoints_feature = Bendpoints
_UI_Link_sourceEndPoint_feature = Endpoint di origine
_UI_Link_targetEndPoint_feature = Endpoint di destinazione
_UI_LinkedObject_linkedElement_feature = Elemento collegato
_UI_LinkedObject_object_feature = Oggetto
_UI_NamedNode_name_feature = Nome
_UI_Node_location_feature = Posizione
_UI_Node_width_feature = Larghezza
_UI_Node_height_feature = Altezza
_UI_Node_incomingConnections_feature = Connessioni in entrata
_UI_Node_outgoingConnections_feature = Connessioni in uscita
_UI_Node_readOnly_feature = Sola lettura
_UI_TypedNode_type_feature = Tipo
_UI_WorkProductNode_type_feature = Tipo
_UI_NodeContainer_nodes_feature = Nodi
_UI_WorkProductComposite_type_feature = Tipo
_UI_Unknown_feature = Non specificato

_UI_Link_name_feature = Nome
_UI_ActivityDetailDiagram_autoLayout_feature = Layout automatico
_UI_TaskNode_index_feature = Indice
_UI_RoleTaskComposite_rowIndex_feature = Indice riga
