# <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_pt_BR.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=Suporte a Edi\u00e7\u00e3o do Diagrama EPF
providerName=Eclipse.org

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Criar Novo {0} Sob o Recurso {1}
_UI_CreateChild_description = Criar um novo filho de tipo {0} para o recurso {1} do {2} selecionado.
_UI_CreateSibling_description = Criar um novo irm\u00e3o do tipo {0} para o {2} selecionado, no recurso {1} de seu pai.

_UI_PropertyDescriptor_description = {0} de {1}

_UI_Diagram_type = Diagrama
_UI_Link_type = Link
_UI_LinkedObject_type = Objeto Vinculado
_UI_NamedNode_type = N\u00f3 com Nome
_UI_Node_type = N\u00f3
_UI_ActivityDiagram_type = Diagrama de Atividades
_UI_TypedNode_type = N\u00f3 com Tipo
_UI_WorkProductDependencyDiagram_type = Diagrama de Depend\u00eancia de Produto de Trabalho
_UI_WorkProductNode_type = N\u00f3 do Produto de Trabalho
_UI_ActivityDetailDiagram_type = Diagrama de Detalhes de Atividades
_UI_NodeContainer_type = Cont\u00eainer de N\u00f3s
_UI_RoleNode_type = N\u00f3 da Fun\u00e7\u00e3o
_UI_RoleTaskComposite_type = Composto da Tarefa da Fun\u00e7\u00e3o
_UI_TaskNode_type = N\u00f3 da Tarefa
_UI_WorkProductDescriptorNode_type = N\u00f3 do Descritor de Produto de Trabalho
_UI_WorkBreakdownElementNode_type = N\u00f3 do Elemento de Interrup\u00e7\u00e3o de Trabalho
_UI_WorkProductComposite_type = Composi\u00e7\u00e3o do Produto de Trabalho
_UI_Unknown_type = Objeto

_UI_Unknown_datatype= Valor

_UI_Link_source_feature = Origem
_UI_Link_target_feature = Destino
_UI_Link_bendpoints_feature = Pontos de Curvatura
_UI_Link_sourceEndPoint_feature = Terminal de Origem
_UI_Link_targetEndPoint_feature = Terminal de Destino
_UI_LinkedObject_linkedElement_feature = Elemento de Vincula\u00e7\u00e3o
_UI_LinkedObject_object_feature = Objeto
_UI_NamedNode_name_feature = Nome
_UI_Node_location_feature = Local
_UI_Node_width_feature = Largura
_UI_Node_height_feature = Altura
_UI_Node_incomingConnections_feature = Conex\u00f5es de Entrada
_UI_Node_outgoingConnections_feature = Conex\u00f5es de Sa\u00edda
_UI_Node_readOnly_feature = Somente Leitura
_UI_TypedNode_type_feature = Tipo
_UI_WorkProductNode_type_feature = Tipo
_UI_NodeContainer_nodes_feature = N\u00f3s
_UI_WorkProductComposite_type_feature = Tipo
_UI_Unknown_feature = N\u00e3o Especificado

_UI_Link_name_feature = Nome
_UI_ActivityDetailDiagram_autoLayout_feature = Layout Autom\u00e1tico
_UI_TaskNode_index_feature = \u00cdndice
_UI_RoleTaskComposite_rowIndex_feature = \u00cdndice da Coluna
_UI_WorkProductDescriptorNode_state_feature = Estado
