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

# 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=Okre\u015blenie 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 zast\u0105pi\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

export_config_to_temp_location=Eksportuj konfiguracj\u0119 w po\u0142o\u017cenie tymczasowe
open_lib_from_temp_exported_location=Otw\u00f3rz bibliotek\u0119 wyeksportowan\u0105 w po\u0142o\u017cenie tymczasowe


