# 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=XML exportieren

# Select Export Type Wizard Page
selectExportTypePage_desc=W\u00e4hlen Sie den Typ des zu exportierenden Methodenbibliotheksinhalts aus.
exportLibraryRadioButton_text=Gesamte Methodenbibliothek exportieren
exportPluginsRadioButton_text=Methoden-Plug-ins exportieren
exportConfigsRadioButton_text=Methodenkonfiguration exportieren

# Select Destination XML File Wizard Page
selectXMLFilePage_title=Exportdatei angeben
selectXMLFilePage_desc=Geben Sie eine XML-Zieldatei an, in der der exportierte Methodenbibliotheksinhalt gespeichert werden soll.
fileLabel_text=XML-Datei:
browseButton_text=Durchsuchen...

# Overwrite Confirmation Dialog
overwriteText_msg=''{0}'' ist bereits vorhanden.\nM\u00f6chten Sie diese Datei \u00fcberschreiben?
overwriteText_msg1=''{0}'' ist bereits vorhanden.\nM\u00f6chten Sie die Datei und den Ordner ''{1}'', in dem sie sich befindet, \u00fcberschreiben?

# Progress Messages
exportingXML_text=Inhalt einer Methodenbibliothek in eine XML-Datei exportieren...

# Error Messages
invalidXMLFile_error=Die angegebene XML-Datei ist nicht g\u00fcltig.
exportXMLWizard_error=IUPM0000E: Export fehlgeschlagen: {0}
exportXMLWizard_reviewLog=Der Export ist abgeschlossen. Sehen Sie sich die Protokolldateien im Exportverzeichnis an.
exportXMLService_error=Fehler beim Exportieren der Bibliothek: {0}
exportXMLService_feature_error=Fehler beim Setzen des Featurewerts:: Element={0}, Feature={1}
xmlLibrary_error_load_xml=Die XML-Quelle ''{0}'' kann nicht geladen werden.
xmlLibrary_no_plugin=Es ist kein Methoden-Plug-in f\u00fcr ID {0} vorhanden.
xmlLibrary_no_feature=Das XML-Feature f\u00fcr {0}_{1} kann nicht abgerufen werden.
xmlLibrary_no_class=Die EClass f\u00fcr {0} kann nicht abgerufen werden.
xmlLibrary_error_create_element=Fehler beim Erstellen des Elements. Es kann nicht bestimmt werden, wie der Wert f\u00fcr das Feature {0} gesetzt wird.
xmlLibrary_error_set_value=Fehler beim Erstellen des Elements. Der Wert {0} kann nicht auf den Container {1} gesetzt werden.
xmlLibrary_invalid_feature_value=Ung\u00fcltiger Attributfeaturewert f\u00fcr Feature {0} mit dem Wert {1}
xmlLibrary_error_set_value_2=Fehler beim Setzen des Attributs. Der Wert f\u00fcr Feature {0}, Objekt {1}, Wert {2} kann nicht gesetzt werden.
xmlLibrary_error_set_value_3=Es kann nicht bestimmt werden, wie der Wert f\u00fcr Feature {0}, Objekt {1}, Wert {2} gesetzt wird.
xmlLibrary_error_set_reference=Fehler beim Definieren der Referenz. Der Wert f\u00fcr Feature {0}, Objekt {1}, Wert {2} kann nicht gesetzt werden.
xmlLibrary_error_process_wrong_container=Der Prozess ''{0}'' hat keinen g\u00fcltigen Container. Der Container hat den Typ ''{1}'' und ist damit kein Prozesspaket.
xmlLibrary_new_id=Dem Element {0} wurde die neue ID {1} zugeordnet, weil es keine g\u00fcltige ID hatte.
xmlLibrary_id_not_unique=Die Element-ID ''{0}'' wird von mehreren Elementen verwendet.

export_config_to_temp_location=Konfiguration in tempor\u00e4res Verzeichnis exportieren
open_lib_from_temp_exported_location=Bibliothek von tempor\u00e4rem Exportverzeichnis aus \u00f6ffnen


