#-------------------------------------------------------------------------------
# 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
#
# Message ID Range: IUPE0000E - IUPE0099E
#

# Export Library Configuration Wizard
exportConfigWizard_title=Eksport konfiguracji biblioteki
selectExportTypePage_title=Wyb\u00f3r typu eksportu
selectExportTypePage_desc=Wybierz typ konfiguracji biblioteki do wyeksportowania.
selectExportTypePage_configLabel_text=Eksport konfiguracji metody i wszystkich jej wtyczek
selectExportTypePage_configSpecsLabel_text=Eksport specyfikacji konfiguracji metody
selectConfigPage_title=Wyb\u00f3r konfiguracji metody
selectConfigPage_desc=Wybierz konfiguracj\u0119 metody do wyeksportowania. Wszystkie wtyczki metody, do kt\u00f3rych odwo\u0142uje si\u0119 wybrana konfiguracja, zostan\u0105 w\u0142\u0105czone do eksportu.
selectConfigPage_configsLabel_text=Konfiguracje metody:
selectConfigSpecsPage_title=Wyb\u00f3r specyfikacji konfiguracji
selectConfigSpecsPage_desc=Wybierz jedn\u0105 lub wi\u0119cej specyfikacji konfiguracji metody do wyeksportowania.
selectConfigSpecsPage_configsLabel_text=Konfiguracje metody:
checkConfigPage_title=Przegl\u0105danie b\u0142\u0119d\u00f3w konfiguracji
checkConfigPage_desc=Dla wybranej konfiguracji metody zosta\u0142o przeprowadzone sprawdzenie integralno\u015bci. Zapoznaj si\u0119 z raportem o b\u0142\u0119dach i wykonaj niezb\u0119dne dzia\u0142ania koryguj\u0105ce.
selectDestinationPage_title=Okre\u015blanie katalogu eksportu
selectDestinationPage_desc=Okre\u015bl katalog docelowy, w kt\u00f3rym zostanie zapisana wyeksportowana konfiguracja.

# Export Method Plug-ins Wizard
exportPluginsWizard_title=Eksportowanie wtyczek metody
selectPluginsPage_title=Wyb\u00f3r wtyczek metody
selectPluginsPage_desc=Wybierz jedn\u0105 lub wi\u0119cej wtyczek metody do wyeksportowania.
selectPluginsPage_pluginsLabel_text=Wtyczki metody:
reviewPluginsPage_title=Przegl\u0105danie zale\u017cno\u015bci
reviewPluginsPage_desc=Wybierz wtyczk\u0119 metody, aby przejrze\u0107 jej zale\u017cno\u015bci. Kliknij przycisk Wstecz, aby wybra\u0107 zale\u017cne wtyczki, je\u015bli musz\u0105 by\u0107 w\u0142\u0105czone do eksportu.
reviewPluginsPage_pluginsLabel_text=Wtyczki metody:
reviewPluginsPage_dependentPluginsLabel_text=Zale\u017cne wtyczki metody:
reviewPluginsPage_associatedConfigsLabel_text=Powi\u0105zane konfiguracje metody:
exportPluginSummaryPage_title=Potwierdzenie eksportu
exportPluginSummaryPage_desc=Potwierd\u017a, kt\u00f3re wtyczki metody maj\u0105 by\u0107 wyeksportowane.
exportPluginSummaryPage_noPlugin_text=Nie wybrano \u017cadnej wtyczki metody.
specifyPathPage_title=Okre\u015blanie katalogu eksportu
specifyPathPage_desc=Okre\u015bl katalog docelowy, w kt\u00f3rym zostan\u0105 zapisane wyeksportowane wtyczki metody.
SavePluginPage_desc=Wyeksportuj wybrane wtyczki i konfiguracje do okre\u015blonego katalogu docelowego.
ExportPluginWizard_title=B\u0142\u0105d kreatora eksportu wtyczki metody
ExportPluginError_msg=IUPE0000E: Wyst\u0105pi\u0142 b\u0142\u0105d podczas eksportowania

# Export Library Configuration Error Dialog
exportConfigErrorDialog_title=Eksport konfiguracji biblioteki
exportConfigErrorDialog_msg=IUPE0001E: Nie mo\u017cna kontynuowa\u0107 operacji eksportowania.

# Progress Messages
analyzingConfigTask_name=Analizowanie konfiguracji biblioteki...

# The following messages have not been reviewed.
ConfigurationSpecsExportService_MSG0=Eksportowanie konfiguracji...
ConfigurationSpecsExportService_MSG1=Eksport zako\u0144czony.
ExportConfigCheckingPage_summary_1=Sprawdzanie integralno\u015bci wybranej konfiguracji...\n
ExportConfigCheckingPage_summary_2=Nie wybrano \u017cadnej konfiguracji.\n
ExportConfigCheckingPage_summary_3=W wybranej konfiguracji nie wyst\u0119puj\u0105 \u017cadne problemy.\n
ExportConfigCheckingPage_summary_4=Liczba problem\u00f3w w wybranej konfiguracji: {0} (b\u0142\u0119dy: {1}, ostrze\u017cenia {2}, informacje: {3}. \nMo\u017cesz otworzy\u0107 edytor konfiguracji i naprawi\u0107 te problemy. \nMo\u017cesz r\u00f3wnie\u017c zignorowa\u0107 te problemy i kontynuowa\u0107.
ExportConfigCheckingPage_checking=Sprawdzanie konfiguracji, prosz\u0119 czeka\u0107...
ExportConfigSelectConfigPage_title=Wybierz konfiguracj\u0119 metody
DestinationCommonPage_label_browse=Przegl\u0105daj...
DestinationCommonPage_label_default_dir=U\u017cyj katalogu domy\u015blnego
ConfigurationExportService_MSG0=Eksportowanie konfiguracji...
ConfigurationExportService_MSG2=IUPE0002E: Eksport zako\u0144czy\u0142 si\u0119 niepowodzeniem: b\u0142\u0105d podczas \u0142adowania biblioteki
ConfigurationExportService_MSG4=IUPE0003E: Eksport zako\u0144czy\u0142 si\u0119 niepowodzeniem: b\u0142\u0105d podczas kopiowania biblioteki
ConfigurationExportService_MSG1=IUPE0004E: Eksport zako\u0144czy\u0142 si\u0119 niepowodzeniem: b\u0142\u0105d podczas zamykania konfiguracji biblioteki
ConfigurationExportService_MSG9=IUPE0005E: Eksport zako\u0144czy\u0142 si\u0119 niepowodzeniem: b\u0142\u0105d podczas zapisywania biblioteki
DestinationCommonPage_label_name=Nazwa:
DestinationCommonPage_label_dir=Katalog:
ExportPluginWizard_error=B\u0142\u0105d
DestinationCommonPage_title=Tytu\u0142 domy\u015blny
DestinationCommonPage_desc=Opis domy\u015blny:
PluginExportService_MSG0=Trwa eksportowanie wtyczek...
PluginExportService_MSG1=Trwa tworzenie katalogu eksportu...
PluginExportService_MSG2=Kopiowanie plik\u00f3w...
PluginExportService_MSG3=Trwa generowanie pliku zasob\u00f3w i biblioteki...
PluginExportService_MSG4=Eksport zako\u0144czony.
SaveLibraryPage_title=Eksportowanie wtyczki metody
SavePluginPage_label_name=Nazwa eksportu:
SaveLibraryPage_desc=Wyeksportuj wybrane wtyczki metod i powi\u0105zane konfiguracje
ExportPluginWizard_MSG1=Analizowanie konfiguracji biblioteki...
