# <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_pl.properties,v 1.1 2008/08/25 01:02:01 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=Obs\u0142uga edycji diagramu EPF
providerName=Eclipse.org

_UI_CreateChild_text = {0}
_UI_CreateChild_text2 = {1} {0}
_UI_CreateChild_text3 = {1}
_UI_CreateChild_tooltip = Utw\u00f3rz nowy element {0} w opcji {1}
_UI_CreateChild_description = Tworzy nowy element potomny typu {0} dla opcji {1} wybranego obiektu {2}.
_UI_CreateSibling_description = Tworzy nowe rodze\u0144stwo typu {0} dla wybranego obiektu {2} w opcji {1} elementu nadrz\u0119dnego.

_UI_PropertyDescriptor_description = {0} z {1}

_UI_Diagram_type = Diagram
_UI_Link_type = Powi\u0105zanie
_UI_LinkedObject_type = Obiekt powi\u0105zany
_UI_NamedNode_type = W\u0119ze\u0142 nazwany
_UI_Node_type = W\u0119ze\u0142
_UI_ActivityDiagram_type = Diagram dzia\u0142ania
_UI_TypedNode_type = W\u0119ze\u0142 okre\u015blonego typu
_UI_WorkProductDependencyDiagram_type = Diagram zale\u017cno\u015bci produktu pracy
_UI_WorkProductNode_type = W\u0119ze\u0142 produktu pracy
_UI_ActivityDetailDiagram_type = Diagram szczeg\u00f3\u0142owych informacji o dzia\u0142aniu
_UI_NodeContainer_type = Kontener w\u0119z\u0142a
_UI_RoleNode_type = W\u0119ze\u0142 roli
_UI_RoleTaskComposite_type = Z\u0142o\u017cenie zadania roli
_UI_TaskNode_type = W\u0119ze\u0142 zadania
_UI_WorkProductDescriptorNode_type = W\u0119ze\u0142 deskryptora produktu pracy
_UI_WorkBreakdownElementNode_type = W\u0119ze\u0142 elementu podzia\u0142u pracy
_UI_WorkProductComposite_type = Z\u0142o\u017cenie produktu pracy
_UI_Unknown_type = Obiekt

_UI_Unknown_datatype= Warto\u015b\u0107

_UI_Link_source_feature = \u0179r\u00f3d\u0142o
_UI_Link_target_feature = Cel
_UI_Link_bendpoints_feature = Punkty zmiany
_UI_Link_sourceEndPoint_feature = \u0179r\u00f3d\u0142owy punkt ko\u0144cowy
_UI_Link_targetEndPoint_feature = Docelowy punkt ko\u0144cowy
_UI_LinkedObject_linkedElement_feature = Element powi\u0105zany
_UI_LinkedObject_object_feature = Obiekt
_UI_NamedNode_name_feature = Nazwa
_UI_Node_location_feature = Lokalizacja
_UI_Node_width_feature = Szeroko\u015b\u0107
_UI_Node_height_feature = Wysoko\u015b\u0107
_UI_Node_incomingConnections_feature = Po\u0142\u0105czenia przychodz\u0105ce
_UI_Node_outgoingConnections_feature = Po\u0142\u0105czenia wychodz\u0105ce
_UI_Node_readOnly_feature = Tylko do odczytu
_UI_TypedNode_type_feature = Typ
_UI_WorkProductNode_type_feature = Typ
_UI_NodeContainer_nodes_feature = W\u0119z\u0142y
_UI_WorkProductComposite_type_feature = Typ
_UI_Unknown_feature = Nieokre\u015blona

_UI_Link_name_feature = Nazwa
_UI_ActivityDetailDiagram_autoLayout_feature = Uk\u0142ad automatyczny
_UI_TaskNode_index_feature = Indeks
_UI_RoleTaskComposite_rowIndex_feature = Indeks wiersza
