# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# Copyright (c) 2000, 2008 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.
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR

# Plug-in
pluginName=Interfejs u\u017cytkownika EPF Composer RCP
productName=EPF Composer
providerName=Eclipse.org

# About text
aboutText=Eclipse Process Framework Composer\n\
\n\
Wersja: {0}\n\
\n\
(c) Copyright Eclipse contributors i inne podmioty 2000, 2011. Wszelkie prawa zastrze\u017cone.\n

# Category
methodCategoryName=Metoda

# Views
welcomeViewName=Witamy

# Actions
globalActionSet=Globalny zestaw dzia\u0142a\u0144
newAction=&Nowy
newActionTooltip=Nowy
openAction=&Otw\u00f3rz...
openActionTooltip=Otw\u00f3rz
searchAction=&Szukaj...
searchActionTooltip=Szukaj
welcomeAction=&Witamy
welcomeActionToolTip=Witamy

# Tooltips
shortcut.overview.tooltip=Powr\u00f3t do strony Przegl\u0105d
shortcut.tutorials.tooltip=Powr\u00f3t do strony Kurs
shortcut.firststeps.tooltip=Powr\u00f3t do strony Pierwsze kroki
shortcut.webresources.tooltip=Powr\u00f3t do strony Zasoby WWW       

#Action Set
actionSet.description = Dzia\u0142ania paska narz\u0119dzi systemu pomocy
actionSet.label = System pomocy
searchAction.label = &Wyszukaj w pomocy
searchAction.tooltip = Wyszukaj w pomocy
dynamicHelpAction.label = &Pomoc dynamiczna 
dynamicHelpAction.tooltip = Pomoc dynamiczna

#Activities/Capabilities
activity.general=Importuj i eksportuj projekty i zasoby
activity.general.desc=U\u017cyj standardowych mo\u017cliwo\u015bci importowania/eksportowania projektu/zasob\u00f3w Eclipse.
activity.team.cvs=Obs\u0142uga systemu CVS
activity.team.cvs.desc=U\u017cyj systemu CVS (Concurrent Versions System) do zarz\u0105dzania zasobami.
activity.team=Obs\u0142uga Core Team
activity.team.desc=Wsp\u00f3\u0142u\u017cytkuj projekty za pomoc\u0105 system\u00f3w zarz\u0105dzania konfiguracj\u0105.

activity.cat.general=Og\u00f3lne
activity.cat.general.desc=U\u017cyj standardowych mo\u017cliwo\u015bci Eclipse.
activity.cat.team=Zesp\u00f3\u0142
activity.cat.team.desc=U\u017cyj system\u00f3w zarz\u0105dzania konfiguracj\u0105 do zarz\u0105dzania zasobami.

PreferencePages.Capabilities = Mo\u017cliwo\u015bci
PreferencePages.Capabilities.activityName = &Mo\u017cliwo\u015bci
PreferencePages.Capabilities.categoryName = &Mo\u017cliwo\u015bci
PreferencePages.Capabilities.activityPromptButton = &Wy\u015bwietlaj zach\u0119t\u0119 podczas w\u0142\u0105czania mo\u017cliwo\u015bci
PreferencePages.Capabilities.activityPromptButtonTooltip = Wy\u015bwietlenie zach\u0119ty podczas pierwszego u\u017cycia opcji wymagaj\u0105cej w\u0142\u0105czenia mo\u017cliwo\u015bci
PreferencePages.Capabilities.captionMessage = Mo\u017cliwo\u015bci umo\u017cliwiaj\u0105 w\u0142\u0105czenie i wy\u0142\u0105czenie r\u00f3\u017cnych komponent\u00f3w produktu.  Mo\u017cliwo\u015bci te s\u0105 pogrupowane zgodnie z zestawem predefiniowanych kategorii.
