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

# Import Library Configuration Wizard
importConfigWizard_title=Bibliothekskonfiguration importieren
selectConfigDirWizardPage_title=Importverzeichnis angeben
selectConfigDirWizardPage_text=Geben Sie das Verzeichnis mit der zu importierenden Bibliothekskonfiguration an.
reviewChangesWizardPage_title=An der Bibliothek vorgenommene \u00c4nderungen pr\u00fcfen
reviewChangesWizardPage_text=Pr\u00fcfen Sie die \u00c4nderungen, die an der aktuellen Methodenbibliothek vorgenommen werden.
selectConfigSpecsWizardPage_title=Konfigurationsspezifikationen ausw\u00e4hlen
selectConfigSpecsWizardPage_text=W\u00e4hlen Sie mindestens eine zu importierende Konfigurationsspezifikation aus.

# Import Method Plug-ins Wizard
importPluginsWizard_title=Methoden-Plug-ins importieren
selectPluginsDirWizardPage_title=Importverzeichnis angeben
selectPluginsDirWizardPage_text=Geben Sie das Verzeichnis mit den zu importierenden Methoden-Plug-ins an.
selectPluginsWizardPage_title=Methoden-Plug-ins ausw\u00e4hlen
selectPluginsWizardPage_text=W\u00e4hlen Sie mindestens ein zu importierendes Methoden-Plug-in aus. Wenn ein ausgew\u00e4hltes Plug-in bereits in der aktuellen Methodenbibliothek vorhanden ist, \u00fcberpr\u00fcfen Sie die Versionsdifferenzen.
importPluginsWizard_ERR_Import_plugin=Import des Plug-ins fehlgeschlagen

ConfigurationImportService_MSG0=Ausgew\u00e4hlte Bibliothekskonfiguration wird validiert...
ConfigurationImportService_MSG1=Das angegebene Verzeichnis enth\u00e4lt keine g\u00fcltige Konfiguration.
ConfigurationImportService_MSG3=Methodenkonfiguration wird importiert...
ConfigurationImportService_MSG2=Die derzeit ge\u00f6ffnete Bibliothek kann nicht in sich selbst importiert werden.
ImportConfigurationWizard_MSG1=Methodenkonfiguration wird importiert...
ImportConfigurationWizard_ERR_Import_configuration=Import der Konfiguration fehlgeschlagen

FileModifyChecker_Checkout_failed_title=Auschecken fehlgeschlagen
FileModifyChecker_Checkout_failed_msg=Einige Dateien wurden nicht ausgecheckt. M\u00f6chten Sie den Vorgang wiederholen?

ImportConfigReportPage_title=Konfigurationsbericht importieren
ImportPluginWizard_readonly=IUPE0201E: Die Bibliothek ist schreibgesch\u00fctzt.
ImportPluginWizard_MSG1=Methoden-Plug-in wird importiert...
ImportPluginWizard_error=Fehler
ImportPluginWizard_warn_existing_plugins=IUPE0200E: Die folgenden ausgew\u00e4hlten Plug-ins sind bereits vorhanden. Wenn Sie diese Plug-ins erneut importieren, werden die vorhandenen \u00fcberschrieben:\n\n {0} \n\nM\u00f6chten Sie den Vorgang fortsetzen?
ImportPluginWizard_confirm_continue=\n\nM\u00f6chten Sie den Vorgang wirklich fortsetzen?
ImportPluginWizard_warn_circular_plugins=Zirkul\u00e4re Referenzen in den folgenden Plug-ins gefunden

SelectConfigsToImport_label1=Die folgenden Elemente werden importiert:
ImportConfigurationWizard_error=Fehler
SelectImportConfigurationSource_MSG1=Analyse l\u00e4uft
SelectConfigSpecsToImportPage_title2=Zu importierende Konfigurationsspezifikationen ausw\u00e4hlen
SelectImportPluginSource_not_used=not_used
SelectImportPluginSource_no_path=Das angegebene Verzeichnis ist nicht vorhanden.
SelectImportPluginSource_no_dir=Es wurde kein Verzeichnis angegeben.
SelectPluginsToImport_label_plugins=Verf\u00fcgbare Plug-ins im Importverzeichnis:
SelectPluginsToImport_label_author=Autor:
SelectPluginsToImport_label_version=Version:
SelectPluginsToImport_label_desc=Kurzbeschreibung:
ImportConfigurationWizard_readonly=IUPE0201E: Die Bibliothek ist schreibgesch\u00fctzt.
PluginImportingService_MSG0=Ausgew\u00e4hlte Plug-ins werden validiert...
PluginImportingService_MSG1=Der angegebene Pfad enth\u00e4lt kein g\u00fcltiges Methoden-Plug-in.
PluginImportingService_MSG3=Methoden-Plug-in wird importiert...
PluginImportingService_MSG5=Das ausgew\u00e4hlte Methoden-Plug-in kann nicht importiert werden. Das zugeh\u00f6rige abh\u00e4ngige Plug-in ''{0}'' wurde nicht in der aktuellen Methodenbibliothek gefunden.
PluginImportingService_MSG6=Das ausgew\u00e4hlte Methoden-Plug-in kann nicht importiert werden. Ein zugeh\u00f6riges abh\u00e4ngiges Plug-in wurde nicht in der aktuellen Methodenbibliothek gefunden.
DiffReportViewer_content=Inhalt
DiffReportViewer_in_import=Im Import
SelectPluginsToImport_MSG1=Dateien werden analysiert...
DiffReportLabelProvider_yes=Ja
SelectPluginsToImport_error=Fehler
DiffReportViewer_in_lib=In der Bibliothek
DiffReportViewer_status=Status
SelectPluginsToImport_libraryPluginExists=Ausgew\u00e4hltes Plug-in wurde in aktueller Bibliothek gefunden
SelectPluginsToImport_libraryPluginNotExists=Ausgew\u00e4hltes Plug-in wurde nicht in aktueller Bibliothek gefunden
SelectConfigSpecsToImportPage_libraryConfigSpecExists=Konfiguration wurde in der aktuellen Bibliothek gefunden
SelectConfigSpecsToImportPage_configSpecNoSelection=Es wurde keine Konfigurationsspezifikation ausgew\u00e4hlt.
SelectConfigSpecsToImportPage_configSpecDataLabel=Ausgew\u00e4hlte Konfiguration im Importverzeichnis
SelectConfigSpecsToImportPage_label_configs=Verf\u00fcgbare Konfigurationsspezifikationen im Importverzeichnis:
SelectImportConfigurationSource_not_used=not_used
SelectConfigSpecsToImportPage_label_desc=Kurzbeschreibung:
SelectImportConfigurationSource_no_path=Der angegebene Pfad ist nicht vorhanden.
SelectPluginsToImport_pluginNoSelection=Es wurde kein Plug-in ausgew\u00e4hlt.
SelectImportConfigurationSource_no_dir=Es wurde kein Verzeichnis angegeben.
SelectImportConfigurationSource_plugin_readonly=Das Plug-in {0} ist schreibgesch\u00fctzt.\n
SelectImportConfigurationSource_plugin_locked=IUPE0203E: Das Plug-in {0} ist gesperrt.\n
SelectImportConfigurationSource_error_not_updatable=Einige der Plug-ins in der Bibliothek ist gesperrt oder schreibgesch\u00fctzt.\nGeben Sie die Plug-ins frei und stellen Sie sicher, dass die Dateien aktualisiert werden k\u00f6nnen.
SelectPluginsToImport_pluginDataLabel=Ausgew\u00e4hltes Plug-in im Importverzeichnis
DiffReportViewer_type=Inhaltstyp
SelectConfigSpecsToImportPage_libraryConfigSpecNotExists=Die ausgew\u00e4hlte Konfiguration wurde nicht in der aktuellen Bibliothek gefunden.
versionMismatch_oldData=IUPE0204E: Die angegebenen Dateien wurden mit einer fr\u00fcheren Version ({0}) von {1} exportiert. Die Dateien m\u00fcssen mit der aktuellen Version von {1} exportiert werden.
versionMismatch_oldData_unknown=IUPE0205E: Die angegebenen Dateien wurden mit einer fr\u00fcheren Version von {0} exportiert. Die Dateien m\u00fcssen mit der aktuellen Version von {0} exportiert werden.
versionMismatch_oldTool=IUPE0206E: Die angegebenen Dateien wurden mit einer neueren Version ({0}) von {1} exportiert. Sie m\u00fcssen einen Upgrade von {1} durchf\u00fchren, um die Dateien importieren zu k\u00f6nnen. 
versionMismatch_oldTool_unknown=IUPE0207E: Die angegebenen Dateien k\u00f6nnen nicht ge\u00f6ffnet werden. Sie m\u00fcssen einen Upgrade von {0} durchf\u00fchren, um die Dateien importieren zu k\u00f6nnen.
ConfigurationImportService_handleToolVersion_error=IUPE0208E: Upgrade der Plug-ins konnte nicht durchgef\u00fchrt werden.
optionGroup_text=Importoption
checkBaseRadioButton_text=Basis-Plug-ins pr\u00fcfen
ignoreRemoveRadioButton_text=Nicht aufgel\u00f6ste Referenzen ignorieren und entfernen
