# <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.2 2008/08/29 01:20:52 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 {0} w opcji {1}
_UI_CreateChild_description = Tworzy nowy element potomny typu {0} dla opcji {1} wybranego obiektu {2}.
_UI_CreateSibling_description = Utw\u00f3rz nowy element r\u00f3wnorz\u0119dny typu {0} dla wybranego obiektu {2} pod opcj\u0105 {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\u0142\u00f3w dzia\u0142ania
_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 = Powi\u0105zany sk\u0142adnik
_UI_LinkedObject_object_feature = Obiekt
_UI_NamedNode_name_feature = Nazwa
_UI_Node_location_feature = Po\u0142o\u017cenie
_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\u015blone

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