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

# Import XML Wizard
importXMLWizard_title=XML importieren

# Select Import XML File Wizard Page
selectXMLFilePage_title=Importdatei angeben
selectXMLFilePage_desc=Geben Sie die XML-Datei an, die den zu importierenden Inhalt der Methodenbibliothek enth\u00e4lt, und w\u00e4hlen Sie die auszuf\u00fchrende Importoperation aus.
fileLabel_text=XML-Datei:
browseButton_text=Durchsuchen...
optionGroup_text=Optionen f\u00fcr Zusammenf\u00fchren
optionGroup1_text=Optionen f\u00fcr Basis-Plug-in-Pr\u00fcfung
overwriteRadioButton_text=Vorhandenen Inhalt der Methodenbibliothek durch den importierten Inhalt \u00fcberschreiben
mergeRadioButton_text=Importierten Inhalt in die vorhandene Methodenbibliothek einf\u00fcgen
mergeRadioButton2_text=Importierten Inhalt in die vorhandene Methodenbibliothek einf\u00fcgen (Zusammenf\u00fchren von Elementebenen)

# Progress Messages
importingXML_text=XML-Bibliotheksinhalt in die aktuelle Methodenbibliothek importieren...

# Import XML Error Dialog
review_log_files=Die Importoperation ist abgeschlossen. Suchen Sie in den Protokolldateien\nim Ordner ''{0}'' nach Fehlern.
importXMLError_msg=IUPM0000E: Die Importoperation kann nicht fortgesetzt werden.
importXMLError_reason=IUPM0009E: Die aktuelle Bibliothek ist schreibgesch\u00fctzt.\n\nStellen Sie sicher, dass der Schreibzugriff auf ''{0}'' m\u00f6glich ist, oder erstellen Sie eine neue Methodenbibliothek, und wiederholen Sie den Vorgang.

# Error Messages
invalidXMLFile_error=Die angegebene XML-Datei ist nicht g\u00fcltig.
versionMismatch_oldData=IUPM0010E: Die angegebene XML-Datei wurde mit einer fr\u00fcheren Version ({0}) von {1} exportiert. Die Dateien m\u00fcssen mit der aktuellen Version von {1} exportiert werden.
versionMismatch_oldData_unknown=IUPM0011E: Die angegebene XML-Datei wurde mit einer fr\u00fcheren Version von {0} exportiert. Die Dateien m\u00fcssen mit der aktuellen Version von {0} exportiert werden.
versionMismatch_oldTool=IUPM0012E: Die angegebene XML-Datei wurde mit einer neueren Version ({0}) von {1} exportiert. Sie m\u00fcssen einen Upgrade von {1} durchf\u00fchren, um die Datei importieren zu k\u00f6nnen. 
versionMismatch_oldTool_unknown=IUPM0013E: Die ausgew\u00e4hlte XML-Datei kann nicht ge\u00f6ffnet werden. Sie m\u00fcssen einen Upgrade von {0} durchf\u00fchren, um die Datei importieren zu k\u00f6nnen. 

importXMLService_element_not_handled=Nicht bearbeitetes Element: {0}
importXMLService_element_without_id=Element ohne ID: {0}
importXMLService_import_failed=Import fehlgeschlagen: {0}
importXMLService_missing_plugin=Das erforderliche Plug-in {0} fehlt.
importXMLService_error_missing_plugins=Es fehlen erforderliche Plug-ins. Suchen Sie in den Protokolldateien nach Einzelheiten.

library_error_no_eclass=Fehler beim Erstellen der Inhaltskategorie: Die EClass f\u00fcr {0} kann nicht abgerufen werden.
library_no_package=Das Paket f\u00fcr das Objekt {0} wurde nicht gefunden.
library_error_create_element=Fehler beim Erstellen des Elements: {0}
library_object_string=Objekt {0}, Feature {1}
library_error_set_attribute_2=Fehler beim Setzen des Attributs: Der Featurewert {0} ist ung\u00fcltig.
library_error_set_attribute=Fehler beim Setzen des Attributs f\u00fcr Objekt {0}, Feature {1} und Wert {2}
library_error_set_attribute_3=Es kann nicht bestimmt werden, wie das Attribut f\u00fcr Objekt {0}, Feature {1} und Wert {2} gesetzt werden kann.
library_error_set_reference=Fehler beim Definieren der Referenz f\u00fcr Feature {0}: Es ist kein Element mit der ID {1} vorhanden.
library_error_set_reference_2=Fehler beim Definieren der Referenz f\u00fcr Objekt {0}, Feature {1} und Wert {2}

