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

# Export XML Wizard
exportXMLWizard_title=Eksport pliku XML

# Select Export Type Wizard Page
selectExportTypePage_desc=Wybierz typ tre\u015bci biblioteki metod do wyeksportowania.
exportLibraryRadioButton_text=Wyeksportuj ca\u0142\u0105 bibliotek\u0119 metod
exportPluginsRadioButton_text=Wyeksportuj jedn\u0105 lub wi\u0119cej wtyczek metod
exportConfigsRadioButton_text=Wyeksportuj konfiguracj\u0119 metody

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Podanie pliku eksportu
selectXMLFilePage_desc=Podaj docelowy plik XML do zapisania wyeksportowanej tre\u015bci biblioteki metod.
fileLabel_text=Plik XML:
browseButton_text=Przegl\u0105daj...

# Overwrite Confirmation Dialog
overwriteText_msg=Plik ''{0}'' ju\u017c istnieje.\nCzy chcesz go nadpisa\u0107?

# Progress Messages
exportingXML_text=Eksportowanie tre\u015bci biblioteki metod do pliku XML...

# Error Messages
invalidXMLFile_error=Podany plik XML jest niepoprawny.
exportXMLWizard_error=IUPM0000E: Eksportowanie zako\u0144czy\u0142o si\u0119 niepowodzeniem: {0}
exportXMLWizard_reviewLog=Proces eksportowania zosta\u0142 zako\u0144czony. Przejrzyj pliki dziennik\u00f3w w katalogu eksportowania.
exportXMLService_error=B\u0142\u0105d podczas eksportowania biblioteki: {0}
exportXMLService_feature_error=B\u0142\u0105d podczas ustawiania warto\u015bci sk\u0142adnika: element={0}, sk\u0142adnik={1}
xmlLibrary_error_load_xml=Nie mo\u017cna za\u0142adowa\u0107 \u017ar\u00f3d\u0142a XML ''{0}''
xmlLibrary_no_plugin=Brak wtyczki metody dla id {0}
xmlLibrary_no_feature=Nie mo\u017cna pobra\u0107 sk\u0142adnika XML dla {0}_{1}
xmlLibrary_no_class=Nie mo\u017cna pobra\u0107 klasy EClass dla {0}
xmlLibrary_error_create_element=B\u0142\u0105d podczas tworzenia elementu: nie wiadomo, jak ustawi\u0107 warto\u015b\u0107 dla opcji {0}
xmlLibrary_error_set_value=B\u0142\u0105d podczas tworzenia elementu, nie mo\u017cna ustawi\u0107 warto\u015bci {0} dla kontenera {1}
xmlLibrary_invalid_feature_value=Niepoprawna warto\u015b\u0107 cechy atrybutu dla sk\u0142adnika {0} o warto\u015bci {1}
xmlLibrary_error_set_value_2=B\u0142\u0105d podczas ustawiania atrybutu. Nie mo\u017cna ustawi\u0107 warto\u015bci dla danych: sk\u0142adnik={0}, obiekt={1}, warto\u015b\u0107={2}
xmlLibrary_error_set_value_3=Nie wiadomo, jak ustawi\u0107 warto\u015b\u0107 dla danych: sk\u0142adnik={0}, obiekt={1}, warto\u015b\u0107={2}
xmlLibrary_error_set_reference=B\u0142\u0105d podczas ustawiania odniesienia. Nie mo\u017cna ustawi\u0107 warto\u015bci dla danych: sk\u0142adnik={0}, obiekt={1}, warto\u015b\u0107={2}
xmlLibrary_error_process_wrong_container=Proces ''{0}'' nie ma poprawnego kontenera. Kontener jest typu ''{1}'', a nie jest to pakiet procesu.
xmlLibrary_new_id=Element {0} jest przypisany z nowym identyfikatorem {1}, poniewa\u017c nie ma poprawnego identyfikatora
xmlLibrary_id_not_unique=Identyfikator elementu ''{0}'' jest u\u017cywany przez wi\u0119cej ni\u017c jeden element


