#-------------------------------------------------------------------------------
# Copyright (c) 2005, 2006 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=Der Name ''{0}'' ist ung\u00fcltig. Die folgenden Zeichen sind in Namen f\u00fcr Methodenelemente nicht zul\u00e4ssig: \\ / : * ? " < > |
objNotFoundError_msg=Es wurde kein Objekt mit der ID ''{0}'' gefunden.
loadLibraryError_msg=Fehler beim Laden der Methodenbibliothek:
loadLibraryError_details=\ \ Zeile: {0}, Spalte: {1}, Nachricht: {2}
restoreResourceError_msg=Die Ressource ''{0}'' konnte nicht wiederhergestellt werden.
FileManager_fileReadOnly=Die Datei ''{0}'' ist schreibgesch\u00fctzt.
ErrMsg_CouldNotDelete={0} konnte nicht gel\u00f6scht werden. {1}
renameError_msg=''{0}'' konnte nicht in ''{1}'' umbenannt werden.
backupError_msg=Die Ressource ''{0}'' konnte nicht gesichert werden.
marker_err_cannotResolveProxy=Der Proxy {0} konnte nicht aufgel\u00f6st werden.
modifyFileError_msg=Die Datei ''{0}'' kann nicht ge\u00e4ndert werden.
loadResourceError_msg=Die Ressource ''{0}'' konnte nicht geladen werden.
loadResourceErrorWithReason_msg=Die Ressource ''{0}'' konnte nicht geladen werden. Ursache: {1}
invalidLibraryFileError_msg=Ung\u00fcltige Methodenbibliotheksdatei:
fileNotFoundError_msg= Es wurde keine Methodenbibliotheksdatei im Arbeitsbereich ''{0}'' gefunden.
normalizeURIError_msg=Der normalisierte URI f\u00fcr ''{0}'' wurde nicht gefunden.
moveError_msg=''{0}'' konnte nicht nach ''{1}'' verschoben werden. Das Ziel ist bereits vorhanden.
modifyReadOnlyFileError_msg=Die folgenden schreibgesch\u00fctzten Dateien k\u00f6nnen nicht ge\u00e4ndert werden: {0}
moveResourceError_msg=Die Ressource ''{0}'' ist an einer Persistenzoperation beteiligt, die noch nicht festgeschrieben wurde.
modifyFilesError_msg=Mindestens eine Datei konnte nicht ge\u00e4ndert werden.
resourceOutOfSynch_msg=Die Ressource ist nicht synchronisiert und muss erneut geladen werden: {0}

# Progress Messages
loadLibraryTask_name=Methodenbibliothek wird geladen...
moveDataTask_name=Daten werden verschoben...
saveLibraryTask_name=Methodenbibliothek wird gespeichert...
loadResourcesTask_name=Alle Ressourcen werden in den Hauptspeicher geladen...
migrateContentDescriptionsTask_name=Prozessinhaltsbeschreibungen werden migriert...
fixPresentationNameTask_name=Nicht vorhandener/leerer Pr\u00e4sentationsname jedes Strukturelements wird auf den entsprechenden Namen gesetzt...
UnresolvedProxyMarkerManager_couldNotResolveProxy=Der Proxy ''{0}'' konnte nicht aufgel\u00f6st werden.
refreshLibraryFilesTask_name=Bibliotheksdateien im Arbeitsbereich werden aktualisiert.
versionMismatch_oldTool=Die ausgew\u00e4hlten Dateien werden nicht unterst\u00fctzt. F\u00fchren Sie einen Upgrade auf eine neuere Version von {0} durch. 
