#-------------------------------------------------------------------------------
# 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
#-------------------------------------------------------------------------------
# NLS_MESSAGEFORMAT_VAR

# Export Microsoft Project Wizard
exportMSPWizard_title=Eksportowanie do programu Microsoft Project

# Select Export Options Wizard Page
selectExportOptionsWizardPage_title=Wyb\u00f3r opcji eksportowania
selectExportOptionsWizardPage_text=Wybierz konfiguracj\u0119 metody i opcje eksportowania, kt\u00f3re zostan\u0105 u\u017cyte podczas eksportu wybranego procesu.
selectedProcessLabel_text=Wybrany proces:
configurationLabel_text=Konfiguracja metody:
publishWebSiteCheckBox_text=Publikuj stron\u0119 WWW procesu
publishConfigButton_text=Publikuj ca\u0142\u0105 konfiguracj\u0119 metody
publishProcessButton_text=Publikuj tre\u015b\u0107, kt\u00f3ra dotyczy tylko wybranego procesu
exportOnlyPlannedElementsCheckBox_text=Wyeksportuj tylko zaplanowane sk\u0142adniki podzia\u0142u

# Select Publishing Options Wizard Page
selectPublishOptionsWizardPage_title=Wyb\u00f3r opcji publikowania
selectPublishOptionsWizardPage_text=Wybierz opcje publikowania, kt\u00f3re zostan\u0105 u\u017cyte do opublikowania strony WWW wyeksportowanego procesu.

# Select Export Directory Wizard page
selectExportDirWizardPage_title=Okre\u015blenie nazwy projektu i katalogu do eksportu
selectExportDirWizardPage_text=Podaj nazw\u0119 projektu Microsoft Project i katalog do eksportu.
projectNameLabel_text=Nazwa:
dirLabel_text=Katalog:
browseButton_text=Przegl\u0105daj...

# Progress Messages
exportMSPTask_name=Eksportowanie wybranego projektu do programu Microsoft Project...

# Warning Messages
overwriteText_msg=IUPM0100W: Projekt programu Microsoft Project ''{0}'' ju\u017c istnieje w katalogu ''{1}''.\n\nCzy chcesz go zast\u0105pi\u0107?
missingProcessContentWarning_msg=IUPM0102W: Opublikowana strona WWW procesu nie b\u0119dzie zawiera\u0107 tre\u015bci zwi\u0105zanej z eksportowanym procesem.\n\nCzy chcesz kontynuowa\u0107?

# Informational Messages
completedText_msg=IUPM0103I: Wybrany proces ''{0}'' zosta\u0142 pomy\u015blnie wyeksportowany do pliku XML programu Microsoft Project ''{1}''.

# Error Messages
exportMSPError_msg=IUPM0105E: Wyst\u0105pi\u0142 b\u0142\u0105d podczas eksportowania wybranego procesu ''{0}'' do programu Microsoft Project ''{1}''.
exportMSPError_reason=Aby uzyska\u0107 wi\u0119cej informacji, kliknij Szczeg\u00f3\u0142y.
exportMSPInternalError_msg=Wyst\u0105pi\u0142 b\u0142\u0105d wewn\u0119trzny.
illegalArgument_msg={0} zwraca niepoprawn\u0105 warto\u015b\u0107 lub warto\u015b\u0107 NULL.
