# <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.2 2008/09/05 00:17:52 klow 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
_UI_WorkProductDescriptorNode_state_feature = Stato
