# NLS_ENCODING=UNICODE
#-------------------------------------------------------------------------------
# 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: IUPE0200E - IUPE0299E
#

# Import Library Configuration Wizard
importConfigWizard_title=Importowanie konfiguracji biblioteki
selectConfigDirWizardPage_title=Okre\u015blanie katalogu importu
selectConfigDirWizardPage_text=Okre\u015bl katalog zawieraj\u0105cy konfiguracj\u0119 biblioteki do zaimportowania.
reviewChangesWizardPage_title=Przegl\u0105danie zmian w bibliotece
reviewChangesWizardPage_text=Przejrzyj zmiany, kt\u00f3re zostan\u0105 wprowadzone w bie\u017c\u0105cej bibliotece metod.
selectConfigSpecsWizardPage_title=Wyb\u00f3r specyfikacji konfiguracji
selectConfigSpecsWizardPage_text=Wybierz jedn\u0105 lub wi\u0119cej specyfikacji konfiguracji metod do zaimportowania.

# Import Method Plug-ins Wizard
importPluginsWizard_title=Importowanie wtyczek metod
selectPluginsDirWizardPage_title=Okre\u015blanie katalogu importu
selectPluginsDirWizardPage_text=Okre\u015bl katalog zawieraj\u0105cy wtyczki metod do zaimportowania.
selectPluginsWizardPage_title=Wyb\u00f3r wtyczek metody
selectPluginsWizardPage_text=Wybierz jedn\u0105 lub wi\u0119cej wtyczek metod do zaimportowania. Je\u015bli wybrana wtyczka ju\u017c istnieje w bie\u017c\u0105cej bibliotece metod, sprawd\u017a r\u00f3\u017cnice wersji.
importPluginsWizard_ERR_Import_plugin=Importowanie wtyczki nie powiod\u0142o si\u0119

ConfigurationImportService_MSG0=Sprawdzanie poprawno\u015bci wybranej konfiguracji biblioteki...
ConfigurationImportService_MSG1=Podany katalog nie zawiera poprawnej konfiguracji.
ConfigurationImportService_MSG3=Importowanie konfiguracji metody...
ConfigurationImportService_MSG2=Nie mo\u017cna zaimportowa\u0107 obecnie otwartej biblioteki do niej samej.
ImportConfigurationWizard_MSG1=Importowanie konfiguracji metody...
ImportConfigurationWizard_ERR_Import_configuration=Importowanie konfiguracji nie powiod\u0142o si\u0119

FileModifyChecker_Checkout_failed_title=Pobieranie nie powiod\u0142o si\u0119
FileModifyChecker_Checkout_failed_msg=Niekt\u00f3re pliki nie zosta\u0142y pobrane, czy chcesz spr\u00f3bowa\u0107 ponownie?

ImportConfigReportPage_title=Raport importowania konfiguracji
ImportPluginWizard_readonly=IUPE0201E: Biblioteka jest tylko do odczytu.
ImportPluginWizard_MSG1=Importowanie wtyczki metody...
ImportPluginWizard_error=B\u0142\u0105d
ImportPluginWizard_warn_existing_plugins=IUPE0200E: Nast\u0119puj\u0105ce wybrane wtyczki ju\u017c istniej\u0105 i ponowne ich zaimportowanie nadpisze istniej\u0105ce:\n\n \ {0} \n\nCzy na pewno kontynuowa\u0107?
ImportPluginWizard_confirm_continue=\n\nCzy na pewno kontynuowa\u0107?
ImportPluginWizard_warn_circular_plugins=Wykryto odniesienia cykliczne mi\u0119dzy nast\u0119puj\u0105cymi wtyczkami
ImportNoSynLib_ConvertMsg=Czy przekszta\u0142ci\u0107 zaimportowan\u0105 bibliotek\u0119 w automatycznie synchronizowan\u0105 bibliotek\u0119?
ImportSynLibToNoSynLib_Error=Importowanie danych biblioteki z automatycznie synchronizowanej biblioteki do biblioteki wymagaj\u0105cej synchronizacji nie jest obs\u0142ugiwane
SelectConfigsToImport_label1=Zostan\u0105 zaimportowane nast\u0119puj\u0105ce elementy:
ImportConfigurationWizard_error=B\u0142\u0105d
SelectImportConfigurationSource_MSG1=Analizowanie
SelectConfigSpecsToImportPage_title2=Wyb\u00f3r specyfikacji konfiguracji do zaimportowania
SelectImportPluginSource_not_used=nieu\u017cywane
SelectImportPluginSource_no_path=Wskazany katalog nie istnieje.
SelectImportPluginSource_no_dir=Nie okre\u015blono katalogu
SelectPluginsToImport_label_plugins=Wtyczki dost\u0119pne w katalogu importu:
SelectPluginsToImport_label_author=Autor:
SelectPluginsToImport_label_version=Wersja:
SelectPluginsToImport_label_desc=Kr\u00f3tki opis:
ImportConfigurationWizard_readonly=IUPE0201E: Biblioteka jest tylko do odczytu.
PluginImportingService_MSG0=Sprawdzanie poprawno\u015bci wybranych wtyczek...
PluginImportingService_MSG1=Podana \u015bcie\u017cka nie zawiera poprawnej wtyczki metody.
PluginImportingService_MSG3=Importowanie wtyczki metody...
PluginImportingService_MSG5=Nie mo\u017cna zaimportowa\u0107 wybranej wtyczki metody. Nie mo\u017cna znale\u017a\u0107 zale\u017cnej od niej wtyczki ''{0}'' w bie\u017c\u0105cej bibliotece metod.
PluginImportingService_MSG6=Nie mo\u017cna zaimportowa\u0107 wybranej wtyczki metody. Nie mo\u017cna znale\u017a\u0107 wtyczki zale\u017cnej w bie\u017c\u0105cej bibliotece metod.
DiffReportViewer_content=Tre\u015b\u0107
DiffReportViewer_in_import=W imporcie
SelectPluginsToImport_MSG1=Trwa analizowanie plik\u00f3w...
DiffReportLabelProvider_yes=Tak
SelectPluginsToImport_error=B\u0142\u0105d
DiffReportViewer_in_lib=W bibliotece
DiffReportViewer_status=Status
SelectPluginsToImport_libraryPluginExists=Znaleziono wybran\u0105 wtyczk\u0119 w bie\u017c\u0105cej bibliotece
SelectPluginsToImport_libraryPluginNotExists=Nie znaleziono wybranej wtyczki w bie\u017c\u0105cej bibliotece
SelectConfigSpecsToImportPage_libraryConfigSpecExists=Znaleziono konfiguracj\u0119 w bie\u017c\u0105cej bibliotece
SelectConfigSpecsToImportPage_configSpecNoSelection=Nie wybrano specyfikacji konfiguracji.
SelectConfigSpecsToImportPage_configSpecDataLabel=Wybrana konfiguracja w katalogu importu
SelectConfigSpecsToImportPage_label_configs=Specyfikacje konfiguracji dost\u0119pne w katalogu importu:
SelectImportConfigurationSource_not_used=nieu\u017cywane
SelectConfigSpecsToImportPage_label_desc=Kr\u00f3tki opis:
SelectImportConfigurationSource_no_path=Podana \u015bcie\u017cka nie istnieje.
SelectPluginsToImport_pluginNoSelection=Nie wybrano wtyczki.
SelectImportConfigurationSource_no_dir=Nie okre\u015blono katalogu
SelectImportConfigurationSource_plugin_readonly=Wtyczka {0} jest tylko do odczytu\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: Wtyczka {0} jest zablokowana\n
SelectImportConfigurationSource_error_not_updatable=Wtyczka lub wtyczki w bibliotece s\u0105 zablokowane lub tylko do odczytu.\n\ Nale\u017cy je odblokowa\u0107 i upewni\u0107 si\u0119, \u017ce pliki mo\u017cna aktualizowa\u0107.
SelectPluginsToImport_pluginDataLabel=Wybrana wtyczka w katalogu importu
DiffReportViewer_type=Typ tre\u015bci
SelectConfigSpecsToImportPage_libraryConfigSpecNotExists=W bie\u017c\u0105cej bibliotece nie znaleziono wybranej konfiguracji.
versionMismatch_oldData=IUPE0204E: Podane pliki zosta\u0142y wyeksportowane w poprzedniej wersji ({0}) programu {1}. Pliki musz\u0105 by\u0107 wyeksportowane z bie\u017c\u0105cej wersji programu {1}.
versionMismatch_oldData_unknown=IUPE0205E: Podane pliki zosta\u0142y wyeksportowane w poprzedniej wersji programu {0}. Pliki musz\u0105 by\u0107 wyeksportowane z bie\u017c\u0105cej wersji programu {0}.
versionMismatch_oldTool=IUPE0206E: Podane pliki zosta\u0142y wyeksportowane w nowszej wersji ({0}) programu {1}. Konieczna jest aktualizacja programu {1}, aby zaimportowa\u0107 te pliki.  
versionMismatch_oldTool_unknown=IUPE0207E: Nie mo\u017cna otworzy\u0107 podanych plik\u00f3w. Konieczna jest aktualizacja programu {0}, aby zaimportowa\u0107 te pliki.
ConfigurationImportService_handleToolVersion_error=IUPE0208E: Nie powiod\u0142a si\u0119 aktualizacja wtyczki lub wtyczek.
optionGroup_text=Opcja importu
checkBaseRadioButton_text=Sprawd\u017a wtyczki podstawowe
ignoreRemoveRadioButton_text=Zignoruj i usu\u0144 nierozwi\u0105zane odniesienia
