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

# Error Messages
invalidNameError_msg=Nazwa ''{0}'' jest niepoprawna. Nazwa sk\u0142adnika metody nie mo\u017ce zawiera\u0107 nast\u0119puj\u0105cych znak\u00f3w: \\ / : * ? " < > |
objNotFoundError_msg=Nie mo\u017cna znale\u017a\u0107 obiektu o identyfikatorze ''{0}''
loadLibraryError_msg=Wyst\u0105pi\u0142y b\u0142\u0119dy podczas \u0142adowania biblioteki metod:
loadLibraryError_details=\ \ wiersz: {0}, kolumna: {1}, komunikat: {2}
restoreResourceError_msg=Nie mo\u017cna odtworzy\u0107 zasobu ''{0}''
FileManager_fileReadOnly=Plik ''{0}'' jest tylko do odczytu
ErrMsg_CouldNotDelete=Nie mo\u017cna usun\u0105\u0107 {0}. {1}
renameError_msg=Nie mo\u017cna zmieni\u0107 nazwy z ''{0}'' na ''{1}''
backupError_msg=Nie mo\u017cna utworzy\u0107 kopii zapasowej zasobu ''{0}''
modifyFileError_msg=Nie mo\u017cna zmodyfikowa\u0107 pliku ''{0}''
filePathNameTooLong_msg=Nie mo\u017cna zapisa\u0107 zasobu. Za d\u0142uga \u015bcie\u017cka do pliku (przekracza 255) ''{0}''
loadResourceError_msg=Nie mo\u017cna za\u0142adowa\u0107 zasobu ''{0}''
loadResourceErrorWithReason_msg=Nie mo\u017cna za\u0142adowa\u0107 zasobu ''{0}''. Przyczyna: {1}
invalidLibraryFileError_msg=Niepoprawny plik biblioteki metod:
fileNotFoundError_msg=W obszarze roboczym ''{0}'' nie mo\u017cna znale\u017a\u0107 \u017cadnego pliku biblioteki metod
normalizeURIError_msg=Nie mo\u017cna znale\u017a\u0107 zasobu dla elementu identyfikowanego przez ''{0}''
moveError_msg=Nie mo\u017cna przenie\u015b\u0107 ''{0}'' do ''{1}''. Obiekt docelowy ju\u017c istnieje.
modifyReadOnlyFileError_msg=Nie mo\u017cna zmodyfikowa\u0107 plik\u00f3w tylko do odczytu: {0}
moveResourceError_msg=Zas\u00f3b ''{0}'' bierze udzia\u0142 w operacji trwa\u0142o\u015bci, kt\u00f3re nie zosta\u0142a zatwierdzona.
modifyFilesError_msg=Nie mo\u017cna zmodyfikowa\u0107 co najmniej jednego pliku.
resourceOutOfSynch_msg=Zas\u00f3b jest niezsynchronizowany i nale\u017cy go prze\u0142adowa\u0107: {0}
resourceAutoRefreshJob_name=Automatyczne od\u015bwie\u017canie zasobu
loadConfiguration_couldNotLoad_logMsg=Nie mo\u017cna za\u0142adowa\u0107 pliku {0}. Konfiguracja metody w tym pliku ma powielony identyfikator GUID.
loadConfiguration_notConfigFile_logMsg=To nie jest plik konfiguracyjny metody: {0}

# Progress Messages
loadLibraryTask_name=\u0141adowanie biblioteki metod...
moveDataTask_name=Przenoszenie danych...
saveLibraryTask_name=Zapisywanie biblioteki metod...
loadResourcesTask_name=\u0141adowanie wszystkich zasob\u00f3w do pami\u0119ci...
migratingDiagram_name=Migracja diagram\u00f3w...
migrateContentDescriptionsTask_name=Migracja opis\u00f3w tre\u015bci procesu...
fixPresentationNameTask_name=Naprawianie pustych nazw prezentacji...
UnresolvedProxyMarkerManager_couldNotResolveProxy=Nie mo\u017cna znale\u017a\u0107 elementu identyfikowanego przez ''{0}''
refreshLibraryFilesTask_name=Od\u015bwie\u017canie plik\u00f3w biblioteki w obszarze roboczym
cannot_create_dir_msg=Nie mo\u017cna utworzy\u0107 katalogu ''{0}''.
unresolvedProxyLoggerJob_name=Tworzenie znacznik\u00f3w b\u0142\u0119du \u0142adowania
